:root{--bg: #0b0d10;--surface: #161a20;--surface-2: #1e242c;--border: #2a313b;--text: #f4f7fa;--text-dim: #9aa5b4;--accent: #4da3ff;--danger: #ff6b6b;--shadow: 0 1px 3px rgb(0 0 0 / .5);--tap: 44px;--gutter: 16px;--tabbar-h: 60px;color-scheme:dark;-webkit-text-size-adjust:100%}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body{margin:0;background:var(--bg);color:var(--text);font:15px/1.45 -apple-system,BlinkMacSystemFont,Segoe UI,Roboto,system-ui,sans-serif;overscroll-behavior-y:none}button{font:inherit;color:inherit;background:none;border:none;cursor:pointer;min-height:var(--tap)}.app{position:relative;max-width:560px;margin:0 auto;min-height:100dvh;padding-bottom:calc(var(--tabbar-h) + env(safe-area-inset-bottom))}.screen{padding-inline:var(--gutter);padding-block:20px 8px}.screen-title{margin:0 0 2px;font-size:26px;font-weight:700;letter-spacing:-.02em}.screen-sub{margin:0 0 16px;color:var(--text-dim);font-size:13px}.tabbar{position:fixed;bottom:0;left:0;right:0;z-index:20;display:flex;background:color-mix(in srgb,var(--bg) 92%,transparent);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-top:1px solid var(--border);padding-bottom:env(safe-area-inset-bottom)}.tabbar-inner{display:flex;width:100%;max-width:560px;margin:0 auto}.tab{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;height:var(--tabbar-h);color:var(--text-dim);font-size:10.5px;font-weight:600;letter-spacing:.01em}.tab[aria-selected=true]{color:var(--accent)}.tab svg{width:22px;height:22px}.toolbar{display:flex;gap:8px;padding-inline:var(--gutter);padding-bottom:12px}.chip{display:inline-flex;align-items:center;gap:6px;min-height:var(--tap);padding:0 14px;border:1px solid var(--border);border-radius:999px;background:var(--surface);font-size:13.5px;font-weight:600;white-space:nowrap}.chip[data-active=true]{border-color:var(--accent);color:var(--accent);background:color-mix(in srgb,var(--accent) 14%,var(--surface))}.chip-count{min-width:18px;height:18px;padding:0 5px;border-radius:9px;background:var(--accent);color:#04121f;font-size:11px;font-weight:700;line-height:18px;text-align:center}.list{padding-inline:var(--gutter)}.card{display:block;width:100%;text-align:left;padding:13px 14px;margin-bottom:8px;background:var(--surface);border:1px solid var(--border);border-radius:14px;box-shadow:var(--shadow)}.card:active{background:var(--surface-2)}.card-top{display:flex;align-items:center;gap:8px;margin-bottom:7px}.sport-dot{width:9px;height:9px;border-radius:50%;flex:none}.card-sport{font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.06em}.card-date{margin-left:auto;color:var(--text-dim);font-size:12px;font-variant-numeric:tabular-nums}.card-name{margin-bottom:9px;font-size:15px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.metrics{display:flex;gap:14px}.metric-label{color:var(--text-dim);font-size:10.5px;text-transform:uppercase;letter-spacing:.05em}.metric-value{font-size:15px;font-weight:600;font-variant-numeric:tabular-nums}.skeleton{height:92px;margin-bottom:8px;border-radius:14px;background:linear-gradient(100deg,var(--surface) 30%,var(--surface-2) 50%,var(--surface) 70%);background-size:220% 100%;animation:shimmer 1.4s infinite linear}@keyframes shimmer{to{background-position:-120% 0}}@media(prefers-reduced-motion:reduce){.skeleton{animation:none}}.sheet-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:30;background:#0009;animation:fade .18s ease-out}.sheet{position:fixed;bottom:0;left:0;right:0;z-index:31;max-height:85dvh;overflow-y:auto;margin:0 auto;max-width:560px;padding:8px var(--gutter) calc(20px + env(safe-area-inset-bottom));background:var(--surface);border-radius:20px 20px 0 0;border-top:1px solid var(--border);animation:rise .24s cubic-bezier(.32,.72,0,1)}.sheet-grip{width:38px;height:4px;margin:6px auto 14px;border-radius:2px;background:var(--border)}.sheet h2{margin:0 0 14px;font-size:19px;font-weight:700}.sheet-group{margin-bottom:20px}.sheet-group>h3{margin:0 0 9px;color:var(--text-dim);font-size:11.5px;font-weight:700;text-transform:uppercase;letter-spacing:.07em}.options{display:flex;flex-wrap:wrap;gap:8px}.sheet-actions{display:flex;gap:10px}.btn{flex:1;min-height:var(--tap);border-radius:12px;font-weight:700;font-size:15px}.btn-primary{background:var(--accent);color:#04121f}.btn-ghost{border:1px solid var(--border);color:var(--text-dim)}@keyframes fade{0%{opacity:0}}@keyframes rise{0%{transform:translateY(100%)}}@media(prefers-reduced-motion:reduce){.sheet,.sheet-backdrop{animation:none}}.detail-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:8px;margin-bottom:20px}.detail-cell{padding:11px 13px;background:var(--surface);border:1px solid var(--border);border-radius:12px}.detail-cell .metric-value{font-size:19px}.load-source{padding:13px 14px;border-radius:12px;background:var(--surface);border:1px solid var(--border);font-size:13.5px;color:var(--text-dim)}.load-source strong{color:var(--text)}.empty{padding:48px var(--gutter);text-align:center;color:var(--text-dim)}.banner{display:flex;align-items:center;gap:9px;margin:0 var(--gutter) 12px;padding:10px 13px;border-radius:11px;background:color-mix(in srgb,var(--accent) 12%,var(--surface));border:1px solid color-mix(in srgb,var(--accent) 35%,var(--border));color:var(--text);font-size:12.5px}.banner[data-tone=error]{background:color-mix(in srgb,var(--danger) 12%,var(--surface));border-color:color-mix(in srgb,var(--danger) 35%,var(--border))}.login{display:flex;flex-direction:column;justify-content:center;min-height:100dvh;padding:var(--gutter);gap:12px;max-width:400px;margin:0 auto}.login h1{margin:0 0 6px;font-size:27px;letter-spacing:-.02em}.field{width:100%;min-height:var(--tap);padding:0 14px;background:var(--surface);border:1px solid var(--border);border-radius:12px;color:var(--text);font:inherit}.field:focus-visible,.chip:focus-visible,.card:focus-visible,.tab:focus-visible,.btn:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.stat-row{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-bottom:14px}.stat{padding:11px 12px;background:var(--surface);border:1px solid var(--border);border-radius:13px}.stat-label{display:flex;align-items:center;gap:5px;margin-bottom:5px;color:var(--text-dim);font-size:10.5px;font-weight:700;text-transform:uppercase;letter-spacing:.05em}.stat-value{font-size:25px;font-weight:700;letter-spacing:-.02em;line-height:1.1}.stat-hint{margin-top:1px;color:var(--text-dim);font-size:10.5px}.charts{padding-inline:var(--gutter);transition:opacity .18s ease-out}.chart-card{margin:0 0 12px;padding:13px 6px 8px 2px;background:var(--surface);border:1px solid var(--border);border-radius:14px}.chart-card figcaption{padding-inline:11px;margin-bottom:8px;color:var(--text-dim);font-size:12px;font-weight:600}.data-table{width:100%;border-collapse:collapse;font-size:13px;font-variant-numeric:tabular-nums}.data-table th{padding:7px 6px;color:var(--text-dim);font-size:10.5px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;text-align:right;border-bottom:1px solid var(--border)}.data-table th:first-child,.data-table td:first-child{text-align:left}.data-table td{padding:8px 6px;text-align:right;border-bottom:1px solid var(--border)}.recharts-wrapper .recharts-surface{touch-action:pan-y}.hero{padding:18px 16px 16px;margin-bottom:12px;background:var(--surface);border:1px solid var(--border);border-radius:16px}.hero-label{color:var(--text-dim);font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.07em}.hero-value{font-size:58px;font-weight:700;line-height:1;letter-spacing:-.03em}.hero-conf{color:var(--text-dim);font-size:12px}.conf-bar{height:4px;margin-bottom:7px;border-radius:2px;background:var(--surface-2);overflow:hidden}.conf-bar span{display:block;height:100%;background:var(--accent);border-radius:2px}.hero[data-empty=true] .hero-none{margin:8px 0 0;color:var(--text-dim);font-size:13.5px;line-height:1.5}.cell-sub{margin-top:2px;color:var(--text-dim);font-size:11.5px}.feeling{padding:15px 16px 13px;margin-bottom:12px;background:var(--surface);border:1px solid var(--border);border-radius:16px}.feeling h2{margin:0 0 14px;font-size:16px;font-weight:700}.scale{margin-bottom:14px}.scale .metric-label{margin-bottom:7px}.scale-row{display:grid;grid-template-columns:repeat(5,1fr);gap:7px}.scale-btn{height:52px;border:1px solid var(--border);border-radius:12px;background:var(--surface-2);font-size:17px;font-weight:700}.scale-btn[data-active=true]{border-color:var(--accent);background:color-mix(in srgb,var(--accent) 20%,var(--surface-2));color:var(--accent)}.feeling-state{margin:0;color:var(--text-dim);font-size:12.5px}.feeling-state[data-tone=error]{color:var(--danger)}.sync-line{margin:4px 0 0;color:var(--text-dim);font-size:12px;text-align:center}.hero-chevron{color:var(--text-dim);font-weight:400}button.hero,button.detail-cell{display:block;width:100%;text-align:left}button.hero:active,button.detail-cell:active{background:var(--surface-2)}.metric-head{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap;margin-bottom:14px}.metric-head-value{font-size:30px;font-weight:700;letter-spacing:-.02em}.metric-head-base{color:var(--text-dim);font-size:12.5px}.impact{display:inline-block;margin-left:6px;padding:1px 6px;border-radius:6px;font-size:11px;font-weight:700;font-variant-numeric:tabular-nums;white-space:nowrap;vertical-align:middle}.impact[data-tone=up]{color:#4ade80;background:#4ade8021}.impact[data-tone=down]{color:#f87171;background:#f8717121}.hero-line,.metric-line{display:flex;align-items:baseline;gap:2px;flex-wrap:wrap}.hero-line .hero-value{margin-bottom:0}.hero-line{margin:2px 0 10px}.stat-hint .impact{margin-left:4px;padding:0 4px;font-size:10px}.cal-nav{display:flex;align-items:center;justify-content:space-between;padding-inline:var(--gutter);margin-bottom:6px}.cal-arrow{width:var(--tap);height:var(--tap);border-radius:12px;color:var(--text-dim);font-size:26px;line-height:1}.cal-arrow:active{background:var(--surface-2)}.cal-month{flex:1;font-size:17px;font-weight:650;letter-spacing:-.01em}.cal-wrap{padding-inline:var(--gutter);touch-action:pan-y}.cal-head,.cal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:4px}.cal-head{margin-bottom:4px}.cal-head span{text-align:center;font-size:11px;font-weight:600;color:var(--text-dim)}.cal-day{min-height:52px;padding:4px 0 5px;display:flex;flex-direction:column;align-items:center;gap:4px;border-radius:10px;background:var(--surface);border:1px solid transparent}.cal-day[data-empty]{background:transparent}.cal-day[data-today]{border-color:var(--accent)}.cal-day:active{background:var(--surface-2)}.cal-pad{min-height:52px}.cal-num{font-size:12px;font-weight:600;color:var(--text-dim)}.cal-day:not([data-empty]) .cal-num{color:var(--text)}.cal-dots{display:flex;align-items:center;justify-content:center;flex-wrap:wrap;gap:3px;min-height:14px}.cal-dot{width:8px;height:8px;border-radius:50%;flex:none}.cal-dot[data-planned]{background:none;border:1.5px solid var(--text-dim)}.cal-more{font-size:10px;color:var(--text-dim)}.cal-legend{display:flex;flex-wrap:wrap;gap:6px 14px;padding:14px var(--gutter) 0;font-size:12px;color:var(--text-dim)}.cal-legend-item{display:inline-flex;align-items:center;gap:6px}.cal-row{display:grid;grid-template-columns:10px 1fr;grid-template-areas:"dot name" ". meta";align-items:center;gap:2px 10px;width:100%;text-align:left;padding:10px 0;border-bottom:1px solid var(--border)}.cal-row:last-child{border-bottom:none}.cal-row .sport-dot{grid-area:dot}.cal-row-name{grid-area:name;font-weight:600}.cal-row-meta{grid-area:meta;font-size:12.5px;color:var(--text-dim)}.cal-row[data-planned] .cal-row-name{font-weight:500}.plan-form{display:flex;flex-direction:column;gap:14px}.plan-field{display:flex;flex-direction:column;gap:6px}.plan-field>span{font-size:12px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--text-dim)}.plan-inline{display:flex;align-items:center;gap:10px}.plan-inline .field{flex:1}.plan-unit{font-size:13px;color:var(--text-dim)}.plan-hint{margin:0;padding:10px 12px;border-radius:10px;background:var(--surface-2);font-size:12.5px;line-height:1.45;color:var(--text-dim)}.plan-blocks{display:flex;flex-direction:column;gap:12px}.plan-block{border:1px solid var(--border);border-radius:12px;padding:10px 10px 6px;display:flex;flex-direction:column;gap:8px}.plan-block-head{display:flex;align-items:center;gap:8px}.plan-block-title{flex:1;font-size:12px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--text-dim)}.plan-reps select,.plan-step-unit,.plan-step-target{min-height:var(--tap);padding:0 8px;border-radius:10px;border:1px solid var(--border);background:var(--surface-2);color:var(--text);font:inherit;font-size:13px;max-width:100%}.plan-step{display:grid;grid-template-columns:3.6rem 5rem 1fr var(--tap);align-items:center;gap:6px}.plan-step-value{min-width:0;text-align:center;padding-inline:4px}.plan-step-target{min-width:0}.plan-x{width:var(--tap);height:var(--tap);border-radius:10px;color:var(--text-dim);font-size:15px}.plan-x:active{background:var(--surface-2)}.plan-add-step{align-self:flex-start;padding-inline:4px;font-size:13px}.plan-reuse{border:1px solid var(--border);border-radius:12px;max-height:210px;overflow-y:auto}.plan-reuse-line{display:flex;flex-wrap:wrap;align-items:stretch;border-bottom:1px solid var(--border)}.plan-reuse-line:last-child{border-bottom:none}.plan-reuse-row{display:flex;flex:1;min-width:0;flex-direction:column;align-items:flex-start;gap:2px;text-align:left;padding:10px 12px}.plan-reuse-del{flex:none;width:var(--tap);min-height:var(--tap);color:var(--text-dim);font-size:15px}.plan-reuse-ask{flex-basis:100%;padding:0 12px;font-size:12.5px;line-height:1.45;color:var(--text-dim)}.plan-reuse-actions{display:flex;gap:8px;padding:8px 12px 10px}.plan-reuse-name{font-weight:600}.plan-reuse-meta{font-size:12px;color:var(--text-dim)}.plan-preview summary{min-height:var(--tap);display:flex;align-items:center;font-size:13px;color:var(--text-dim);cursor:pointer}.plan-preview pre{margin:0;padding:10px 12px;border-radius:10px;background:var(--surface-2);font-size:12.5px;line-height:1.5;white-space:pre-wrap;overflow-x:auto}.plan-text{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:13px;line-height:1.5;resize:vertical}.plan-check{display:flex;align-items:center;gap:10px;min-height:var(--tap);font-size:13.5px;color:var(--text-dim)}.plan-check input{width:20px;height:20px;accent-color:var(--accent)}.cal-add{position:fixed;right:max(var(--gutter),calc(50vw - 280px + var(--gutter)));bottom:calc(var(--tabbar-h) + 14px + env(safe-area-inset-bottom));min-height:var(--tap);padding:0 18px;border-radius:999px;background:var(--accent);color:#06121f;font-weight:650;box-shadow:0 4px 14px #00000073}.cal-add:active{filter:brightness(.92)}.intensity{padding-inline:var(--gutter);display:flex;flex-direction:column;gap:12px}.block-title{margin:4px 0 0;font-size:16px;font-weight:650;letter-spacing:-.01em}.intensity-row{display:flex;flex-direction:column;gap:5px}.intensity-head{display:flex;justify-content:space-between;align-items:baseline;gap:10px}.intensity-label{font-size:13.5px;font-weight:600}.intensity-total{font-size:12px;color:var(--text-dim)}.intensity-bar{position:relative;display:flex;height:18px;border-radius:5px;overflow:hidden;background:var(--surface-2)}.intensity-seg{height:100%}.intensity-mark{position:absolute;top:-2px;bottom:-2px;width:2px;margin-left:-1px;background:var(--text);opacity:.75}.intensity-values{display:flex;justify-content:space-between;font-size:12px;font-variant-numeric:tabular-nums}.intensity-legend{display:flex;flex-wrap:wrap;gap:6px 14px;font-size:12px;color:var(--text-dim)}.intensity-note{margin:0;font-size:12px;line-height:1.45;color:var(--text-dim)}.style-tag{display:inline-flex;align-items:center;gap:5px;padding:1px 7px;border-radius:999px;border:1px solid currentColor;font-size:11px;font-weight:650;letter-spacing:.01em}.help-btn{position:absolute;top:18px;right:var(--gutter);width:var(--tap);height:var(--tap);border-radius:50%;border:1px solid var(--border);background:var(--surface);color:var(--text-dim);font-size:17px;font-weight:650;z-index:5}.help-btn:active{background:var(--surface-2);color:var(--text)}.help-chain{margin:8px 0 12px;padding-left:20px;font-size:13px;line-height:1.6;color:var(--text-dim)}.help-chain li::marker{color:var(--accent);font-weight:650}.help-note,.help-intro{margin:0 0 12px;font-size:13px;line-height:1.55;color:var(--text-dim)}.help-legend{display:flex;flex-wrap:wrap;gap:8px 12px;padding:10px 12px;margin-bottom:14px;border-radius:12px;background:var(--surface-2);font-size:12px;color:var(--text-dim)}.help-legend-item{display:inline-flex;align-items:center;gap:6px}.help-legend-item .style-tag{flex:none}.help-section{border-top:1px solid var(--border)}.help-section:last-of-type{border-bottom:1px solid var(--border)}.help-head{display:flex;align-items:center;justify-content:space-between;width:100%;padding:4px 0;text-align:left}.help-tab{font-size:15.5px;font-weight:650}.help-chevron{color:var(--text-dim);font-size:20px;transition:transform .18s ease}.help-chevron[data-open]{transform:rotate(90deg)}@media(prefers-reduced-motion:reduce){.help-chevron{transition:none}}.help-body{padding-bottom:10px}.help-entry{padding:10px 0;border-top:1px dashed var(--border)}.help-entry:first-of-type{border-top:none}.help-entry-head{display:flex;align-items:center;flex-wrap:wrap;gap:8px;margin-bottom:4px}.help-name{font-size:14px;font-weight:650}.help-what{margin:0;font-size:13px;line-height:1.5}.help-how{margin:6px 0 0;padding:8px 10px;border-radius:8px;background:var(--surface-2);font-size:12.5px;line-height:1.5;color:var(--text-dim)}.help-how>span{font-weight:700;color:var(--text)}.chart-touch{position:relative;touch-action:pan-y}.chart-touch svg:focus,.chart-touch svg :focus{outline:none}.chart-rule{position:absolute;width:1px;background:var(--text-dim);pointer-events:none}.chart-tip{position:absolute;z-index:2;padding:7px 9px;border-radius:10px;border:1px solid var(--border);background:var(--surface-2);box-shadow:var(--shadow);font-size:12.5px;pointer-events:none}.chart-tip-title{margin-bottom:3px;font-weight:650;color:var(--text)}.chart-tip-row{display:flex;align-items:center;gap:6px}.chart-tip-label{flex:1;color:var(--text-dim)}.chart-tip-value{font-variant-numeric:tabular-nums;font-weight:600}.chart-tip-parts{margin-top:3px;font-size:11.5px;line-height:1.35;color:var(--text-dim)}.data-table tr[data-doubtful] td{color:var(--text-dim)}.split-shift{display:flex;flex-direction:column;gap:10px;padding:12px;border-radius:12px;border:1px solid var(--border)}
