:root{--bg:#f5f7f8;--surface:#fff;--text:#1d2430;--muted:#5b6575;--border:#d8dee5;--accent:#1f6f8b;--accent-text:#fff;--header-bg:#fff;--header-text:#1d2430;--danger:#b00020;--ok:#1b7a3d;--warn-bg:#fff4e5;--info-bg:#eaf3f6;color:var(--text);background:var(--bg);font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif}:root[data-app=admin]{--bg:#f4f2f7;--accent:#5b2a86;--header-bg:#2a1740;--header-text:#fff;--info-bg:#efe9f5}*{box-sizing:border-box}body{-webkit-text-size-adjust:100%;margin:0;font-size:16px;line-height:1.5}h1,h2,h3{line-height:1.25}h1{margin:0 0 1rem;font-size:1.6rem}h2{margin:1.5rem 0 .75rem;font-size:1.25rem}h3{margin:1rem 0 .5rem;font-size:1.05rem}a{color:var(--accent)}.app-header{background:var(--header-bg);color:var(--header-text);border-bottom:1px solid var(--border)}.app-header .inner{flex-wrap:wrap;align-items:center;gap:.5rem 1rem;max-width:1040px;margin:0 auto;padding:.6rem 1rem;display:flex}.brand{margin-right:auto;font-size:1.1rem;font-weight:700}.brand .tag{letter-spacing:.06em;background:var(--accent);color:var(--accent-text);vertical-align:middle;border-radius:4px;margin-left:.5rem;padding:.15rem .45rem;font-size:.75rem;font-weight:700}:root[data-app=admin] .brand .tag{color:#2a1740;background:#f2c94c}.nav{flex-wrap:wrap;gap:.25rem;display:flex}.nav a,.nav button{min-height:44px;color:inherit;font:inherit;cursor:pointer;background:0 0;border:0;border-radius:8px;align-items:center;padding:0 .9rem;text-decoration:none;display:inline-flex}.nav a[aria-current=page],.nav button[aria-current=page]{background:var(--accent);color:var(--accent-text)}:root[data-app=admin] .nav a[aria-current=page],:root[data-app=admin] .nav button[aria-current=page]{color:#2a1740;background:#fff}main.content{max-width:1040px;margin:0 auto;padding:1.25rem 1rem 3rem}main.narrow{max-width:460px}button,.button{border:1px solid var(--border);background:var(--surface);min-height:44px;color:var(--text);font:inherit;cursor:pointer;border-radius:8px;justify-content:center;align-items:center;padding:0 1rem;text-decoration:none;display:inline-flex}button.primary,.button.primary{background:var(--accent);color:var(--accent-text);border-color:var(--accent)}button.danger{color:var(--danger);border-color:currentColor}button.link{color:var(--accent);background:0 0;border:0;min-height:0;padding:0;text-decoration:underline}button:disabled{opacity:.5;cursor:default}.actions{flex-wrap:wrap;align-items:center;gap:.5rem;margin:.75rem 0;display:flex}input,select,textarea{font:inherit;border:1px solid var(--border);background:var(--surface);width:100%;min-height:44px;color:var(--text);border-radius:8px;padding:.4rem .75rem;font-size:16px}input[type=checkbox],input[type=radio]{vertical-align:middle;width:1.25rem;height:1.25rem;min-height:1.25rem;margin:0 .5rem 0 0;padding:0}.field{margin:0 0 .9rem;display:block}.field>span{margin-bottom:.25rem;font-weight:600;display:block}.check{align-items:center;min-height:44px;display:flex}.card{background:var(--surface);border:1px solid var(--border);border-radius:12px;margin:0 0 1rem;padding:1rem 1.25rem}.grid{grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:1rem;display:grid}.grid .card{flex-direction:column;gap:.25rem;margin:0;display:flex}.muted{color:var(--muted)}.small{font-size:.875rem}.notice{background:var(--info-bg);border-radius:8px;margin:0 0 1rem;padding:.65rem .9rem}.notice.error{color:var(--danger);background:#fdecee}.notice.ok{color:var(--ok);background:#e8f5ec}.notice.warn{background:var(--warn-bg)}.badge{border:1px solid var(--border);background:var(--bg);white-space:nowrap;border-radius:999px;padding:.1rem .5rem;font-size:.8rem;display:inline-block}.badge.ok{border-color:var(--ok);color:var(--ok)}.badge.off{color:var(--muted)}.badge.danger{border-color:var(--danger);color:var(--danger)}table{border-collapse:collapse;width:100%}th,td{text-align:left;border-bottom:1px solid var(--border);vertical-align:top;padding:.5rem}.table-wrap{overflow-x:auto}tr.selected td{background:var(--info-bg)}details.diagnose{color:var(--muted);margin-top:2rem;font-size:.875rem}details.diagnose summary{cursor:pointer;align-items:center;min-height:44px;display:flex}details.diagnose ul{margin:.25rem 0;padding-left:1.25rem}
