.dir-switch{display:flex;gap:.4rem;margin-top:.75rem}.dir-option{min-height:44px;min-width:44px;padding:.35rem .9rem;background:transparent;border:1px solid var(--line);border-radius:2px;font-family:inherit;font-size:.78rem;letter-spacing:.15em;color:var(--ink-soft)}.dir-option-active{border-color:var(--ink);color:var(--ink);font-weight:700;background:var(--paper-deep)}.dir-b{--bg: #eef1f5;--surface: #ffffff;--surface-alt: #e4e9ef;--ink-b: #131a22;--sub-b: #4d5a68;--faint-b: #8794a1;--line-b: #cdd5de;--line-strong: #aab6c2;--cobalt: #1f4bff;--cobalt-deep: #0f2fb8;--ok-b: #0b7a52;--warn-b: #b45309;--danger-b: #d92d20;--sans-b: "Inter", "Noto Sans SC", "PingFang SC", "Microsoft YaHei", system-ui, sans-serif;--mono-b: "JetBrains Mono", "Sarasa Mono SC", ui-monospace, monospace}body:has(.dir-b){font-family:var(--sans-b);background:#eef1f5;color:#131a22;line-height:1.6;background-image:linear-gradient(rgba(19,26,34,.045) 1px,transparent 1px),linear-gradient(90deg,rgba(19,26,34,.045) 1px,transparent 1px);background-size:24px 24px}.dir-b.app{border-left:1px solid var(--line-strong);border-right:1px solid var(--line-strong);background:var(--bg)}.dir-b button:focus-visible,.dir-b select:focus-visible,.dir-b textarea:focus-visible{outline:2px solid var(--cobalt);outline-offset:2px;border-radius:0}.dir-b .masthead{background:var(--surface);border-bottom:1px solid var(--ink-b);box-shadow:0 1px 0 var(--line-b)}.dir-b .brand-mark{font-family:var(--sans-b);color:var(--ink-b);text-shadow:none;letter-spacing:.05em;border-bottom:3px solid var(--cobalt)}.dir-b .sync-select select{font-family:var(--mono-b);background:var(--surface);border:1px solid var(--line-strong);border-radius:0;color:var(--ink-b)}.dir-b.sync-offline .sync-button{border-color:var(--warn-b);color:var(--warn-b)}.dir-b.sync-error .sync-button{border-color:var(--danger-b);color:var(--danger-b)}.dir-b .dir-option{font-family:var(--mono-b);background:var(--surface);border:1px solid var(--line-strong);border-radius:0;color:var(--sub-b);letter-spacing:.1em}.dir-b .dir-option-active{background:var(--ink-b);border-color:var(--ink-b);color:#fff}.dir-b .display{font-family:var(--sans-b);letter-spacing:.02em;border-bottom:2px solid var(--ink-b)}.dir-b .cal{gap:1px;background:var(--line-b);border:1px solid var(--line-strong)}.dir-b .cal-weekday{background:var(--surface-alt);color:var(--sub-b);font-family:var(--mono-b);letter-spacing:.3em}.dir-b .cal-pad{background:var(--surface-alt)}.dir-b .cal-day{background:var(--surface);color:var(--sub-b);border-radius:0}.dir-b .cal-num{font-family:var(--mono-b)}.dir-b .cal-day-trained{color:var(--ink-b);background:var(--surface);box-shadow:inset 0 0 0 1px var(--line-strong)}.dir-b .cal-dot{width:6px;height:6px;border-radius:0;background:var(--cobalt)}.dir-b .cal-day-selected{background:var(--cobalt);color:#fff;box-shadow:inset 0 0 0 1px var(--cobalt-deep)}.dir-b .cal-day-selected .cal-dot{background:#fff}.dir-b .cal-day-selected .cal-num{color:#fff}.dir-b .day-entry{border-top:2px solid var(--ink-b)}.dir-b .bw{font-family:var(--mono-b);color:var(--sub-b)}.dir-b .day-exercise{border-left:2px solid var(--cobalt)}.dir-b .set-ledger li{border-bottom:1px solid var(--line-b);font-family:var(--sans-b)}.dir-b .set-idx{font-family:var(--mono-b);color:var(--faint-b)}.dir-b .set-kind{color:var(--ok-b);font-family:var(--mono-b)}.dir-b .set-load{font-family:var(--mono-b);font-weight:700}.dir-b .set-result{color:var(--sub-b)}.dir-b .set-failed .set-load{text-decoration:line-through;color:var(--faint-b)}.dir-b .set-failed .set-result{color:var(--danger-b)}.dir-b .ink-note{font-style:normal;color:var(--sub-b)}.dir-b .session-note{background:var(--surface-alt);border-left:3px solid var(--warn-b);color:var(--sub-b)}.dir-b .session-note:before{content:"NOTE / ";font-family:var(--mono-b);font-size:.72rem;letter-spacing:.15em;color:var(--warn-b)}.dir-b .rest-day{border-top:1px solid var(--line-b);color:var(--faint-b);font-family:var(--mono-b);letter-spacing:.05em}.dir-b .entry-row{border:1px solid var(--line-strong);background:var(--surface)}.dir-b .entry-row:before{width:3px;background:var(--ok-b)}.dir-b .entry-failed:before{background:var(--danger-b)}.dir-b .entry-idx{font-family:var(--mono-b);letter-spacing:.15em;font-weight:700}.dir-b .result-toggle{border:1px solid var(--ok-b);color:var(--ok-b);border-radius:0;font-family:var(--mono-b);letter-spacing:.1em}.dir-b .entry-failed .result-toggle{border-color:var(--danger-b);color:var(--danger-b)}.dir-b .stepper-label{font-family:var(--mono-b);letter-spacing:.2em;text-transform:uppercase;color:var(--faint-b)}.dir-b .stepper-controls{border:1px solid var(--line-strong);background:var(--surface)}.dir-b .stepper-controls button{background:var(--surface-alt);color:var(--cobalt-deep);font-family:var(--mono-b)}.dir-b .stepper-value{font-family:var(--mono-b);font-weight:700}.dir-b .btn-ghost,.dir-b .btn-primary,.dir-b .btn-danger{border-radius:0;letter-spacing:.12em}.dir-b .btn-ghost{border:1px solid var(--line-strong);color:var(--sub-b);background:var(--surface)}.dir-b .btn-primary{background:var(--cobalt);border:1px solid var(--cobalt-deep);color:#fff;box-shadow:none}.dir-b .btn-primary:hover{background:var(--cobalt-deep)}.dir-b .btn-primary:active{transform:none;box-shadow:none}.dir-b .btn-primary:disabled{background:var(--line-strong);border-color:var(--line-strong)}.dir-b .btn-danger{background:var(--danger-b);border:1px solid #a61b12;color:#fff}.dir-b .btn-danger:hover{background:#a61b12}.dir-b .saved-note{font-family:var(--mono-b);color:var(--ok-b)}.dir-b .chart{border-bottom:2px solid var(--ink-b);background:repeating-linear-gradient(0deg,transparent 0 2.55rem,rgba(19,26,34,.06) 2.55rem calc(2.55rem + 1px))}.dir-b .chart-bar{width:55%;background:var(--cobalt);border-radius:0;box-shadow:inset 0 3px 0 var(--cobalt-deep)}.dir-b .chart-bar-failed{background:repeating-linear-gradient(45deg,var(--faint-b) 0 3px,transparent 3px 7px);box-shadow:none}.dir-b .chart-val{font-family:var(--mono-b);color:var(--ink-b)}.dir-b .chart-date{font-family:var(--mono-b);color:var(--faint-b)}.dir-b .stat-verse{border-top:2px solid var(--ink-b);border-bottom:1px solid var(--line-b)}.dir-b .stat-label{font-family:var(--mono-b);letter-spacing:.15em;color:var(--cobalt);border:1px solid var(--cobalt);text-transform:uppercase}.dir-b .stat-big{font-family:var(--mono-b);letter-spacing:-.02em}.dir-b .stat-big small{font-family:var(--sans-b);color:var(--sub-b)}.dir-b .stat-trend{color:var(--sub-b)}.dir-b .history-head{font-family:var(--mono-b);letter-spacing:.35em;color:var(--faint-b);text-transform:uppercase}.dir-b .history-list li{border-bottom:1px solid var(--line-b)}.dir-b .history-date{font-family:var(--mono-b);color:var(--cobalt)}.dir-b .history-sets{font-family:var(--mono-b);color:var(--sub-b)}.dir-b .guide-meta{font-family:var(--mono-b);color:var(--faint-b);border-bottom:1px solid var(--line-b)}.dir-b .guide-h{font-family:var(--sans-b);letter-spacing:.04em}.dir-b .guide-h:before{width:.9rem;height:2px;background:var(--cobalt)}.dir-b .guide-p{text-align:left;color:var(--ink-b)}.dir-b .callout{border:1px solid var(--line-strong);background:var(--surface)}.dir-b .callout strong{font-family:var(--mono-b);letter-spacing:.15em;text-transform:uppercase}.dir-b .callout-tip{border-left:3px solid var(--ok-b)}.dir-b .callout-tip strong{color:var(--ok-b)}.dir-b .callout-warning{border-left:3px solid var(--warn-b)}.dir-b .callout-warning strong{color:var(--warn-b)}.dir-b .guide-steps li{border-bottom:1px solid var(--line-b)}.dir-b .guide-steps li:before{content:counter(step,decimal-leading-zero);font-family:var(--mono-b);font-weight:700;color:var(--cobalt);font-size:.95rem}.dir-b .guide-list li:before{content:"▸";color:var(--cobalt);font-size:.8rem;top:.4rem}.dir-b .guide-edit textarea{font-family:var(--mono-b);border:1px solid var(--line-strong);background:var(--surface);color:var(--ink-b);border-radius:0}.dir-b .empty-state{border:1px solid var(--line-strong);background:var(--surface)}.dir-b .empty-glyph{color:var(--line-b);font-family:var(--sans-b)}.dir-b .empty-state p{color:var(--faint-b)}.dir-b .tabbar{background:var(--surface);border-top:1px solid var(--line-strong);box-shadow:0 -2px 8px #131a2214}.dir-b .tab{color:var(--sub-b);border-top:2px solid transparent;margin-top:-1px}.dir-b .tab-label{font-family:var(--mono-b);letter-spacing:.2em}.dir-b .tab-active{color:var(--cobalt-deep);border-top-color:var(--cobalt);font-weight:700}@media (min-width: 40rem){.dir-b .display{font-size:2.6rem}.dir-b .chart{height:13rem}}@media (prefers-reduced-motion: reduce){.dir-b .btn-primary:active{transform:none}}.dir-b .sync-button,.dir-b .month-controls button,.dir-b .block-toolbar button{background:var(--surface-alt);border-color:var(--line-strong);color:var(--cobalt-deep)}.dir-b .sync-notice{border-color:var(--danger-b);color:var(--danger-b);background:#fff}.dir-b .field-label,.dir-b .compact-field,.dir-b .settings-copy{color:var(--sub-b)}.dir-b .field-label input,.dir-b .field-label select,.dir-b .field-label textarea,.dir-b .compact-field input{border-color:var(--line-strong);background:var(--surface);color:var(--ink-b);border-radius:0}.dir-b .settings-section{border-top:2px solid var(--ink-b)}.dir-b .theme-picker select{font-family:var(--mono-b)}.dir-b .block-item{border-color:var(--line-strong);background:var(--surface);color:var(--sub-b);border-radius:0}.dir-b .archive-button,.dir-b .remove-link,.dir-b .guide-video a{color:var(--cobalt)}.dir-b .session-delete,.dir-b .danger-link{color:var(--danger-b)}.dir-b .session-delete:hover,.dir-b .danger-link:hover{color:#a61b12}.dir-b .training-data-row{border-bottom-color:var(--line-b)}.dir-b .training-data-row strong{color:var(--sub-b);font-family:var(--mono-b)}.dir-b .confirm-backdrop{background:#131a2280}.dir-b .confirm-dialog{border:2px solid var(--ink-b);background:var(--surface);box-shadow:none}.dir-b .confirm-dialog p{color:var(--sub-b)}.dir-c{--floor: #1b1815;--slab: #252119;--slab-2: #2e2a20;--chalk: #ece5d3;--sub-c: #a2988a;--faint-c: #6d665b;--line-c: #3b352a;--line-strong-c: #57503f;--ember: #e8621f;--ember-bright: #f4742e;--ember-deep: #b34410;--ok-c: #8aa86f;--warn-c: #d9a441;--danger-c: #e05d44;--sans-c: "Archivo", "Inter", "Noto Sans SC", "PingFang SC", "Microsoft YaHei", system-ui, sans-serif;--mono-c: "JetBrains Mono", "Sarasa Mono SC", ui-monospace, monospace}body:has(.dir-c){font-family:var(--sans-c);background:#14120f;background-image:none;color:#ece5d3;line-height:1.65}.dir-c.app{border-left:1px solid var(--line-c);border-right:1px solid var(--line-c);background:var(--floor)}.dir-c button:focus-visible,.dir-c select:focus-visible,.dir-c textarea:focus-visible{outline:2px solid var(--ember);outline-offset:2px}.dir-c .masthead{background:var(--slab);border-bottom:2px solid var(--line-strong-c);box-shadow:0 4px #00000059}.dir-c .brand-mark{font-family:var(--sans-c);font-weight:800;color:var(--chalk);text-shadow:none;letter-spacing:.06em;border-left:6px solid var(--ember);padding-left:.55rem}.dir-c .sync-select select{font-family:var(--mono-c);background:var(--floor);border:1px solid var(--line-strong-c);border-radius:6px;color:var(--chalk)}.dir-c.sync-offline .sync-button{border-color:var(--warn-c);color:var(--warn-c)}.dir-c.sync-error .sync-button{border-color:var(--danger-c);color:var(--danger-c)}.dir-c .dir-option{font-family:var(--sans-c);font-weight:600;background:var(--floor);border:1px solid var(--line-strong-c);border-radius:6px;color:var(--sub-c);letter-spacing:.1em}.dir-c .dir-option-active{background:var(--ember);border-color:var(--ember-deep);color:#1b1815;font-weight:800}.dir-c .display{font-family:var(--sans-c);font-weight:800;letter-spacing:.01em;color:var(--chalk);border-bottom:2px solid var(--line-strong-c)}.dir-c .cal{gap:3px;background:transparent;border:none}.dir-c .cal-weekday{background:transparent;color:var(--faint-c);font-family:var(--mono-c);font-size:.65rem;letter-spacing:.3em;padding:.4rem 0}.dir-c .cal-pad{background:transparent}.dir-c .cal-day{background:var(--slab);border:1px solid var(--line-c);border-radius:6px;color:var(--sub-c)}.dir-c .cal-num{font-family:var(--mono-c);font-weight:600}.dir-c .cal-day-trained{color:var(--chalk);background:var(--slab-2);border-color:var(--line-strong-c)}.dir-c .cal-dot{width:14px;height:3px;border-radius:2px;background:var(--ember)}.dir-c .cal-day-selected{background:var(--ember);border-color:var(--ember-deep);color:#1b1815;box-shadow:0 3px #0006}.dir-c .cal-day-selected .cal-dot{background:#1b1815}.dir-c .cal-day-selected .cal-num{color:#1b1815}.dir-c .day-entry{border-top:2px solid var(--line-strong-c)}.dir-c .day-entry-head h2{color:var(--chalk)}.dir-c .bw{font-family:var(--mono-c);color:var(--sub-c)}.dir-c .day-exercise{border-left:4px solid var(--ember);padding-left:1rem}.dir-c .day-exercise h3{font-weight:800;letter-spacing:.06em;color:var(--chalk)}.dir-c .set-ledger li{border-bottom:1px solid var(--line-c);font-family:var(--sans-c);color:var(--chalk)}.dir-c .set-idx{font-family:var(--mono-c);color:var(--faint-c)}.dir-c .set-kind{color:var(--ok-c);font-family:var(--mono-c)}.dir-c .set-load{font-family:var(--mono-c);font-weight:700}.dir-c .set-result{color:var(--sub-c)}.dir-c .set-failed .set-load{text-decoration:line-through;color:var(--faint-c)}.dir-c .set-failed .set-result{color:var(--danger-c);font-weight:700}.dir-c .ink-note{font-style:normal;color:var(--sub-c)}.dir-c .session-note{background:var(--slab);border:1px solid var(--line-c);border-left:4px solid var(--warn-c);border-radius:6px;color:var(--sub-c)}.dir-c .session-note:before{content:"手记 — ";font-weight:700;color:var(--warn-c)}.dir-c .rest-day{border-top:1px solid var(--line-c);color:var(--faint-c);letter-spacing:.06em}.dir-c .entry-row{border:1px solid var(--line-strong-c);border-radius:6px;background:var(--slab);box-shadow:0 3px #0000004d}.dir-c .entry-row:before{width:4px;border-radius:6px 0 0 6px;background:var(--ok-c)}.dir-c .entry-failed:before{background:var(--danger-c)}.dir-c .entry-idx{font-family:var(--sans-c);font-weight:800;letter-spacing:.12em;color:var(--chalk)}.dir-c .result-toggle{border:1px solid var(--ok-c);color:var(--ok-c);border-radius:999px;font-family:var(--mono-c);letter-spacing:.12em;background:transparent}.dir-c .entry-failed .result-toggle{border-color:var(--danger-c);color:var(--danger-c)}.dir-c .stepper-label{font-family:var(--mono-c);letter-spacing:.2em;text-transform:uppercase;color:var(--faint-c)}.dir-c .stepper-controls{border:1px solid var(--line-strong-c);border-radius:6px;overflow:hidden;background:var(--floor)}.dir-c .stepper-controls button{background:var(--slab-2);color:var(--ember);font-family:var(--mono-c);font-weight:700}.dir-c .stepper-controls button:active{background:var(--ember);color:#1b1815}.dir-c .stepper-value{font-family:var(--mono-c);font-weight:700;font-size:1.35rem;color:var(--chalk)}.dir-c .btn-ghost,.dir-c .btn-primary,.dir-c .btn-danger{border-radius:6px;letter-spacing:.15em;font-weight:700}.dir-c .btn-ghost{border:1px solid var(--line-strong-c);color:var(--sub-c);background:var(--slab)}.dir-c .btn-primary{background:var(--ember);border:1px solid var(--ember-deep);color:#1b1815;box-shadow:0 4px 0 var(--ember-deep)}.dir-c .btn-primary:hover{background:#f0702c}.dir-c .btn-primary:active{transform:translateY(3px);box-shadow:0 1px 0 var(--ember-deep)}.dir-c .btn-primary:disabled{background:var(--slab-2);border-color:var(--line-strong-c);color:var(--faint-c);box-shadow:none}.dir-c .btn-danger{background:var(--danger-c);border:1px solid #a93b2d;color:#1b1815}.dir-c .btn-danger:hover{background:#ef725c}.dir-c .saved-note{font-family:var(--mono-c);color:var(--ok-c)}.dir-c .chart{border-bottom:2px solid var(--line-strong-c)}.dir-c .chart-bar{width:55%;background:var(--chalk);border-radius:4px 4px 0 0;box-shadow:inset 0 4px 0 var(--ember)}.dir-c .chart-bar-failed{background:repeating-linear-gradient(45deg,var(--faint-c) 0 3px,transparent 3px 7px);box-shadow:none}.dir-c .chart-val{font-family:var(--mono-c);color:var(--chalk)}.dir-c .chart-date{font-family:var(--mono-c);color:var(--faint-c)}.dir-c .stat-verse{border-top:2px solid var(--line-strong-c);border-bottom:1px solid var(--line-c)}.dir-c .stat-label{font-family:var(--mono-c);letter-spacing:.18em;color:var(--ember);border:1px solid var(--ember);border-radius:4px}.dir-c .stat-big{font-family:var(--mono-c);letter-spacing:-.02em;color:var(--chalk)}.dir-c .stat-big small{font-family:var(--sans-c);color:var(--sub-c)}.dir-c .stat-trend{color:var(--sub-c)}.dir-c .history-head{font-family:var(--mono-c);letter-spacing:.35em;color:var(--faint-c);text-transform:uppercase}.dir-c .history-list li{border-bottom:1px solid var(--line-c)}.dir-c .history-date{font-family:var(--mono-c);color:var(--ember)}.dir-c .history-sets{font-family:var(--mono-c);color:var(--sub-c)}.dir-c .guide-meta{font-family:var(--mono-c);color:var(--faint-c);border-bottom:1px solid var(--line-c)}.dir-c .guide-h{font-family:var(--sans-c);font-weight:800;letter-spacing:.04em;color:var(--chalk)}.dir-c .guide-h:before{width:1rem;height:4px;border-radius:2px;background:var(--ember)}.dir-c .guide-p{text-align:left;color:var(--chalk)}.dir-c .callout{border:1px solid var(--line-strong-c);border-radius:6px;background:var(--slab);color:var(--sub-c)}.dir-c .callout strong{font-family:var(--mono-c);letter-spacing:.15em;text-transform:uppercase}.dir-c .callout-tip{border-left:4px solid var(--ok-c)}.dir-c .callout-tip strong{color:var(--ok-c)}.dir-c .callout-warning{border-left:4px solid var(--warn-c)}.dir-c .callout-warning strong{color:var(--warn-c)}.dir-c .guide-steps li{border-bottom:1px solid var(--line-c);color:var(--chalk)}.dir-c .guide-steps li:before{content:counter(step,decimal-leading-zero);font-family:var(--mono-c);font-weight:700;color:var(--ember);font-size:.95rem}.dir-c .guide-list li{color:var(--chalk)}.dir-c .guide-list li:before{content:"■";color:var(--ember);font-size:.55rem;top:.55rem}.dir-c .guide-edit textarea{font-family:var(--mono-c);border:1px solid var(--line-strong-c);border-radius:6px;background:var(--floor);color:var(--chalk)}.dir-c .empty-state{border:1px dashed var(--line-strong-c);border-radius:6px;background:var(--slab)}.dir-c .empty-glyph{color:var(--line-strong-c);font-family:var(--sans-c)}.dir-c .empty-state p{color:var(--faint-c)}.dir-c .tabbar{background:var(--slab-2);border-top:2px solid var(--line-strong-c);box-shadow:0 -4px #00000059}.dir-c .tab{color:var(--sub-c);border-top:3px solid transparent;margin-top:-2px}.dir-c .tab-label{font-family:var(--mono-c);letter-spacing:.2em}.dir-c .tab-active{color:var(--ember-bright);border-top-color:var(--ember);font-weight:800}@media (min-width: 40rem){.dir-c .display{font-size:2.6rem}.dir-c .chart{height:13rem}}@media (prefers-reduced-motion: reduce){.dir-c .btn-primary:active{transform:none;box-shadow:0 4px 0 var(--ember-deep)}.dir-c .stepper-controls button:active{background:var(--slab-2);color:var(--ember)}}.dir-c .sync-button,.dir-c .month-controls button,.dir-c .block-toolbar button{background:var(--slab-2);border-color:var(--line-strong-c);color:var(--ember);border-radius:6px}.dir-c .sync-notice{border-color:var(--danger-c);color:var(--danger-c);background:var(--slab);border-radius:6px}.dir-c .field-label,.dir-c .compact-field,.dir-c .settings-copy{color:var(--sub-c)}.dir-c .field-label input,.dir-c .field-label select,.dir-c .field-label textarea,.dir-c .compact-field input{border-color:var(--line-strong-c);background:var(--floor);color:var(--chalk);border-radius:6px}.dir-c .settings-section{border-top:2px solid var(--line-strong-c)}.dir-c .settings-section h2{color:var(--chalk)}.dir-c .theme-picker select{font-family:var(--mono-c)}.dir-c .block-item{border-color:var(--line-strong-c);background:var(--slab);color:var(--sub-c);border-radius:6px}.dir-c .archive-button,.dir-c .remove-link,.dir-c .guide-video a{color:var(--ember)}.dir-c .session-delete,.dir-c .danger-link{color:var(--danger-c)}.dir-c .session-delete:hover,.dir-c .danger-link:hover{color:#ef725c}.dir-c .training-data-row{border-bottom-color:var(--line-c)}.dir-c .training-data-row strong{color:var(--sub-c);font-family:var(--mono-c)}.dir-c .confirm-backdrop{background:#000000ad}.dir-c .confirm-dialog{border:2px solid var(--line-strong-c);border-radius:6px;background:var(--slab);color:var(--chalk);box-shadow:0 5px #00000080}.dir-c .confirm-dialog p{color:var(--sub-c)}.dir-c .guide-media img{border-color:var(--line-strong-c)}:root{--paper: #f4f0e6;--paper-deep: #eae4d4;--ink: #23211c;--ink-soft: #5c574b;--ink-faint: #9a937f;--cinnabar: #a63a2b;--cinnabar-deep: #842b1f;--jade: #3d6b5a;--gold: #b98a2f;--line: #d6cfbc;--serif: "Noto Serif SC", "Songti SC", "STSong", "SimSun", serif;--mono: "Sarasa Mono SC", "JetBrains Mono", ui-monospace, monospace}*{box-sizing:border-box;margin:0;padding:0}html{-webkit-text-size-adjust:100%}body{font-family:var(--serif);background:var(--paper);color:var(--ink);line-height:1.7;background-image:radial-gradient(ellipse at 20% 0%,rgba(166,58,43,.04),transparent 55%),repeating-linear-gradient(0deg,transparent 0 27px,rgba(35,33,28,.022) 27px 28px)}.visually-hidden{position:absolute;width:1px;height:1px;clip-path:inset(50%);overflow:hidden;white-space:nowrap}button{font-family:inherit;cursor:pointer}button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,a:focus-visible{outline:2px solid var(--cinnabar);outline-offset:2px}.app{max-width:30rem;margin:0 auto;min-height:100dvh;display:flex;flex-direction:column;border-left:1px solid var(--line);border-right:1px solid var(--line);background:#ffffff40}.masthead{padding:1.25rem 1.25rem .75rem;border-bottom:3px double var(--ink);position:sticky;top:0;background:var(--paper);z-index:10}.masthead-row{display:flex;align-items:baseline;justify-content:space-between;gap:.75rem}.brand{display:flex;align-items:baseline;gap:.6rem}.brand-mark{font-size:1.9rem;font-weight:900;letter-spacing:.08em;color:var(--cinnabar);writing-mode:horizontal-tb;text-shadow:1px 1px 0 rgba(166,58,43,.15)}.sync-select select{font-family:var(--mono);font-size:.72rem;padding:.35rem .5rem;min-height:44px;background:var(--paper-deep);color:var(--ink);border:1px solid var(--line);border-radius:2px}.sync-button{min-width:60px;min-height:44px;padding:.35rem .7rem;border:1px solid var(--line);background:var(--paper-deep);color:var(--ink)}.sync-button:disabled{opacity:.65;cursor:wait}.sync-offline .sync-button{border-color:var(--gold);color:var(--gold)}.sync-error .sync-button{border-color:var(--cinnabar);color:var(--cinnabar);font-weight:700}.sync-notice{width:100%;min-height:44px;margin-top:.55rem;padding:.45rem .6rem;text-align:left;border:1px solid var(--cinnabar);background:#a63a2b14;color:var(--cinnabar-deep);font-size:.76rem}.page{flex:1;padding:1.5rem 1.25rem 6.5rem}.section-head{margin-bottom:1.4rem}.month-head{display:flex;flex-direction:column;gap:.8rem}.month-controls{display:grid;grid-template-columns:44px minmax(7rem,1fr) 44px;align-items:center;border:1px solid var(--line)}.month-controls button{min-height:44px;border:0;background:var(--paper-deep);color:var(--cinnabar);font-size:1.4rem}.month-controls output{text-align:center;font-family:var(--mono);font-size:.85rem}.display{font-size:2.4rem;font-weight:900;letter-spacing:.12em;line-height:1.15;border-bottom:1px solid var(--ink);padding-bottom:.5rem}.cal{display:grid;grid-template-columns:repeat(7,1fr);gap:2px;background:var(--line);border:1px solid var(--line);margin-bottom:1.6rem}.cal-weekday{background:var(--ink);color:var(--paper);font-size:.68rem;text-align:center;padding:.3rem 0;letter-spacing:.2em}.cal-pad{background:var(--paper-deep)}.cal-day{position:relative;background:var(--paper);border:none;min-height:44px;padding:.35rem 0 .45rem;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.15rem;color:var(--ink-soft)}.cal-num{font-size:.9rem;font-family:var(--mono)}.cal-day-trained{color:var(--ink);font-weight:700;background:linear-gradient(180deg,var(--paper),var(--paper-deep))}.cal-dot{width:5px;height:5px;border-radius:50%;background:var(--cinnabar)}.cal-day-selected{background:var(--cinnabar);color:var(--paper)}.cal-day-selected .cal-dot{background:var(--paper)}.cal-day-selected .cal-num{color:var(--paper)}.day-entry{border-top:3px double var(--ink);padding-top:1rem}.day-entry-head{display:flex;align-items:flex-start;justify-content:space-between;gap:.75rem}.day-entry-head h2{font-size:1.15rem;letter-spacing:.08em;display:flex;align-items:baseline;gap:.6rem;flex-wrap:wrap}.bw{font-size:.8rem;color:var(--ink-soft);font-family:var(--mono);margin-top:.15rem}.day-exercise{margin-top:1.2rem;padding-left:.9rem;border-left:3px solid var(--cinnabar)}.day-exercise h3{font-size:1.05rem;letter-spacing:.15em;margin-bottom:.5rem}.set-ledger{list-style:none}.set-ledger li{display:grid;grid-template-columns:1.4rem 2.2rem 1fr auto;align-items:baseline;gap:.5rem;padding:.4rem 0;border-bottom:1px dashed var(--line);font-size:.92rem}.set-idx{font-family:var(--mono);color:var(--ink-faint);font-size:.75rem}.set-kind{font-size:.72rem;color:var(--jade);letter-spacing:.1em}.set-load{font-weight:700;font-family:var(--mono);font-size:.9rem}.set-result{font-size:.78rem;color:var(--ink-soft)}.set-failed .set-load{text-decoration:line-through;color:var(--ink-faint)}.set-failed .set-result{color:var(--cinnabar);font-weight:700}.ink-note{font-size:.82rem;color:var(--ink-soft);margin-top:.5rem;font-style:italic}.session-note{margin-top:1.4rem;padding:.9rem 1rem;background:var(--paper-deep);border-left:3px solid var(--gold);font-size:.88rem;color:var(--ink-soft)}.session-note:before{content:"手记 — ";font-weight:700;color:var(--gold)}.rest-day{border-top:1px dashed var(--line);padding-top:1.2rem;color:var(--ink-faint);font-size:.9rem;text-align:center;letter-spacing:.1em}.entry-list{list-style:none;display:flex;flex-direction:column;gap:1rem}.entry-row{border:1px solid var(--ink);background:#fff6;padding:.9rem 1rem 1rem;position:relative}.entry-row:before{content:"";position:absolute;left:0;top:0;bottom:0;width:4px;background:var(--jade)}.entry-failed:before{background:var(--cinnabar)}.entry-top{display:flex;justify-content:space-between;align-items:center;margin-bottom:.8rem}.entry-idx{font-weight:900;letter-spacing:.2em;font-size:.95rem}.kind-button{min-height:44px;border:0;background:transparent;color:inherit;text-align:left}.result-toggle{min-height:44px;min-width:44px;padding:.3rem 1rem;border:1px solid var(--jade);background:transparent;color:var(--jade);font-size:.82rem;letter-spacing:.15em;border-radius:999px}.entry-failed .result-toggle{border-color:var(--cinnabar);color:var(--cinnabar)}.steppers{display:flex;gap:1rem}.stepper{flex:1}.stepper-label{display:block;font-size:.68rem;letter-spacing:.25em;color:var(--ink-faint);margin-bottom:.3rem}.stepper-controls{display:grid;grid-template-columns:44px 1fr 44px;border:1px solid var(--line);background:var(--paper)}.stepper-controls button{min-height:44px;border:none;background:var(--paper-deep);font-size:1.2rem;color:var(--cinnabar-deep)}.stepper-value{display:flex;align-items:center;justify-content:center;font-family:var(--mono);font-size:1.25rem;font-weight:700}.log-actions{display:flex;gap:.75rem;margin-top:1.5rem}.btn-ghost,.btn-primary,.btn-danger{flex:1;min-height:48px;font-size:.92rem;letter-spacing:.2em;border-radius:2px}.btn-ghost{background:transparent;border:1px solid var(--ink-soft);color:var(--ink-soft)}.btn-primary{background:var(--cinnabar);border:1px solid var(--cinnabar-deep);color:var(--paper);font-weight:700;box-shadow:2px 2px 0 var(--ink)}.btn-primary:active{transform:translate(1px,1px);box-shadow:1px 1px 0 var(--ink)}.btn-primary:disabled{opacity:.55;cursor:not-allowed}.btn-danger{background:var(--cinnabar);border:1px solid var(--cinnabar-deep);color:var(--paper);font-weight:700}.btn-danger:hover{background:var(--cinnabar-deep)}.btn-danger:disabled{opacity:.55;cursor:wait}.saved-note{margin-top:.8rem;text-align:center;font-size:.8rem;color:var(--jade);font-family:var(--mono)}.remove-link,.archive-button,.session-delete,.danger-link{min-height:44px;min-width:44px;padding:.35rem .7rem;border:0;background:transparent;color:var(--cinnabar);text-decoration:underline;text-underline-offset:.2em}.session-delete{flex:0 0 auto}.session-delete:hover,.danger-link:hover{color:var(--cinnabar-deep);text-decoration-thickness:2px}.danger-link:disabled{color:var(--ink-faint);cursor:not-allowed;text-decoration:none}.auth-shell{justify-content:center;padding:1.5rem}.loading-copy{margin:auto;color:var(--ink-soft);letter-spacing:.12em}.login-panel{width:100%;padding:2rem .25rem}.settings-copy{color:var(--ink-soft);font-size:.82rem;margin:.55rem 0 .8rem}.field-label,.compact-field{display:flex;flex-direction:column;gap:.3rem;margin-top:.9rem;color:var(--ink-soft);font-size:.72rem;letter-spacing:.12em}.field-label input,.field-label select,.field-label textarea,.compact-field input{width:100%;min-height:44px;border:1px solid var(--line);background:#ffffff80;color:var(--ink);padding:.65rem .7rem;font:.9rem/1.5 var(--mono);border-radius:2px}.field-label textarea{min-height:88px;resize:vertical}.form-error{color:var(--cinnabar);font-size:.82rem;margin-top:.8rem}.full-button{width:100%;flex:none;margin-top:1rem}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:.7rem;margin-bottom:1rem}.field-label.exercise-select{margin:0 0 1rem}.compact-field{margin:0}.compact-field.bodyweight-field{margin-bottom:1rem}.note-field{margin-top:1.2rem}.field-help{color:var(--ink-faint);font-size:.76rem;margin-top:.5rem}.check-label{display:flex;align-items:center;gap:.6rem;min-height:44px;font-size:.82rem}.check-label input{width:20px;height:20px}.settings-section{border-top:3px double var(--ink);padding:1rem 0 1.5rem;margin-top:1rem}.settings-section h2{letter-spacing:.15em}.theme-picker{display:grid;grid-template-columns:1fr auto;gap:.6rem;align-items:end;margin-top:.9rem}.theme-picker .field-label{margin-top:0}.theme-apply{flex:none;min-width:6rem}.exercise-admin-list{display:grid;gap:.6rem}.exercise-admin{display:grid;grid-template-columns:1fr auto;gap:.6rem;align-items:end}.exercise-admin .field-label{margin-top:0}.manual-one-rm-save{min-width:5.5rem}.manual-one-rm-save:disabled{opacity:.45;cursor:not-allowed}.add-exercise{margin-top:1rem;border-top:1px dashed var(--line);padding-top:.5rem}.export-time{font:.75rem var(--mono);color:var(--ink-faint)}.training-data-row{display:grid;grid-template-columns:1fr auto auto;align-items:center;gap:.75rem;min-height:48px;margin-top:.45rem;border-bottom:1px dashed var(--line)}.training-data-row strong{font:.82rem var(--mono);color:var(--ink-soft)}.confirm-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:50;display:grid;place-items:center;padding:1.25rem;background:#23211c7a;overscroll-behavior:contain}.confirm-dialog{width:min(100%,25rem);padding:1.25rem;border:3px double var(--ink);background:var(--paper);box-shadow:4px 4px 0 var(--ink)}.confirm-dialog h2{font-size:1.25rem;letter-spacing:.08em}.confirm-dialog p{margin-top:.55rem;color:var(--ink-soft);font-size:.88rem}.confirm-actions{display:flex;gap:.7rem;margin-top:1.1rem}.block-toolbar{display:grid;grid-template-columns:repeat(4,1fr);gap:.35rem;margin-bottom:1rem}.block-toolbar button{min-height:44px;border:1px solid var(--line);background:var(--paper-deep);color:var(--ink-soft)}.block-list{list-style:none;display:grid;gap:.8rem}.block-item{padding:.8rem;border:1px solid var(--line);background:#ffffff40}.block-head{display:flex;justify-content:space-between;align-items:center;gap:.5rem;border-bottom:1px dashed var(--line);padding-bottom:.4rem}.block-head strong{font:.72rem var(--mono);color:var(--cinnabar)}.block-head span{display:flex}.block-head button{min-width:44px;min-height:44px;border:0;background:transparent;color:var(--ink-soft)}.guide-media{margin:1.2rem 0}.guide-media img{display:block;width:100%;max-height:32rem;object-fit:contain;border:1px solid var(--line)}.guide-media figcaption{color:var(--ink-faint);font-size:.78rem;margin-top:.35rem}.guide-video a{display:block;min-height:44px;padding:.6rem 0;color:var(--cinnabar)}.guide-divider{border:0;border-top:3px double var(--line);margin:1.5rem 0}.chart{display:flex;align-items:flex-end;gap:.9rem;height:11rem;padding:1rem .5rem 0;border-bottom:2px solid var(--ink);margin-bottom:1.6rem}.chart-col{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:flex-end;height:100%;gap:.25rem}.chart-bar{width:60%;background:linear-gradient(180deg,var(--cinnabar),var(--cinnabar-deep));border-radius:2px 2px 0 0;min-height:8px}.chart-bar-failed{background:repeating-linear-gradient(45deg,var(--ink-faint) 0 4px,transparent 4px 8px)}.chart-val{font-family:var(--mono);font-size:.68rem;font-weight:700}.chart-date{font-family:var(--mono);font-size:.65rem;color:var(--ink-faint)}.stat-verse{border-top:3px double var(--ink);border-bottom:1px solid var(--line);padding:1rem 0;margin-bottom:1.6rem;display:flex;flex-direction:column;gap:.7rem}.stat-line{display:flex;align-items:baseline;gap:1rem}.stat-label{flex-shrink:0;font-size:.72rem;letter-spacing:.3em;color:var(--cinnabar);writing-mode:horizontal-tb;border:1px solid var(--cinnabar);padding:.1rem .4rem}.stat-big{font-size:1.9rem;font-weight:900;font-family:var(--mono)}.stat-big small{font-size:.85rem;font-family:var(--serif);font-weight:400;color:var(--ink-soft)}.stat-trend{font-size:.88rem;color:var(--ink-soft)}.history-head{font-size:1rem;letter-spacing:.4em;margin-bottom:.6rem;color:var(--ink-soft)}.history-list{list-style:none}.history-list li{display:flex;gap:.9rem;padding:.55rem 0;border-bottom:1px dashed var(--line);font-size:.85rem;align-items:baseline}.history-date{font-family:var(--mono);color:var(--cinnabar);flex-shrink:0;font-weight:700}.history-sets{font-family:var(--mono);color:var(--ink-soft);font-size:.78rem}.guide-meta{font-family:var(--mono);font-size:.7rem;color:var(--ink-faint);margin-bottom:1.2rem;padding-bottom:.6rem;border-bottom:1px dashed var(--line)}.guide-h{font-size:1.25rem;letter-spacing:.15em;margin:1.6rem 0 .6rem;display:flex;align-items:center;gap:.6rem}.guide-h:before{content:"";width:1.2rem;height:3px;background:var(--cinnabar)}.guide-p{font-size:.95rem;text-align:justify}.callout{margin:1.1rem 0;padding:.9rem 1rem;border:1px solid var(--line);background:var(--paper-deep);font-size:.88rem}.callout strong{display:block;letter-spacing:.2em;margin-bottom:.3rem;font-size:.8rem}.callout-tip{border-left:4px solid var(--jade)}.callout-tip strong{color:var(--jade)}.callout-warning{border-left:4px solid var(--cinnabar)}.callout-warning strong{color:var(--cinnabar)}.guide-steps{margin:.8rem 0;list-style:none;counter-reset:step}.guide-steps li{counter-increment:step;padding:.5rem 0 .5rem 2.4rem;position:relative;border-bottom:1px dashed var(--line);font-size:.92rem}.guide-steps li:before{content:counter(step,cjk-ideographic);position:absolute;left:.4rem;top:.5rem;font-weight:900;color:var(--cinnabar);font-size:1.05rem}.guide-list{list-style:none;margin:.6rem 0}.guide-list li{padding:.35rem 0 .35rem 1.4rem;position:relative;font-size:.92rem}.guide-list li:before{content:"◆";position:absolute;left:.2rem;color:var(--gold);font-size:.6rem;top:.7rem}.guide-edit-btn{width:100%;margin-top:2rem;flex:none}.guide-edit textarea{width:100%;font-family:var(--mono);font-size:.85rem;line-height:1.8;padding:1rem;border:1px solid var(--ink);background:#ffffff80;color:var(--ink);resize:vertical;border-radius:2px}.empty-state{text-align:center;padding:3rem 1.5rem;border:1px dashed var(--ink-faint);margin:1.5rem 0}.empty-glyph{display:block;font-size:3rem;font-weight:900;color:var(--line);margin-bottom:.8rem;letter-spacing:.2em}.empty-state p{color:var(--ink-faint);font-size:.9rem}.tabbar{position:fixed;bottom:0;left:50%;transform:translate(-50%);width:100%;max-width:30rem;display:grid;grid-template-columns:repeat(5,1fr);background:var(--paper);border-top:1px solid var(--line);box-shadow:0 -2px 8px #23211c0f;padding-bottom:env(safe-area-inset-bottom)}.tab{min-height:56px;background:transparent;border:none;border-top:3px solid transparent;margin-top:-1px;color:var(--ink-soft);display:flex;align-items:center;justify-content:center}.tab-label{font-size:.9rem;font-weight:600;letter-spacing:.18em}.tab-active{color:var(--cinnabar-deep);font-weight:900;border-top-color:var(--cinnabar)}@media (min-width: 40rem){.display{font-size:2.9rem}.chart{height:13rem}}@media (max-width: 24rem){.page{padding-left:1rem;padding-right:1rem}.steppers,.log-actions{flex-direction:column}.log-actions>*{width:100%;flex:none}.block-toolbar{grid-template-columns:repeat(2,1fr)}}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}.btn-primary:active{transform:none}}
