.btn{border:1px solid var(--line);border-radius:var(--r-pill);background:var(--hull);min-height:2.75rem;color:var(--text);font-weight:500;font-size:var(--fs-md);transition:background var(--t-fast), border-color var(--t-fast), transform var(--t-fast), filter var(--t-fast);justify-content:center;align-items:center;gap:.5rem;padding:0 1.25rem;line-height:1;display:inline-flex}.btn:hover{background:var(--wave);border-color:var(--gold);transform:translateY(-1px)}.btn:active{transform:translateY(1px)}.btn:disabled{opacity:.45;pointer-events:none}.btn--gold{background:linear-gradient(180deg, #ffd27a, var(--gold));border-color:var(--gold-deep);color:#2a1d00;font-weight:700;box-shadow:0 6px 16px #0006}.btn--gold:hover{filter:brightness(1.03);background:linear-gradient(#ffdc92,#f7c25c)}.btn--ghost{background:0 0}.btn--danger{background:#ee6b6b2e;border-color:#ee6b6b99}.btn--danger:hover{border-color:var(--danger);background:#ee6b6b66}.btn--sm{min-height:2.25rem;font-size:var(--fs-sm);padding:0 .9rem}.icon-btn{border:1px solid var(--line);background:var(--hull);width:2.5rem;height:2.5rem;color:var(--text);transition:background var(--t-fast), border-color var(--t-fast), transform var(--t-fast);border-radius:50%;flex:none;justify-content:center;align-items:center;padding:0;display:inline-flex}.icon-btn:hover{background:var(--wave);border-color:var(--gold);transform:translateY(-1px)}.icon-btn--danger:hover{border-color:var(--danger);background:#ee6b6b73}.icon-btn--sm{width:2rem;height:2rem}.icon-btn--sm .material-symbols-sharp{font-size:1.15em}.badge{border-radius:var(--r-pill);font-size:var(--fs-sm);border:1px solid #0000;align-items:center;gap:.3rem;padding:.15rem .6rem;font-weight:700;line-height:1.4;display:inline-flex}.badge--gold{background:var(--gold);color:#2a1d00}.badge--outline{border-color:var(--line);color:var(--muted);background:#0215298c}.badge--ok{color:var(--ok);background:#4fd1a52e;border-color:#4fd1a599}.chip{border-radius:var(--r-pill);border:1px solid var(--line);background:var(--deep);color:var(--muted);font-size:var(--fs-sm);transition:background var(--t-fast), color var(--t-fast), border-color var(--t-fast);align-items:center;gap:.4rem;padding:.4rem .9rem;font-weight:500;display:inline-flex}.chip:hover{color:var(--text);border-color:var(--gold)}.chip[aria-pressed=true],.chip.is-active{background:var(--gold);border-color:var(--gold);color:#2a1d00;font-weight:700}.progress{--p:0;border-radius:var(--r-pill);border:1px solid var(--line-soft);background:#021529bf;height:.5rem;overflow:hidden}.progress:before{content:"";height:100%;width:calc(var(--p) * 1%);border-radius:inherit;background:linear-gradient(90deg, var(--gold-deep), var(--gold), var(--gold-soft));transition:width var(--t-med) var(--ease);display:block}.progress.is-full:before{background:linear-gradient(90deg, #2fae88, var(--ok))}dialog{color:var(--text);border:1px solid var(--line);border-radius:var(--r-lg);background:var(--panel);box-shadow:var(--shadow-2);max-width:none;max-height:none;padding:0}dialog[open]{animation:dialog-in .28s var(--ease)}dialog::backdrop{backdrop-filter:blur(5px);background:#020f1ec7;animation:.28s fade-in}@keyframes dialog-in{0%{opacity:0;transform:translateY(18px)scale(.98)}to{opacity:1;transform:none}}@keyframes fade-in{0%{opacity:0}to{opacity:1}}.modal{width:min(30rem,100vw - 2rem)}.modal__form{gap:1rem;padding:1.5rem;display:grid}.modal__title{font-family:var(--font-display);font-size:var(--fs-lg);color:var(--gold);letter-spacing:.03em;font-weight:400}.modal__text{color:var(--muted)}.modal__actions{flex-wrap:wrap;justify-content:flex-end;gap:.6rem;display:flex}.field{gap:.35rem;display:grid}.field>span{font-size:var(--fs-sm);color:var(--muted)}.input{border:1px solid var(--line);border-radius:var(--r-md);width:100%;min-height:2.75rem;color:var(--text);background:#021529b3;padding:0 1rem}.input::placeholder{color:#8ea5c4}.input:focus{border-color:var(--gold);outline:none;box-shadow:0 0 0 3px #f2b84b40}.toast-zone{left:50%;bottom:max(1rem, env(safe-area-inset-bottom));z-index:3000;pointer-events:none;justify-items:center;gap:.5rem;width:min(32rem,100vw - 2rem);display:grid;position:fixed;transform:translate(-50%)}.toast{border-radius:var(--r-pill);background:var(--deep);border:1px solid var(--gold);box-shadow:var(--shadow-2);font-size:var(--fs-sm);text-align:center;animation:toast-in .3s var(--ease);padding:.7rem 1.1rem}.toast.is-error{border-color:var(--danger)}.toast.is-out{opacity:0;transition:opacity .3s,transform .3s;transform:translateY(8px)}@keyframes toast-in{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}.page-top{z-index:40;height:4rem;padding:0 var(--gutter);padding-top:env(safe-area-inset-top);backdrop-filter:blur(8px);border-bottom:1px solid var(--line-soft);background:linear-gradient(#03305ef2,#03305ed1);grid-template-columns:1fr auto 1fr;align-items:center;gap:.75rem;display:grid;position:sticky;top:0;box-shadow:0 6px 20px #00000059}.page-top .icon-btn{justify-self:start;width:2.75rem;height:2.75rem}.page-top__title{font-family:var(--font-display);letter-spacing:.04em;color:var(--gold);text-shadow:0 2px #00000073;text-align:center;font-size:clamp(1.7rem,1.2rem + 1.6vw,2.4rem);font-weight:400;line-height:1}.page-top__end{justify-self:end;align-items:center;gap:.5rem;display:flex}@media (width<=520px){.page-top__label{display:none}}.credit{padding:1rem var(--gutter) calc(1rem + env(safe-area-inset-bottom));color:var(--muted);font-size:var(--fs-sm);justify-content:center;align-items:center;gap:.4rem;display:flex}.credit a{color:var(--gold-soft);font-weight:700}.credit a:hover{text-decoration:underline}.credit kbd{color:#14181d;min-width:1.6em;font:700 .78rem var(--font-body);text-align:center;background:#fff;border-bottom:2px solid #aab6c6;border-radius:5px;padding:1px 6px;display:inline-block}@media (width<=480px){.credit__sep,.credit__tip{display:none}}