:root{--bg:#f6f3ec;--panel:#ffffff;--ink:#1c1a17;--ink-2:#6b665e;--line:#ddd8ce;--amber:#c98a12;--amber-ink:#1c1a17;--ok:#2f7d4f;--warn:#b3362a;--tap:48px;color-scheme:light dark}@media (prefers-color-scheme:dark){:root{--bg:#171512;--panel:#221f1a;--ink:#f2ede3;--ink-2:#a39c8f;--line:#3a352c;--amber:#e8a323;--amber-ink:#1c1a17;--ok:#6fc28d;--warn:#ef7a6c}}*{box-sizing:border-box}body,html{margin:0;padding:0}body{background:var(--bg);color:var(--ink);font:17px/1.45 -apple-system,SF Pro Text,Segoe UI,Roboto,Helvetica Neue,sans-serif;-webkit-font-smoothing:antialiased}a{color:inherit}h1,h2,h3{margin:0;font-weight:600;letter-spacing:-.01em}h1{font-size:1.5rem}h2{font-size:1.15rem}p{margin:0}.shell{max-width:520px;margin:0 auto;padding:16px 16px calc(84px + env(safe-area-inset-bottom))}.auth-shell{max-width:420px;margin:0 auto;padding:48px 20px 40px;display:grid;grid-gap:24px;gap:24px}.topbar{display:flex;align-items:baseline;justify-content:space-between;padding:8px 0 20px}.topbar .who{color:var(--ink-2);font-size:.95rem}.brand{font-weight:700;letter-spacing:-.02em}.stack{display:grid;grid-gap:16px;gap:16px}.panel{background:var(--panel);border:1px solid var(--line);border-radius:14px;padding:18px}.muted{color:var(--ink-2)}.small{font-size:.9rem}.turn{border-radius:18px;padding:22px 20px;background:var(--amber);color:var(--amber-ink);display:grid;grid-template-columns:auto 1fr;grid-gap:18px;gap:18px;align-items:center}.turn .letter{font-size:5.5rem;line-height:.85;font-weight:800;letter-spacing:-.05em}.turn .caption{font-size:.95rem;opacity:.8}.turn .name{font-size:1.35rem;font-weight:700;line-height:1.15}.window{display:flex;align-items:center;gap:10px;padding:12px 14px;border-radius:12px;border:1px solid var(--line);background:var(--panel)}.window .dot{width:10px;height:10px;border-radius:50%;background:var(--ink-2);flex:none}.window.on .dot{background:var(--ok);box-shadow:0 0 0 4px color-mix(in srgb,var(--ok) 25%,transparent)}.actions{display:grid;grid-gap:10px;gap:10px}.btn{display:flex;align-items:center;justify-content:center;min-height:var(--tap);padding:0 18px;border-radius:12px;border:1px solid var(--line);background:var(--panel);color:var(--ink);font:inherit;font-weight:600;text-decoration:none;cursor:pointer}.btn.primary{background:var(--ink);color:var(--bg);border-color:var(--ink)}.btn.primary:disabled,.btn:disabled{opacity:.45;cursor:not-allowed}.btn.big{min-height:64px;font-size:1.1rem}.btn.link{border:none;background:none;min-height:40px;color:var(--ink-2);text-decoration:underline;font-weight:500}.btn:focus-visible{outline:3px solid var(--amber);outline-offset:2px}form.stack label{display:grid;grid-gap:6px;gap:6px;font-weight:500}input,select{font:inherit;min-height:var(--tap);padding:0 12px;border-radius:10px;border:1px solid var(--line);background:var(--bg);color:var(--ink);width:100%}input:focus-visible,select:focus-visible{outline:3px solid var(--amber);outline-offset:1px}.hint{color:var(--ink-2);font-size:.9rem;font-weight:400}.msg{padding:12px 14px;border-radius:10px;font-size:.95rem}.msg.error{background:color-mix(in srgb,var(--warn) 14%,transparent);color:var(--warn)}.msg.ok{background:color-mix(in srgb,var(--ok) 14%,transparent);color:var(--ok)}.msg code{word-break:break-all;font-size:.85rem}.rule{border:0;border-top:1px solid var(--line);margin:4px 0}.list{grid-gap:0;gap:0}.list,.row{display:grid}.row{grid-template-columns:1fr auto;grid-gap:12px;gap:12px;align-items:center;padding:12px 0;border-top:1px solid var(--line)}.row:first-child{border-top:0}.row .sub{font-size:.9rem}.row .sub,.tag{color:var(--ink-2)}.tag{display:inline-block;padding:2px 8px;border-radius:999px;border:1px solid var(--line);font-size:.8rem}.bottom-nav{position:fixed;left:0;right:0;bottom:0;display:grid;grid-template-columns:repeat(4,1fr);background:var(--panel);border-top:1px solid var(--line);padding-bottom:env(safe-area-inset-bottom)}.bottom-nav a{display:grid;justify-items:center;grid-gap:2px;gap:2px;padding:10px 4px 8px;min-height:56px;color:var(--ink-2);text-decoration:none;font-size:.75rem;font-weight:500}.bottom-nav a.active{color:var(--ink)}.bottom-nav a.active svg{stroke:var(--amber)}.bottom-nav svg{width:24px;height:24px;stroke:currentColor;fill:none;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.empty{padding:40px 0;text-align:center;color:var(--ink-2)}@media (prefers-reduced-motion:no-preference){.turn{animation:settle .32s ease-out}@keyframes settle{0%{transform:translateY(6px);opacity:0}to{transform:none;opacity:1}}}