:root{--ink:#111;--bg:#fff;--muted:#6b7280;--accent:#0ea5e9;--line:#e7eaee;--radius:18px;--gap:16px;--shadow:0 6px 24px rgba(0,0,0,.08);--font:ui-sans-serif,system-ui,-apple-system, Segoe UI, Roboto, Arial;}
*{box-sizing:border-box}
html,body{margin:0;background:var(--bg);color:var(--ink);font:16px/1.5 var(--font)}
.wrap{max-width:1100px;margin:auto;padding:0 var(--gap)}
h1{font-size:clamp(1.5rem,3vw,2.4rem);margin:24px 0}
.nav{display:flex;gap:12px;margin-bottom:12px}
.nav a{padding:8px 12px;border-radius:10px;border:1px solid var(--line);text-decoration:none;color:inherit}
.nav a[aria-current="page"]{background:#f7fafc}
.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:24px;margin:24px 0}
.card{border:1px solid var(--line);border-radius:var(--radius);padding:24px;background:#fff;box-shadow:var(--shadow)}
.btn{display:inline-block;border:0;border-radius:999px;padding:12px 18px;background:var(--accent);color:#fff;font-weight:700;cursor:pointer}
.btn.ghost{background:#e7eaee;color:#111}
.toggle{display:flex;align-items:center;gap:12px;margin:8px 0 16px}
.switch{position:relative;display:inline-block;width:54px;height:28px}
.switch.small{width:44px;height:24px}
.switch input{opacity:0;width:0;height:0}
.slider{position:absolute;cursor:pointer;top:0;left:0;right:0;bottom:0;background:#ddd;border-radius:999px;transition:.2s}
.slider:before{position:absolute;content:"";height:22px;width:22px;left:3px;top:3px;background:#fff;border-radius:50%;transition:.2s;box-shadow:0 1px 3px rgba(0,0,0,.2)}
input:checked + .slider{background:var(--accent)} input:checked + .slider:before{transform:translateX(26px)}
.table{width:100%;border-collapse:collapse}
.table th,.table td{border-bottom:1px solid var(--line);padding:10px;text-align:left}
.badge{display:inline-block;border-radius:999px;padding:2px 10px;font-size:.85rem}
.badge.ok{background:#e6fbe6;color:#155b17}.badge.warn{background:#fff5e6;color:#7a4300}.badge.muted{background:#eef2f7;color:#374151}
.row{display:flex;flex-direction:column;gap:6px;margin:10px 0}
.flex-between{display:flex;justify-content:space-between;align-items:center;gap:12px}
.price{font-size:2rem;font-weight:800;margin:.25rem 0 1rem}
.features{margin:0 0 1rem 1rem}

/* Dialog / modal */
dialog::backdrop { background: rgba(0,0,0,.35); }
dialog{border:0;border-radius:16px;padding:0;max-width:520px;width:96%}
dialog form.card{margin:0}
.modal-close{
  position:absolute; right:12px; top:10px;
  width:32px; height:32px; line-height:28px; text-align:center;
  border-radius:50%; border:1px solid var(--line); background:#fff; cursor:pointer;
  font-size:20px; font-weight:700; color:#333;
}
#result.ok{ color:#165b19; }
#result.err{ color:#7a1e00; }
