*,:before,:after{box-sizing:border-box}html,body{margin:0;padding:0}body{background:var(--c-bg);color:var(--c-text);font-family:var(--font);font-size:var(--fs-body);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;line-height:1.45}a{color:var(--c-accent);text-decoration:none}a:hover{text-decoration:underline}:focus-visible{outline:3px solid var(--c-focus-ring);outline-offset:2px;border-radius:6px}.num,.tabular{font-variant-numeric:tabular-nums}.muted{color:var(--c-text-secondary)}.small{font-size:var(--fs-footnote)}.visually-hidden{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.glass{background:var(--c-glass-fallback);border:1px solid var(--c-glass-border)}@supports ((-webkit-backdrop-filter:blur(1px)) or (backdrop-filter:blur(1px))){.glass{background:var(--c-glass);-webkit-backdrop-filter:blur(var(--glass-blur)) saturate(var(--glass-saturate));backdrop-filter:blur(var(--glass-blur)) saturate(var(--glass-saturate));box-shadow:inset 0 1px 0 var(--c-glass-highlight)}}.app{grid-template-columns:264px minmax(0,1fr);min-height:100dvh;display:grid}.sidebar{z-index:10;border-width:0 1px 0 0;flex-direction:column;gap:4px;height:100dvh;padding:16px 12px;display:flex;position:sticky;top:0;overflow-y:auto}.brand{font-weight:600;font-size:var(--fs-headline);color:var(--c-text);align-items:center;gap:10px;padding:6px 10px 14px;display:flex}.brand svg{color:var(--c-accent)}.shop-switch{min-height:var(--hit);border-radius:var(--r-control);background:var(--c-surface-alt);color:var(--c-text);width:100%;font:inherit;text-align:left;cursor:pointer;border:0;align-items:center;gap:10px;margin-bottom:8px;padding:8px 10px;display:flex}.shop-switch:hover{background:var(--c-accent-soft);text-decoration:none}.shop-switch .meta{flex-direction:column;flex:1;min-width:0;display:flex}.shop-switch .name{text-overflow:ellipsis;white-space:nowrap;font-weight:600;overflow:hidden}.nav-group{font-size:var(--fs-caption);color:var(--c-text-tertiary);text-transform:uppercase;letter-spacing:.04em;margin:14px 10px 4px;font-weight:600}.nav-link{min-height:var(--hit);border-radius:var(--r-control);color:var(--c-text);transition:background var(--t-fast) var(--ease);align-items:center;gap:10px;padding:0 10px;font-weight:500;display:flex}.nav-link:hover{background:var(--c-accent-soft);text-decoration:none}.nav-link.active{background:var(--c-accent);color:var(--c-on-accent)}.nav-link .count{border-radius:var(--r-pill);background:var(--c-danger);color:#fff;min-width:22px;font-size:var(--fs-caption);text-align:center;margin-left:auto;padding:0 7px;font-weight:600;line-height:20px}.nav-link.active .count{background:var(--c-on-accent);color:var(--c-accent)}.sidebar .spacer{flex:1}.topbar{display:none}.main{min-width:0}.page{max-width:920px;margin:0 auto;padding:32px 32px 64px}.page.narrow{max-width:560px}.page-head{justify-content:space-between;align-items:flex-end;gap:16px;margin-bottom:20px;display:flex}.large-title{font-size:var(--fs-large-title);letter-spacing:-.02em;margin:0;font-weight:700;line-height:1.15}.page-sub{color:var(--c-text-secondary);margin:6px 0 0}.back{min-height:var(--hit);align-items:center;gap:2px;margin-bottom:4px;font-weight:500;display:inline-flex}h2.section{font-size:var(--fs-footnote);color:var(--c-text-secondary);text-transform:uppercase;letter-spacing:.04em;margin:28px 0 8px;padding:0 4px;font-weight:600}@media (max-width:900px){.app{grid-template-columns:minmax(0,1fr)}.sidebar{width:min(300px,86vw);transition:transform var(--t-base) var(--ease);position:fixed;inset:0 auto 0 0;transform:translate(-102%)}.sidebar.open{transform:none}.scrim{background:var(--c-scrim);z-index:9;position:fixed;inset:0}.topbar{z-index:8;border-width:0 0 1px;align-items:center;gap:8px;min-height:52px;padding:4px 8px;display:flex;position:sticky;top:0}.topbar .title{font-weight:600}.page{padding:20px 16px 48px}.large-title{font-size:var(--fs-title1)}.page-head{flex-wrap:wrap;align-items:flex-start}}.card{background:var(--c-surface);border-radius:var(--r-card);padding:20px}.card+.card{margin-top:12px}.card h3{font-size:var(--fs-headline);margin:0 0 6px;font-weight:600}.card p{margin:0}.card .actions{flex-wrap:wrap;gap:8px;margin-top:16px;display:flex}.callout{border-radius:var(--r-card);background:var(--c-surface);align-items:flex-start;gap:12px;padding:16px 18px;display:flex}.callout>svg{flex:none;margin-top:1px}.callout.warning{background:var(--c-warning-soft)}.callout.warning>svg{color:var(--c-warning)}.callout.danger{background:var(--c-danger-soft)}.callout.danger>svg{color:var(--c-danger)}.callout.success{background:var(--c-success-soft)}.callout.success>svg{color:var(--c-success)}.callout.accent{background:var(--c-accent-soft)}.callout.accent>svg{color:var(--c-accent)}.callout .body{flex:1;min-width:0}.callout strong{margin-bottom:2px;display:block}.callout+.callout,.callout+.card,.card+.callout{margin-top:12px}.list{background:var(--c-surface);border-radius:var(--r-card);overflow:hidden}.row{min-height:52px;color:var(--c-text);align-items:center;gap:12px;padding:10px 16px;display:flex;position:relative}.row+.row:before{content:"";border-top:1px solid var(--c-separator);position:absolute;top:0;left:16px;right:0}a.row:hover,button.row:hover{background:var(--c-surface-alt);text-decoration:none}button.row{width:100%;font:inherit;text-align:left;cursor:pointer;background:0 0;border:0}.row .grow{flex:1;min-width:0}.row .title{font-weight:500}.row .sub{color:var(--c-text-secondary);font-size:var(--fs-footnote)}.row .end{color:var(--c-text-secondary);align-items:center;gap:8px;display:flex}.row .chev{color:var(--c-text-tertiary)}.row .lead{background:var(--c-accent-soft);width:34px;height:34px;color:var(--c-accent);border-radius:10px;flex:none;place-items:center;display:grid}.btn{min-height:var(--hit);border-radius:var(--r-control);font:inherit;cursor:pointer;transition:background var(--t-fast) var(--ease), opacity var(--t-fast) var(--ease);white-space:nowrap;border:0;justify-content:center;align-items:center;gap:6px;padding:0 18px;font-weight:600;text-decoration:none;display:inline-flex}.btn:hover{text-decoration:none}.btn.primary{background:var(--c-accent);color:var(--c-on-accent)}.btn.primary:hover{background:var(--c-accent-pressed)}.btn.secondary{background:var(--c-accent-soft);color:var(--c-accent)}.btn.danger{background:var(--c-danger-soft);color:var(--c-danger)}.btn.plain{color:var(--c-accent);background:0 0;padding:0 10px}.btn.icon{width:var(--hit);color:var(--c-text);background:0 0;padding:0}.btn.block{width:100%}.btn:disabled{opacity:.45;cursor:default}.form{gap:14px;display:grid}.form-grid{grid-template-columns:1fr 1fr;gap:14px;display:grid}@media (max-width:640px){.form-grid{grid-template-columns:1fr}}.field{gap:6px;display:grid}.field>span{font-size:var(--fs-footnote);color:var(--c-text-secondary);font-weight:500}.field .hint{font-size:var(--fs-caption);color:var(--c-text-tertiary)}.field .err{font-size:var(--fs-footnote);color:var(--c-danger)}.input,select.input,textarea.input{width:100%;min-height:var(--hit);border-radius:var(--r-control);background:var(--c-surface-alt);color:var(--c-text);font:inherit;border:1px solid #0000;padding:10px 14px}.input:focus{border-color:var(--c-accent);box-shadow:0 0 0 3px var(--c-focus-ring);outline:none}.input[aria-invalid=true]{border-color:var(--c-danger)}.input.code{letter-spacing:.4em;text-align:center;font-variant-numeric:tabular-nums;font-size:26px}.check{min-height:var(--hit);cursor:pointer;align-items:flex-start;gap:12px;padding:10px 0;display:flex}.check input{width:22px;height:22px;accent-color:var(--c-accent);flex:none;margin:0}.check input.switch{width:51px;height:31px}.segmented{border-radius:var(--r-control);background:var(--c-surface-alt);scrollbar-width:none;gap:2px;max-width:100%;padding:3px;display:inline-flex;overflow-x:auto}.segmented button{white-space:nowrap;flex:none}.page-head>:last-child:not(:first-child){min-width:0;max-width:100%}.segmented button{min-height:38px;color:var(--c-text);font:inherit;cursor:pointer;background:0 0;border:0;border-radius:9px;align-items:center;gap:6px;padding:0 16px;font-weight:500;display:inline-flex}.segmented button[aria-pressed=true]{background:var(--c-surface);font-weight:600}.switch{appearance:none;border-radius:var(--r-pill);background:var(--c-separator);cursor:pointer;width:51px;height:31px;transition:background var(--t-fast) var(--ease);flex:none;margin:0;position:relative}.switch:after{content:"";width:27px;height:27px;transition:transform var(--t-base) var(--ease);background:#fff;border-radius:50%;position:absolute;top:2px;left:2px}.switch:checked{background:var(--c-success)}.switch:checked:after{transform:translate(20px)}.badge{border-radius:var(--r-pill);font-size:var(--fs-caption);background:var(--c-surface-alt);color:var(--c-text-secondary);white-space:nowrap;align-items:center;gap:4px;padding:2px 9px;font-weight:600;display:inline-flex}.badge.success{background:var(--c-success-soft);color:var(--c-success)}.badge.warning{background:var(--c-warning-soft);color:var(--c-warning)}.badge.danger{background:var(--c-danger-soft);color:var(--c-danger)}.badge.accent{background:var(--c-accent-soft);color:var(--c-accent)}.state{text-align:center;background:var(--c-surface);border-radius:var(--r-card);justify-items:center;gap:10px;padding:48px 24px;display:grid}.state>svg{color:var(--c-text-tertiary)}.state h3{font-size:var(--fs-title3);margin:0}.state p{max-width:440px;color:var(--c-text-secondary);margin:0}.state .actions{gap:8px;margin-top:8px;display:flex}.skeleton{border-radius:var(--r-card);background:var(--c-surface);overflow:hidden}.skeleton .bar{background:var(--c-surface-alt);border-radius:7px;height:14px;margin:18px 20px;animation:1.4s ease-in-out infinite pulse}.skeleton .bar:nth-child(2){width:60%}.skeleton .bar:nth-child(3){width:40%}@keyframes pulse{50%{opacity:.45}}@media (prefers-reduced-motion:reduce){.skeleton .bar{animation:none}}.toast{border-radius:var(--r-pill);color:var(--c-text);z-index:50;max-width:calc(100vw - 32px);padding:12px 18px;font-weight:500;position:fixed;bottom:24px;left:50%;transform:translate(-50%)}.stats{grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:12px;display:grid}.stat{background:var(--c-surface);border-radius:var(--r-card);padding:16px 18px}.stat .label{font-size:var(--fs-footnote);color:var(--c-text-secondary)}.stat .value{font-size:var(--fs-title2);font-variant-numeric:tabular-nums;letter-spacing:-.01em;margin-top:4px;font-weight:700}.stat .note{font-size:var(--fs-caption);color:var(--c-text-tertiary);margin-top:2px}.positive{color:var(--c-success)}.negative{color:var(--c-danger)}.table-wrap{background:var(--c-surface);border-radius:var(--r-card);overflow-x:auto}table.data{border-collapse:collapse;font-variant-numeric:tabular-nums;width:100%}table.data th,table.data td{text-align:left;border-bottom:1px solid var(--c-separator);white-space:nowrap;padding:12px 16px}table.data th{font-size:var(--fs-footnote);color:var(--c-text-secondary);font-weight:600}table.data tr:last-child td{border-bottom:0}table.data .r{text-align:right}dialog.sheet{border-radius:var(--r-sheet);background:var(--c-surface);color:var(--c-text);border:0;width:min(520px,100vw - 32px);max-height:calc(100dvh - 48px);padding:0}dialog.sheet::backdrop{background:var(--c-scrim)}dialog.sheet .sheet-head{justify-content:space-between;align-items:center;padding:18px 20px 6px;display:flex}dialog.sheet .sheet-head h2{font-size:var(--fs-title3);margin:0}dialog.sheet .sheet-body{padding:8px 20px 20px}.legal-text{white-space:pre-wrap;border-radius:var(--r-control);background:var(--c-surface-alt);max-height:50dvh;font-size:var(--fs-footnote);padding:16px;overflow-y:auto}.auth-wrap{place-items:center;min-height:100dvh;padding:24px 16px;display:grid}.auth-card{width:min(420px,100%)}.auth-brand{text-align:center;flex-direction:column;align-items:center;gap:10px;margin-bottom:24px;display:flex}.auth-brand .mark{background:var(--c-accent);width:64px;height:64px;color:var(--c-on-accent);border-radius:18px;place-items:center;display:grid}.auth-brand h1{font-size:var(--fs-title1);letter-spacing:-.02em;margin:0}.auth-brand .page-head{margin-bottom:0}.home-grid{grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:12px;margin-top:12px;display:grid}.home-grid>.card+.card{margin-top:0}.meter{background:var(--c-surface-alt);border-radius:3px;height:6px;margin-top:10px;overflow:hidden}.meter>span{border-radius:inherit;background:var(--c-accent);height:100%;display:block}.meter.warning>span{background:var(--c-warning)}.meter.danger>span{background:var(--c-danger)}.steps{gap:12px;margin:14px 0 0;padding:0;list-style:none;display:grid}.steps li{align-items:flex-start;gap:12px;display:flex}.steps .mark{width:24px;height:24px;font-size:var(--fs-caption);background:var(--c-surface-alt);color:var(--c-text-secondary);border-radius:50%;flex:none;justify-content:center;align-items:center;font-weight:600;display:inline-flex}.steps li.done .mark{background:var(--c-success);color:var(--c-on-accent)}.steps li.done strong{color:var(--c-text-secondary);font-weight:500}.phrase-table{-webkit-user-select:none;user-select:none;grid-template-rows:repeat(6,auto);grid-template-columns:1fr 1fr;grid-auto-flow:column;gap:8px 24px;display:grid}.phrase-table .w{align-items:center;gap:8px;min-height:36px;display:flex}.phrase-table .n,.phrase-inputs .n{text-align:right;width:24px;color:var(--c-text-tertiary);font-size:var(--fs-footnote);font-variant-numeric:tabular-nums;flex:none}.phrase-table .word{font-size:var(--fs-title3);font-weight:600}.phrase-table .bar{background:var(--c-surface-alt);border-radius:6px;width:88px;height:18px}.phrase-inputs{grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:8px;display:grid}.phrase-inputs label{align-items:center;gap:6px;display:flex}.phrase-inputs .input[data-mark=ok]{border-color:var(--c-success)}.phrase-inputs .input[data-mark=bad]{border-color:var(--c-danger)}.phrase-inputs .shake{animation:phrase-shake .3s var(--ease)}@keyframes phrase-shake{0%,to{transform:translate(0)}20%{transform:translate(10px)}40%{transform:translate(-10px)}60%{transform:translate(8px)}80%{transform:translate(-4px)}}@media (prefers-reduced-motion:reduce){.phrase-inputs .shake{animation:none}}.suggest{flex-wrap:wrap;gap:8px;display:flex}.suggest button{min-height:var(--hit);border-radius:var(--r-pill);background:var(--c-accent-soft);color:var(--c-accent);font:inherit;cursor:pointer;border:0;padding:0 14px}
