:root{--bg:#f6f7f9;--surface:#fff;--ink:#111827;--ink-2:#4b5563;--ink-3:#6b7280;--line:#e5e7eb;--line-2:#d1d5db;--accent:#2563eb;--accent-ink:#fff;--accent-soft:#eff6ff;--good:#047857;--good-soft:#ecfdf5;--warn:#b45309;--warn-soft:#fffbeb;--bad:#b91c1c;--bad-soft:#fef2f2;--radius:14px;--shadow:0 1px 2px #1018280d, 0 1px 3px #10182814;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}*{box-sizing:border-box}html,body{margin:0}body{background:var(--bg);color:var(--ink);-webkit-font-smoothing:antialiased;font:15px/1.5 system-ui,-apple-system,Segoe UI,Roboto,Helvetica,Arial,sans-serif}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}h1,h2,h3{margin:0;line-height:1.2}h1{letter-spacing:-.01em;font-size:1.6rem}h2{font-size:1.1rem}h3{font-size:.95rem}code,.mono{font-family:ui-monospace,Cascadia Mono,Consolas,monospace;font-size:.9em}.topbar{background:var(--surface);border-bottom:1px solid var(--line);z-index:10;position:sticky;top:0}.topbar-inner{align-items:center;gap:1.25rem;max-width:1180px;margin:0 auto;padding:.7rem 1.25rem;display:flex}.logo{color:var(--ink);align-items:center;gap:.55rem;font-weight:700;display:flex}.logo:hover{text-decoration:none}.logo-mark{background:var(--ink);border-radius:7px;place-items:center;width:28px;height:28px;display:grid}.nav{flex:1;gap:.25rem;display:flex}.nav a{color:var(--ink-2);border-radius:8px;padding:.35rem .7rem;font-weight:500}.nav a:hover{background:var(--bg);text-decoration:none}.nav a.on{color:var(--ink);background:var(--bg)}.who{color:var(--ink-3);align-items:center;gap:.6rem;font-size:.85rem;display:flex}.who form{margin:0}.page{max-width:1180px;margin:0 auto;padding:1.75rem 1.25rem 4rem}.page-head{flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:1rem;margin-bottom:1.25rem;display:flex}.muted{color:var(--ink-3)}.small{font-size:.85rem}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:1.25rem}.card+.card,.stack>*+*{margin-top:1rem}.grid-2{grid-template-columns:minmax(0,1.25fr) minmax(0,1fr);align-items:start;gap:1.25rem;display:grid}.row{flex-wrap:wrap;align-items:center;gap:.75rem;display:flex}.spread{justify-content:space-between}@media (max-width:860px){.grid-2{grid-template-columns:1fr}.nav{display:none}}.field{flex-direction:column;gap:.35rem;display:flex}.field+.field{margin-top:1.1rem}label,.label{font-size:.9rem;font-weight:600}.hint{color:var(--ink-3);font-size:.82rem;font-weight:400}input,select,textarea{font:inherit;color:inherit;background:var(--surface);border:1px solid var(--line-2);border-radius:10px;width:100%;padding:.6rem .75rem;transition:border-color .15s,box-shadow .15s}input:focus,select:focus,textarea:focus{border-color:var(--accent);outline:none;box-shadow:0 0 0 3px #2563eb26}input[type=color]{width:3.5rem;height:2.6rem;padding:.2rem}input[type=checkbox]{width:auto}textarea{resize:vertical;min-height:5rem}.input-lg{padding:.8rem .9rem;font-size:1.05rem}.btn{font:inherit;cursor:pointer;border:1px solid var(--accent);background:var(--accent);color:var(--accent-ink);white-space:nowrap;border-radius:10px;justify-content:center;align-items:center;gap:.45rem;padding:.6rem 1rem;font-weight:600;display:inline-flex}.btn:hover{filter:brightness(1.06);text-decoration:none}.btn:disabled{opacity:.55;cursor:default}.btn-lg{padding:.8rem 1.3rem;font-size:1.02rem}.btn-ghost{background:var(--surface);color:var(--ink);border-color:var(--line-2)}.btn-ghost:hover{background:var(--bg);filter:none}.btn-danger{background:var(--surface);color:var(--bad);border-color:#fecaca}.btn-sm{padding:.35rem .65rem;font-size:.85rem}.tiles{grid-template-columns:repeat(auto-fill,minmax(118px,1fr));gap:.5rem;display:grid}.tile{border:1px solid var(--line-2);background:var(--surface);cursor:pointer;font:inherit;color:var(--ink-2);border-radius:12px;flex-direction:column;align-items:center;gap:.2rem;padding:.7rem .4rem;font-size:.85rem;display:flex}.tile .ico{font-size:1.35rem;line-height:1}.tile:hover{border-color:var(--accent)}.tile.on{border-color:var(--accent);background:var(--accent-soft);color:var(--ink);box-shadow:0 0 0 2px #2563eb40}.chips{flex-wrap:wrap;gap:.4rem;display:flex}.chip{border:1px solid var(--line-2);background:var(--surface);font:inherit;cursor:pointer;color:var(--ink-2);border-radius:999px;align-items:center;gap:.4rem;padding:.35rem .8rem;font-size:.88rem;display:inline-flex}.chip:hover{border-color:var(--ink-3);text-decoration:none}.chip.on{background:var(--ink);color:#fff;border-color:var(--ink)}.dot{background:var(--ink-3);border-radius:50%;width:9px;height:9px;display:inline-block}.preview{position:sticky;top:5rem}.qr-frame{border:1px solid var(--line);aspect-ratio:1;background:#fff;border-radius:12px;place-items:center;padding:1rem;display:grid}.qr-frame svg{width:100%;height:100%;display:block}.qr-empty{color:var(--ink-3);text-align:center;font-size:.9rem}.url-box{background:var(--bg);border:1px solid var(--line);word-break:break-all;color:var(--ink-2);border-radius:10px;padding:.6rem .75rem;font-size:.8rem}.url-box b{color:var(--ink);font-weight:600}.note{border-radius:10px;padding:.6rem .8rem;font-size:.88rem}.note.warn{background:var(--warn-soft);color:var(--warn);border:1px solid #fde68a}.note.bad{background:var(--bad-soft);color:var(--bad);border:1px solid #fecaca}.note.good{background:var(--good-soft);color:var(--good);border:1px solid #a7f3d0}.note.info{background:var(--accent-soft);color:#1e40af;border:1px solid #bfdbfe}.toolbar{flex-wrap:wrap;align-items:center;gap:.75rem;margin-bottom:1rem;display:flex}.toolbar input[type=search]{max-width:320px}.code-grid{grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:.9rem;display:grid}.code-card{color:inherit;gap:.85rem;padding:.9rem;display:flex}.code-card:hover{border-color:var(--line-2);text-decoration:none;box-shadow:0 4px 12px #10182814}.code-card .thumb{flex:none;width:64px;height:64px}.code-card .thumb svg{width:100%;height:100%}.code-card .meta{flex:1;min-width:0}.code-card .title{white-space:nowrap;text-overflow:ellipsis;font-weight:600;overflow:hidden}.code-card .dest{color:var(--ink-3);white-space:nowrap;text-overflow:ellipsis;font-size:.8rem;overflow:hidden}.pill{background:var(--bg);color:var(--ink-2);border:1px solid var(--line);border-radius:999px;padding:.1rem .5rem;font-size:.72rem;font-weight:600;display:inline-block}.pill.active{background:var(--good-soft);color:var(--good);border-color:#a7f3d0}.pill.paused{background:var(--warn-soft);color:var(--warn);border-color:#fde68a}.pill.archived{background:var(--bg);color:var(--ink-3)}.brand-group+.brand-group{margin-top:2rem}.brand-group>h2{align-items:center;gap:.5rem;margin-bottom:.75rem;display:flex}.empty{text-align:center;color:var(--ink-3);padding:3rem 1rem}.kpis{grid-template-columns:repeat(4,1fr);gap:.75rem;display:grid}.kpi{background:var(--bg);border-radius:10px;padding:.7rem .8rem}.kpi .n{font-size:1.45rem;font-weight:700}.kpi .l{color:var(--ink-3);font-size:.78rem}@media (max-width:600px){.kpis{grid-template-columns:repeat(2,1fr)}}.bars{align-items:flex-end;gap:3px;height:110px;margin-top:1rem;display:flex}.bars .b{background:var(--accent);opacity:.85;border-radius:3px 3px 0 0;flex:1;min-height:2px}.bars .b.zero{background:var(--line)}.tops{grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:1rem;margin-top:1rem;display:grid}.top-list{margin:.4rem 0 0;padding:0;font-size:.86rem;list-style:none}.top-list li{border-bottom:1px dashed var(--line);justify-content:space-between;padding:.2rem 0;display:flex}table{border-collapse:collapse;width:100%;font-size:.88rem}th,td{text-align:left;border-bottom:1px solid var(--line);vertical-align:top;padding:.5rem .4rem}th{color:var(--ink-3);text-transform:uppercase;letter-spacing:.03em;font-size:.78rem;font-weight:600}.signin{max-width:400px;margin:12vh auto 0;padding:0 1.25rem}.signin h1{margin-bottom:.4rem}.signin .card{margin-top:1.25rem}.signin .btn{width:100%;margin-top:1rem}.code-input{letter-spacing:.5rem;text-align:center;font-family:ui-monospace,Consolas,monospace;font-size:1.6rem}details>summary{cursor:pointer;color:var(--ink-2);font-weight:600}details[open]>summary{margin-bottom:.75rem}hr{border:0;border-top:1px solid var(--line);margin:1.25rem 0}
