:root{--paper: #f4efe4;--paper-2: #ece5d5;--ink: #1a1713;--ink-soft: #3a342c;--rule: #2b241d;--muted: #756c5f;--stamp-red: oklch(.55 .16 28);--paua: oklch(.52 .09 200);--paua-deep: oklch(.38 .08 220);--ticket: oklch(.72 .13 55);--ticket-bg: oklch(.94 .04 80);--green-stamp: oklch(.48 .08 145);--card: #fbf7ec;--shadow: 0 1px 0 rgba(0,0,0,.05), 0 8px 30px rgba(40,30,20,.08)}*{box-sizing:border-box}html,body{margin:0;padding:0;background:var(--paper);color:var(--ink)}body{font-family:Inter,system-ui,sans-serif;font-size:15px;line-height:1.5;min-height:100vh;background-image:radial-gradient(circle at 20% 10%,rgba(120,90,50,.04) 0,transparent 60%),radial-gradient(circle at 80% 90%,rgba(30,60,90,.04) 0,transparent 60%),url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='160' height='160'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2' stitchTiles='stitch'/><feColorMatrix values='0 0 0 0 0.15  0 0 0 0 0.12  0 0 0 0 0.08  0 0 0 0.06 0'/></filter><rect width='100%25' height='100%25' filter='url(%23n)'/></svg>");background-attachment:fixed}body.no-grain{background-image:none}.serif{font-family:Newsreader,Georgia,serif;font-optical-sizing:auto}.mono{font-family:JetBrains Mono,ui-monospace,monospace}a{color:inherit}button{font:inherit;cursor:pointer}.rail{position:sticky;top:0;z-index:20;background:var(--ink);color:var(--paper);border-bottom:3px double var(--paper)}.rail-inner{max-width:1280px;margin:0 auto;padding:10px 24px;display:flex;align-items:center;gap:24px}.brand{display:flex;align-items:baseline;gap:14px}.brand-mark{display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;border:2px solid var(--paper);font-family:Newsreader,serif;font-weight:700;font-size:18px;letter-spacing:-.02em;transform:translateY(2px)}.brand-text{font-family:Newsreader,serif;font-size:20px;font-weight:600;letter-spacing:.02em}.brand-sub{font-size:11px;color:#f4efe4a6;letter-spacing:.14em;text-transform:uppercase}.tabs{display:flex;gap:2px;margin-left:auto;background:#ffffff0a;padding:3px;border-radius:2px}.tabs button{background:transparent;border:0;color:#f4efe4b3;padding:7px 14px;font-size:13px;letter-spacing:.04em;text-transform:uppercase;border-radius:2px}.tabs button:hover{color:var(--paper)}.tabs button.active{background:var(--paper);color:var(--ink);font-weight:600}.clocks{display:flex;gap:18px;color:var(--paper);font-family:JetBrains Mono,monospace;font-size:12px}.clock-label{color:#f4efe48c;letter-spacing:.08em;font-size:10px;text-transform:uppercase}.page{max-width:1280px;margin:0 auto;padding:32px 24px 80px}.eyebrow{font-family:JetBrains Mono,monospace;font-size:11px;letter-spacing:.2em;text-transform:uppercase;color:var(--muted)}h1.display{font-family:Newsreader,serif;font-weight:500;font-size:clamp(38px,6vw,64px);line-height:1.02;letter-spacing:-.02em;margin:8px 0 6px}h2.section{font-family:Newsreader,serif;font-weight:600;font-size:28px;letter-spacing:-.01em;margin:0 0 12px}.lead{color:var(--ink-soft);max-width:64ch}.hero{display:grid;grid-template-columns:1.3fr 1fr;gap:32px;padding:24px 0 28px;border-bottom:1px solid var(--rule);margin-bottom:28px}@media (max-width: 900px){.hero{grid-template-columns:1fr}}.hero-stat-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:10px;margin-top:20px}.stat{border:1px solid var(--rule);padding:12px 14px;background:var(--card)}.stat-num{font-family:Newsreader,serif;font-size:28px;line-height:1;margin:4px 0}.stat-lbl{font-size:11px;color:var(--muted);letter-spacing:.12em;text-transform:uppercase}.stoprail{display:flex;overflow-x:auto;border:1px solid var(--rule);background:var(--card);margin-bottom:28px}.stoprail::-webkit-scrollbar{height:6px}.stoprail::-webkit-scrollbar-thumb{background:var(--ink-soft)}.stopcell{min-width:150px;flex:0 0 auto;padding:14px 16px;border-right:1px dashed rgba(0,0,0,.2);background:transparent;text-align:left;position:relative;cursor:pointer;transition:background .15s}.stopcell:hover{background:var(--paper-2)}.stopcell.active{background:var(--ink);color:var(--paper)}.stopcell.active .stopcell-meta{color:#f4efe4b3}.stopcell.past{opacity:.5}.stopcell-cc{font-family:JetBrains Mono,monospace;font-size:10px;letter-spacing:.16em;color:var(--muted)}.stopcell.active .stopcell-cc{color:#f4efe4b3}.stopcell-city{font-family:Newsreader,serif;font-size:18px;margin:2px 0}.stopcell-meta{font-family:JetBrains Mono,monospace;font-size:10px;color:var(--muted);letter-spacing:.04em}.ticket{background:var(--card);border:1px solid var(--rule);box-shadow:var(--shadow);position:relative;padding:20px 22px;margin-bottom:14px;background-image:linear-gradient(var(--card),var(--card)),repeating-linear-gradient(45deg,rgba(0,0,0,.02) 0 2px,transparent 2px 6px)}.ticket-stub{display:grid;grid-template-columns:1fr auto 1fr auto;align-items:center;gap:20px}.ticket-city{font-family:Newsreader,serif;font-size:22px;line-height:1.1}.ticket-code{font-family:JetBrains Mono,monospace;font-size:11px;color:var(--muted);letter-spacing:.14em;text-transform:uppercase}.ticket-arrow{display:flex;align-items:center;gap:6px;color:var(--muted);font-size:11px}.ticket-arrow:before,.ticket-arrow:after{content:"";height:1px;background:var(--rule);width:60px}.ticket-time{font-family:JetBrains Mono,monospace;font-size:14px;color:var(--ink)}.perf{border-top:1px dashed var(--rule);margin:16px -22px;position:relative}.perf:before,.perf:after{content:"";position:absolute;top:-8px;width:14px;height:14px;background:var(--paper);border-radius:50%;border:1px solid var(--rule)}.perf:before{left:-8px}.perf:after{right:-8px}.kv{display:flex;flex-wrap:wrap;gap:18px 28px}.kv>div{display:flex;flex-direction:column}.kv-l{font-size:10px;color:var(--muted);letter-spacing:.14em;text-transform:uppercase;margin-bottom:3px}.kv-v{font-family:JetBrains Mono,monospace;font-size:13px}.pill{display:inline-flex;align-items:center;gap:6px;font-family:JetBrains Mono,monospace;font-size:10px;letter-spacing:.14em;text-transform:uppercase;padding:3px 8px;border:1px solid var(--rule);background:var(--paper)}.pill.confirmed{background:var(--green-stamp);color:var(--paper);border-color:transparent}.pill.pending{background:var(--ticket-bg);color:var(--ink)}.pill.used{background:var(--ink);color:var(--paper);border-color:transparent;text-decoration:line-through}.dot{width:6px;height:6px;border-radius:50%;background:currentColor}.day{background:var(--card);border:1px solid var(--rule);padding:20px 22px;margin-bottom:14px;box-shadow:var(--shadow);position:relative}.day.koha{background:linear-gradient(180deg,var(--ticket-bg),var(--card));border-left:4px solid var(--ticket)}.day-head{display:flex;align-items:baseline;gap:14px;border-bottom:1px solid rgba(0,0,0,.08);padding-bottom:10px;margin-bottom:12px}.day-date{font-family:JetBrains Mono,monospace;font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--muted)}.day-title{font-family:Newsreader,serif;font-size:22px}.checklist{list-style:none;padding:0;margin:0}.checklist li{display:flex;gap:10px;align-items:flex-start;padding:6px 0;cursor:pointer}.checklist li:hover .checkbox{border-color:var(--paua)}.checkbox{width:16px;height:16px;border:1.5px solid var(--rule);flex-shrink:0;margin-top:3px;display:grid;place-items:center;background:var(--paper)}.checklist li.done .checkbox{background:var(--paua);border-color:var(--paua)}.checklist li.done .checkbox:after{content:"✓";color:var(--paper);font-size:11px;font-weight:700}.checklist li.done span{color:var(--muted);text-decoration:line-through}.notefield{display:block;width:100%;margin-top:10px;padding:10px 12px;background:transparent;border:1px dashed var(--rule);font:inherit;color:var(--ink);min-height:42px;resize:vertical}.notefield:focus{outline:2px solid var(--paua);border-style:solid}.notefield::placeholder{color:var(--muted);font-style:italic}.stamp{position:absolute;font-family:Newsreader,serif;font-weight:600;color:var(--stamp-red);border:2.5px solid var(--stamp-red);padding:5px 10px;letter-spacing:.12em;text-transform:uppercase;font-size:11px;transform:rotate(-6deg);opacity:.85;background:transparent;pointer-events:none}.stamp.green{color:var(--green-stamp);border-color:var(--green-stamp)}.stamp.paua{color:var(--paua);border-color:var(--paua)}.map-wrap{border:1px solid var(--rule);background:var(--card);padding:20px;box-shadow:var(--shadow);position:relative}.map-svg{width:100%;height:auto;display:block}.map-pin{cursor:pointer}.map-pin circle{transition:r .15s}.map-pin:hover circle.outer{r:12}.map-label{font-family:JetBrains Mono,monospace;font-size:10px;fill:var(--ink);letter-spacing:.05em}.map-path{fill:none;stroke:var(--paua);stroke-width:1.2;stroke-dasharray:3 3;opacity:.8}.budget-grid{display:grid;grid-template-columns:1.6fr 1fr;gap:24px}@media (max-width: 900px){.budget-grid{grid-template-columns:1fr}}.ledger{background:var(--card);border:1px solid var(--rule)}.ledger table{width:100%;border-collapse:collapse}.ledger th,.ledger td{padding:8px 12px;text-align:left;border-bottom:1px solid rgba(0,0,0,.08);font-size:13px}.ledger th{background:var(--paper-2);font-weight:600;font-size:10px;letter-spacing:.14em;text-transform:uppercase;color:var(--muted)}.ledger td.num,.ledger th.num{text-align:right;font-family:JetBrains Mono,monospace}.ledger tr:hover{background:var(--paper)}.ledger input,.ledger select{font:inherit;background:transparent;border:0;width:100%;padding:2px 4px}.ledger input:focus,.ledger select:focus{outline:1px solid var(--paua);background:var(--paper)}.summary-card{background:var(--ink);color:var(--paper);padding:20px 22px;border:1px solid var(--rule)}.summary-card .big{font-family:Newsreader,serif;font-size:42px;line-height:1;margin:4px 0 8px}.summary-card hr{border:0;border-top:1px dashed rgba(244,239,228,.25);margin:14px 0}.summary-card .line{display:flex;justify-content:space-between;font-family:JetBrains Mono,monospace;font-size:13px;margin:6px 0}.summary-card .line span:last-child{color:#f4efe4cc}.beer-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:14px}.beer-card{background:var(--card);border:1px solid var(--rule);padding:16px 18px;position:relative;box-shadow:var(--shadow)}.beer-card:before{content:"";position:absolute;top:10px;right:10px;width:34px;height:34px;border-radius:50%;background:var(--ticket-bg);border:1.5px solid var(--ticket);opacity:.7}.beer-card:after{content:"🍺";position:absolute;top:14px;right:18px;font-size:18px}.btn{display:inline-flex;align-items:center;gap:8px;background:var(--ink);color:var(--paper);border:0;padding:9px 16px;font-size:12px;letter-spacing:.12em;text-transform:uppercase;font-weight:600;cursor:pointer}.btn:hover{background:var(--paua-deep)}.btn.ghost{background:transparent;color:var(--ink);border:1px solid var(--rule)}.btn.ghost:hover{background:var(--ink);color:var(--paper)}.btn.small{padding:6px 10px;font-size:10px}.copy-btn{background:transparent;border:1px solid var(--rule);padding:3px 7px;font-family:JetBrains Mono,monospace;font-size:10px;letter-spacing:.1em;margin-left:6px}.copy-btn:hover{background:var(--ink);color:var(--paper)}input.text,select.text,textarea.text{font:inherit;padding:7px 10px;background:var(--paper);border:1px solid var(--rule)}input.text:focus,select.text:focus,textarea.text:focus{outline:2px solid var(--paua)}.tweaks{position:fixed;bottom:20px;right:20px;z-index:30;background:var(--card);border:1px solid var(--rule);box-shadow:0 10px 40px #0000002e;width:280px}.tweaks-head{background:var(--ink);color:var(--paper);padding:10px 14px;font-family:JetBrains Mono,monospace;font-size:11px;letter-spacing:.2em;text-transform:uppercase;display:flex;justify-content:space-between;align-items:center}.tweaks-body{padding:14px;display:flex;flex-direction:column;gap:12px}.tweaks-row{display:flex;justify-content:space-between;align-items:center;font-size:13px;gap:10px}.tweaks-row select{font:inherit;padding:4px 6px;background:var(--paper);border:1px solid var(--rule)}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-track{background:var(--paper)}::-webkit-scrollbar-thumb{background:var(--ink-soft);border-radius:0}@media print{.rail,.tweaks{display:none}.page{padding:0}.day,.ticket,.beer-card,.ledger{break-inside:avoid;box-shadow:none}body{background:#fff}}.divider-rule{display:flex;align-items:center;gap:14px;margin:32px 0 16px;color:var(--muted);font-family:JetBrains Mono,monospace;font-size:11px;letter-spacing:.2em;text-transform:uppercase}.divider-rule:before,.divider-rule:after{content:"";flex:1;height:1px;background:var(--rule)}.kiwi-strip{display:flex;align-items:center;gap:10px;font-size:12px;color:var(--muted);font-family:JetBrains Mono,monospace;letter-spacing:.1em}.kiwi-strip .sep{opacity:.4}.app{display:flex;flex-direction:column;min-height:100vh}.chrome-header{display:flex;align-items:center;gap:1.5rem;padding:.75rem 1.5rem;background:var(--ink);color:var(--paper);position:sticky;top:0;z-index:10}.chrome-logo{font-size:1.25rem;margin-right:.25rem}.chrome-title{font-family:var(--font-serif);font-size:1.1rem;display:flex;align-items:center;gap:.5rem;flex:1}.chrome-nav{display:flex;gap:1rem}.chrome-nav a{color:var(--paper);opacity:.7;text-decoration:none;font-family:var(--font-mono);font-size:.8rem;text-transform:uppercase;letter-spacing:.05em}.chrome-nav a.active,.chrome-nav a:hover{opacity:1}.chrome-logout{background:none;border:1px solid rgba(255,255,255,.3);color:var(--paper);font-family:var(--font-mono);font-size:.75rem;padding:.3rem .75rem;cursor:pointer;border-radius:2px}.chrome-logout:hover{background:#ffffff1a}.loading,.error,.empty{padding:3rem;text-align:center;font-family:var(--font-mono);color:var(--muted)}.countdown{display:flex;align-items:baseline;gap:8px;margin-bottom:12px}.countdown-num{font-size:52px;font-weight:700;color:var(--teal, #2a7a7a);font-family:var(--font-mono);line-height:1}.countdown-label{font-family:var(--font-mono);font-size:13px;color:var(--muted)}.itinerary-toolbar{display:flex;align-items:center;gap:12px;margin-bottom:20px}.share-btn{font-family:var(--font-mono);font-size:11px;border:1px solid var(--rule);background:none;color:var(--ink);padding:4px 12px;cursor:pointer}.share-btn:hover{background:var(--ink);color:var(--paper)}.share-url-hint{font-family:var(--font-mono);font-size:11px;color:var(--muted);display:flex;align-items:center;gap:8px;flex-wrap:wrap}.share-url-hint a{color:var(--teal, #2a7a7a);word-break:break-all}.share-copy-btn{font-family:var(--font-mono);font-size:10px;border:1px solid var(--rule);background:none;color:var(--ink);padding:2px 8px;cursor:pointer;white-space:nowrap}.share-copy-btn:hover{background:var(--ink);color:var(--paper)}.share-header{margin-bottom:28px}.share-title{font-size:22px;font-weight:700;margin:0 0 4px}.share-dates{font-family:var(--font-mono);font-size:12px;color:var(--muted);margin:0 0 4px}.share-notice{font-family:var(--font-mono);font-size:10px;color:var(--muted);margin:0;text-transform:uppercase;letter-spacing:.08em}.itinerary-page,.tickets-page,.budget-page,.beer-page{max-width:860px;margin:0 auto;padding:24px 20px 48px}.stop-card{margin-bottom:32px;border:1px solid var(--rule);background:var(--card)}.stop-header{display:flex;gap:16px;align-items:flex-start;padding:14px 16px;border-bottom:1px solid var(--rule);background:var(--ink);color:var(--paper)}.stop-flag{font-family:var(--font-mono);font-size:10px;letter-spacing:.15em;text-transform:uppercase;background:var(--paper);color:var(--ink);padding:3px 6px;margin-top:3px;flex-shrink:0}.stop-city{font-family:var(--font-serif);font-size:1.3rem;margin:0 0 4px}.stop-meta{font-family:var(--font-mono);font-size:11px;opacity:.7;display:flex;gap:16px;flex-wrap:wrap}.stop-stay{opacity:.85}.stop-vibe{font-size:13px;opacity:.75;margin-top:4px;font-style:italic}.transit-link{display:inline-block;margin-top:6px;font-family:var(--font-mono);font-size:11px;color:var(--teal, #2a7a7a);text-decoration:none;border:1px solid var(--teal, #2a7a7a);padding:2px 8px}.transit-link:hover{background:var(--teal, #2a7a7a);color:var(--paper)}.phrases{display:flex;flex-wrap:wrap;gap:8px 16px;margin-top:8px}.phrase-item{font-size:12px;font-family:var(--font-mono)}.phrase-en{color:var(--muted)}.day-block{border-bottom:1px solid var(--rule)}.day-block:last-child{border-bottom:none}.day-koha{background:#f0f6f5}.day-header{display:flex;align-items:center;gap:12px;padding:8px 16px;background:var(--paper-2);border-bottom:1px solid var(--rule)}.day-date{font-family:var(--font-mono);font-size:11px;color:var(--muted);min-width:90px}.day-title{font-family:var(--font-serif);font-size:1rem;flex:1}.koha-badge{font-family:var(--font-mono);font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:#2a7a7a;border:1px solid #2a7a7a;padding:1px 5px}.day-items{list-style:none;margin:0;padding:0}.day-item{display:flex;align-items:flex-start;gap:10px;padding:7px 16px;border-bottom:1px solid var(--paper-2);cursor:pointer;font-size:13px;line-height:1.4;transition:background .1s}.day-item:last-child{border-bottom:none}.day-item:hover{background:var(--paper-2)}.day-item.done{opacity:.45;text-decoration:line-through}.day-item-check{font-size:14px;color:#2a7a7a;width:18px;flex-shrink:0;margin-top:1px}.day-item-text{flex:1}.ticket-group{margin-bottom:28px}.ticket-group-header{font-family:var(--font-mono);font-size:11px;letter-spacing:.15em;text-transform:uppercase;color:var(--muted);margin-bottom:10px}.ticket-list{display:flex;flex-direction:column;gap:8px}.ticket-stub{border:1px solid var(--rule);background:var(--card);padding:12px 14px}.ticket-stub-top{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:8px}.ticket-route{font-family:var(--font-serif);font-size:1rem;flex:1}.ticket-arrow{margin:0 6px;opacity:.5}.ticket-status{font-family:var(--font-mono);font-size:11px;text-transform:uppercase;letter-spacing:.1em;flex-shrink:0}.ticket-stub-meta{display:flex;flex-wrap:wrap;gap:6px;font-family:var(--font-mono);font-size:11px;color:var(--muted)}.ticket-stub-meta span{background:var(--paper-2);padding:2px 6px;border-radius:2px}.ticket-notes{font-size:12px;color:var(--muted);font-style:italic;margin-top:6px}.ticket-actions{display:flex;gap:6px;margin-top:8px}.ticket-action-btn{font-family:var(--font-mono);font-size:10px;text-transform:uppercase;letter-spacing:.08em;background:none;border:1px solid var(--rule);color:var(--muted);padding:2px 8px;cursor:pointer}.ticket-action-btn:hover{background:var(--paper-2);color:var(--ink)}.ticket-url-row{display:flex;align-items:center;gap:8px;margin-top:8px}.ticket-url-input{flex:1;font-family:var(--font-mono);font-size:11px;border:1px solid var(--rule);background:var(--paper);color:var(--ink);padding:4px 8px}.ticket-open-btn{font-family:var(--font-mono);font-size:11px;color:var(--teal, #2a7a7a);white-space:nowrap;text-decoration:none}.ticket-open-btn:hover{text-decoration:underline}.tobook-section{border:1px solid #c0392b;background:#fff8f0;padding:16px;margin-bottom:24px}.tobook-title{font-family:var(--font-mono);font-size:11px;color:#c0392b;text-transform:uppercase;letter-spacing:.08em;margin:0 0 10px}.tobook-item{display:flex;gap:12px;align-items:baseline;padding:4px 0;border-bottom:1px solid #f5e0d8;font-size:13px}.tobook-item:last-child{border-bottom:none}.tobook-kind{font-family:var(--font-mono);font-size:10px;color:var(--muted);text-transform:uppercase;min-width:60px}.tobook-date{font-family:var(--font-mono);font-size:11px;color:var(--muted);margin-left:auto}.tobook-amount{font-family:var(--font-mono);font-size:11px;color:#c0392b}.fx-bar{display:flex;gap:20px;justify-content:flex-end;font-family:var(--font-mono);font-size:11px;color:var(--muted);margin-bottom:16px}.budget-summary{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-bottom:28px}.budget-summary-col{background:var(--ink);color:var(--paper);padding:16px}.budget-summary-name{font-family:var(--font-mono);font-size:10px;letter-spacing:.15em;text-transform:uppercase;opacity:.6;margin-bottom:6px}.budget-summary-total{font-family:var(--font-serif);font-size:1.6rem;color:#5ecece;margin-bottom:10px}.budget-summary-row{display:flex;justify-content:space-between;font-family:var(--font-mono);font-size:11px;opacity:.7;padding:2px 0}.budget-table{width:100%;border-collapse:collapse;font-size:13px}.budget-table th{font-family:var(--font-mono);font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);text-align:left;padding:6px 8px;border-bottom:2px solid var(--rule)}.budget-table td{padding:7px 8px;border-bottom:1px solid var(--paper-2);vertical-align:middle}.budget-row--booked{opacity:.8}.budget-row--tobook{background:#fff9f0}.budget-table select{font-family:var(--font-mono);font-size:11px;border:1px solid var(--rule);background:var(--paper);padding:2px 4px;cursor:pointer}.mono{font-family:var(--font-mono);font-size:12px}.beer-title{font-family:var(--font-serif);font-size:1.5rem;margin-bottom:20px}.beer-city{margin-bottom:24px}.beer-spots{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:10px}.beer-card{border:1px solid var(--rule);background:var(--card);padding:12px 14px;cursor:pointer;transition:background .1s}.beer-card:hover{background:var(--paper-2)}.beer-card.visited{border-color:#2a7a7a;background:#f0f7f6}.beer-card-name{font-family:var(--font-serif);font-size:1rem;margin-bottom:4px}.beer-card-note{font-size:12px;color:var(--muted);font-style:italic}.beer-visited-badge{margin-top:6px;font-family:var(--font-mono);font-size:10px;color:#2a7a7a;letter-spacing:.1em;text-transform:uppercase}.beer-link{display:inline-block;margin-top:6px;font-family:var(--font-mono);font-size:11px;color:#2a7a7a}.login-page{min-height:100vh;display:flex;align-items:center;justify-content:center;background:var(--paper)}.login-card{background:var(--card);border:1px solid var(--rule);padding:36px 32px;width:100%;max-width:360px}.login-card h1{font-family:var(--font-serif);font-size:1.4rem;margin:0 0 4px}.login-sub{font-family:var(--font-mono);font-size:11px;color:var(--muted);margin:0 0 24px}.login-card label{display:block;font-family:var(--font-mono);font-size:11px;text-transform:uppercase;letter-spacing:.08em;margin:14px 0 5px;color:var(--muted)}.login-card input{width:100%;padding:8px 10px;border:1px solid var(--rule);background:var(--paper);font-family:var(--font-mono);font-size:14px;color:var(--ink);box-sizing:border-box}.login-card button{margin-top:20px;width:100%;padding:10px;background:var(--ink);color:var(--paper);border:none;font-family:var(--font-mono);font-size:13px;cursor:pointer;letter-spacing:.05em}.login-card button:disabled{opacity:.5;cursor:default}.login-error{color:#c0392b;font-size:12px;margin-top:10px;font-family:var(--font-mono)}
