:root{--bg:#FAF8F2;--card:#fff;--pri:#426B4F;--deep:#294735;--sage:#E4EDDF;--tx:#292F2B;--tx2:#69736B;--bd:#E6E7E1;--amb:#D99A35;--ambbg:#FCF0D9;--ambtx:#7d520f;--red:#B54740;--redbg:#F7E3E0;--onpri:#fff;--ok:#2f5a3c;--okbg:#E4EDDF}
.dark{--bg:#101820;--card:#1b2835;--pri:#AFC6D8;--deep:#EDF2F5;--sage:#293B4B;--tx:#EDF2F5;--tx2:#9fb2c0;--bd:#2f4354;--amb:#FFD59A;--ambbg:#3b3323;--ambtx:#FFD59A;--red:#f2a49c;--redbg:#3b2427;--onpri:#101820;--ok:#B9E7C9;--okbg:#21392d}
html,body{background:var(--bg);color:var(--tx);font-family:'Figtree',-apple-system,sans-serif;-webkit-font-smoothing:antialiased}
body{background-image:radial-gradient(circle at 10% -10%,var(--sage) 0,transparent 40%),radial-gradient(circle at 110% 30%,var(--sage) 0,transparent 30%);background-attachment:fixed;min-height:100vh}
.disp{font-family:'Fraunces',serif;color:var(--deep);letter-spacing:-.01em}
.meta{font-size:.75rem;text-transform:uppercase;letter-spacing:.08em;color:var(--tx2);font-weight:600}
.sub{color:var(--tx2);font-size:.875rem}
.card{background:var(--card);border:1px solid var(--bd);border-radius:16px}
.btn-p{background:var(--pri);color:var(--onpri);border-radius:14px;min-height:54px;padding:0 20px;font-weight:600;width:100%;transition:transform .15s,opacity .15s}
.btn-p:active,.btn-s:active{transform:scale(.98)}
.btn-p:disabled{opacity:.5}
.btn-s{background:var(--card);color:var(--pri);border:1px solid var(--bd);border-radius:14px;min-height:52px;padding:0 18px;font-weight:600}
.btn-t{color:var(--pri);font-weight:600;min-height:44px;padding:0 8px}
.btn-d{color:var(--red);font-weight:600;min-height:44px;padding:0 8px}
.inp{background:var(--card);border:1px solid var(--bd);border-radius:14px;min-height:54px;padding:0 16px;color:var(--tx);width:100%;font-size:1rem}
.inp.sm{min-height:44px;padding:0 10px;border-radius:10px}
.inp:focus,button:focus-visible{outline:2px solid var(--pri);outline-offset:2px}
.chip{border:1px solid var(--bd);background:var(--card);border-radius:999px;padding:0 14px;min-height:40px;font-size:.875rem;font-weight:500;white-space:nowrap;color:var(--tx)}
.chip.on{background:var(--sage);border-color:var(--pri);color:var(--deep);font-weight:700}
.chip.red.on{background:var(--redbg);border-color:var(--red);color:var(--red)}
.pill{background:var(--sage);color:var(--deep);border-radius:999px;padding:3px 10px;font-size:.75rem;font-weight:600}
.badge{display:inline-flex;align-items:center;gap:4px;border-radius:999px;padding:2px 9px;font-size:.72rem;font-weight:700;white-space:nowrap}
.b-ok{background:var(--okbg);color:var(--ok)}
.b-amb{background:var(--ambbg);color:var(--ambtx)}
.b-unk{border:1.5px dashed var(--tx2);color:var(--tx2)}
.b-red{background:var(--redbg);color:var(--red)}
.tile{background:var(--sage);border-radius:12px;width:48px;height:48px;display:flex;align-items:center;justify-content:center;font-size:1.5rem;flex-shrink:0}
.tabbar{background:color-mix(in srgb,var(--card) 88%,transparent);backdrop-filter:blur(14px);border-top:1px solid var(--bd);padding-bottom:env(safe-area-inset-bottom)}
.tab{color:var(--tx2);min-height:56px;font-size:.68rem;font-weight:600}
.tab.on{color:var(--pri)}
.sheet-bg{background:rgba(16,24,32,.45);animation:fade .2s}
.sheet{background:var(--bg);border-radius:22px 22px 0 0;animation:up .28s cubic-bezier(.2,.9,.3,1);max-height:92vh;overflow:auto;padding-bottom:calc(16px + env(safe-area-inset-bottom))}
.rise{animation:rise .45s both}
.bar{height:6px;border-radius:9px;background:var(--bd);overflow:hidden}
.bar>i{display:block;height:100%;background:var(--pri)}
.hscroll{overflow-x:auto;scrollbar-width:none}.hscroll::-webkit-scrollbar{display:none}
.shimmer{background:linear-gradient(90deg,var(--sage),var(--bd),var(--sage));background-size:200% 100%;animation:sh 1.4s infinite}
a.remix{color:var(--tx2);font-size:.8rem;text-decoration:underline}
@keyframes up{from{transform:translateY(100%)}to{transform:none}}
@keyframes fade{from{opacity:0}}
@keyframes rise{from{opacity:0;transform:translateY(10px)}}
@keyframes sh{to{background-position:-200% 0}}
@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}