:root{--ink: #0F1B2D;--ink-soft: #4E5968;--muted: #5B6675;--bg: #F2F4F7;--card: #FFFFFF;--line: #EEF1F5;--line-strong: #C3CAD4;--chip: #EEF1F5;--lime: #C6F432;--lime-deep: #9BCB0C;--flame: #E8590C;--shield: #3B6FD8;--danger: #B42318;--radius-card: 20px;--radius-control: 16px;--safe-top: env(safe-area-inset-top, 0px);--safe-bottom: env(safe-area-inset-bottom, 0px);--font: -apple-system, BlinkMacSystemFont, "SF Pro Text", "Segoe UI", Roboto, system-ui, sans-serif;color-scheme:light}*{box-sizing:border-box}html,body{margin:0;background:var(--bg);color:var(--ink);font-family:var(--font);-webkit-text-size-adjust:100%}body{min-height:100dvh}button{font:inherit;color:inherit;background:none;border:0;padding:0;cursor:pointer;-webkit-tap-highlight-color:transparent}button:disabled{cursor:default}input{font:inherit}:focus-visible{outline:3px solid var(--shield);outline-offset:2px}@media (prefers-reduced-motion: reduce){*{transition:none!important;animation:none!important}}.app{max-width:520px;margin:0 auto;min-height:100dvh;display:flex;flex-direction:column}.page{flex:1;padding:0 16px calc(var(--safe-bottom) + 170px)}.page.no-dock{padding-bottom:calc(var(--safe-bottom) + 96px)}.top{padding:calc(var(--safe-top) + 18px) 4px 12px;display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.top h1{margin:0;font-size:30px;font-weight:800;letter-spacing:-.02em;line-height:1.1}.kicker{font-size:13px;font-weight:600;color:var(--ink-soft)}.sub{font-size:14px;color:var(--ink-soft)}.section-label{font-size:13px;font-weight:700;color:var(--ink-soft);padding:20px 4px 8px}.badges{display:flex;align-items:center;gap:8px;flex:none}.badge{display:flex;align-items:center;gap:5px;height:36px;padding:0 12px;border-radius:999px;background:var(--card);font-size:14px;font-weight:700}.icon-btn{width:44px;height:44px;border-radius:999px;background:var(--card);display:flex;align-items:center;justify-content:center}.card{background:var(--card);border-radius:var(--radius-card)}.card-head{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:14px 16px 8px}.card-title{font-size:13px;font-weight:700;color:var(--ink-soft)}.card-foot{display:flex;justify-content:space-between;align-items:center;padding:8px 16px 12px;font-size:13px;color:var(--muted);min-height:40px}.link-btn{font-weight:700;color:var(--ink);min-height:40px}.row{display:flex;align-items:center;gap:8px;min-height:56px;padding:0 10px 0 16px;border-top:1px solid var(--line)}.row:first-child{border-top:0}.row-tap{flex:1;min-width:0;display:flex;align-items:center;gap:14px;min-height:56px;text-align:left}.row-name{flex:1;min-width:0;font-size:16px;font-weight:600;line-height:1.25;transition:color .1s}.row-target{font-size:14px;color:var(--muted);font-variant-numeric:tabular-nums;padding-right:6px}.row.is-done .row-name{color:var(--muted)}.row-stack{flex:1;min-width:0;display:flex;flex-direction:column;justify-content:center;min-height:64px;text-align:left}.row-stack .row-name{flex:none}.row-stack .row-target{padding:2px 0 0;font-size:13px}.box{width:28px;height:28px;border-radius:9px;border:2px solid var(--line-strong);display:flex;align-items:center;justify-content:center;flex:none;transition:background .1s,border-color .1s}.box svg{opacity:0;transform:scale(.6);transition:opacity .1s,transform .12s}.is-done .box,.box.is-done{background:var(--lime);border-color:var(--lime)}.is-done .box svg,.box.is-done svg{opacity:1;transform:scale(1)}.dots{display:flex;gap:6px;flex:none}.dot{width:36px;height:36px;border-radius:999px;border:2px solid var(--line-strong);display:flex;align-items:center;justify-content:center;font-size:13px;font-weight:700;color:var(--ink-soft);transition:background .1s,border-color .1s}.dot.is-done{background:var(--lime);border-color:var(--lime);color:var(--ink)}.timer-btn{display:flex;align-items:center;gap:5px;height:36px;padding:0 11px;border-radius:999px;background:var(--ink);color:#fff;font-size:13px;font-weight:700;flex:none}.segmented{display:flex;background:var(--chip);border-radius:999px;padding:3px}.segmented button{padding:0 14px;height:32px;border-radius:999px;font-size:13px;font-weight:600;color:var(--ink-soft)}.segmented button[aria-pressed=true]{background:var(--card);color:var(--ink);box-shadow:0 1px 3px #0f1b2d26}.cardio{display:flex;align-items:center;margin-top:14px;padding:0 12px 0 16px;min-height:72px}.cardio-open{flex:1;min-width:0;display:flex;align-items:center;gap:14px;min-height:72px;text-align:left}.cardio-icon{width:40px;height:40px;border-radius:12px;background:var(--chip);display:flex;align-items:center;justify-content:center;flex:none}.cardio-check{width:52px;height:60px;display:flex;align-items:center;justify-content:flex-end;flex:none}.ellipsis{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.habits{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.habit{display:flex;align-items:center;gap:12px;background:var(--card);border-radius:16px;padding:12px;min-height:64px;text-align:left}.habit .box{width:24px;height:24px;border-radius:8px}.habit-name{font-size:15px;font-weight:600;line-height:1.2}.habit-tag{font-size:12px;color:var(--muted);margin-top:2px}.locked .card,.locked .habits{opacity:.55;pointer-events:none}.dock{position:fixed;left:0;right:0;bottom:0;z-index:10}.dock-inner{max-width:520px;margin:0 auto}.end-bar{position:fixed;left:0;right:0;bottom:calc(var(--safe-bottom) + 64px);z-index:9;pointer-events:none}.end-bar-inner{max-width:520px;margin:0 auto;padding:14px 16px 8px;background:linear-gradient(to bottom,rgba(242,244,247,0),var(--bg) 35%);pointer-events:auto}.locked .end-bar{opacity:1;pointer-events:none}.btn{width:100%;height:54px;border-radius:var(--radius-control);font-size:16px;font-weight:700;display:flex;align-items:center;justify-content:center;gap:8px}.btn-primary{background:var(--ink);color:#fff}.btn-lime{background:var(--lime);color:var(--ink)}.btn-outline{background:var(--card);color:var(--ink);border:2px solid var(--ink)}.btn-quiet{background:var(--chip);color:var(--ink)}.btn-danger{background:var(--danger);color:#fff}.btn:disabled{opacity:.6}.tabbar{display:flex;background:var(--card);border-top:1px solid #E3E7EC;padding:0 8px}.tab{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;min-height:calc(64px + var(--safe-bottom));padding:0 0 var(--safe-bottom);font-size:11px;font-weight:600;color:var(--muted)}.tab:active{opacity:.6}.tab[aria-current=page]{color:var(--ink)}.scrim{position:fixed;top:0;right:0;bottom:0;left:0;z-index:30;background:#0f1b2d73;display:flex;align-items:flex-end;justify-content:center}.scrim.center{align-items:center;padding:24px}.sheet{width:100%;max-width:520px;background:var(--card);border-radius:28px 28px 0 0;padding:20px 20px calc(var(--safe-bottom) + 24px);display:flex;flex-direction:column;gap:14px;max-height:90dvh;overflow-y:auto}.dialog{width:100%;max-width:400px;background:var(--card);border-radius:28px;padding:28px 22px 22px;display:flex;flex-direction:column;align-items:center;gap:8px;text-align:center}.sheet-head{display:flex;justify-content:space-between;align-items:center;gap:12px}.sheet-title{font-size:20px;font-weight:800}.close-btn{width:44px;height:44px;border-radius:999px;background:var(--chip);display:flex;align-items:center;justify-content:center;flex:none}.btn-row{display:flex;gap:10px}.btn-row .btn{flex:1}.btn-row .btn.narrow{flex:0 0 110px}.field{display:flex;flex-direction:column;gap:6px;font-size:14px;font-weight:600;color:var(--ink-soft)}.field input{height:52px;border:1px solid var(--line-strong);border-radius:14px;padding:0 14px;font-size:17px;font-weight:500;color:var(--ink);background:var(--card);width:100%}.field input:focus{outline:2px solid var(--ink);outline-offset:1px}.timer-ring{position:relative;width:220px;height:220px;margin:4px auto 0}.timer-ring .readout{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;align-items:center;justify-content:center}.timer-time{font-size:56px;font-weight:800;font-variant-numeric:tabular-nums;letter-spacing:-.02em}.toast{position:fixed;left:16px;right:16px;bottom:calc(var(--safe-bottom) + 150px);z-index:40;max-width:488px;margin:0 auto;background:var(--ink);color:#fff;border-radius:14px;padding:14px 16px;font-size:14px;font-weight:600;text-align:center}.notice{background:var(--card);border-radius:var(--radius-card);padding:18px;font-size:15px;line-height:1.45;color:var(--ink-soft)}.error-text{color:var(--danger);font-size:14px;font-weight:600}.center-screen{min-height:100dvh;display:flex;flex-direction:column;justify-content:center;padding:calc(var(--safe-top) + 24px) 24px calc(var(--safe-bottom) + 24px);gap:14px}.brand{display:flex;align-items:center;gap:10px;font-size:15px;font-weight:800;letter-spacing:.14em}.brand-mark{width:40px;height:40px;border-radius:12px;background:var(--ink);display:flex;align-items:center;justify-content:center}.spinner-wrap{min-height:60dvh;display:flex;align-items:center;justify-content:center;color:var(--ink-soft);font-size:15px}.ob{min-height:100dvh;display:flex;flex-direction:column}.ob-head{padding:calc(var(--safe-top) + 20px) 20px 14px;display:flex;flex-direction:column;gap:14px}.ob-progress{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:6px}.ob-progress i{display:block;height:5px;border-radius:999px;background:#dce1e7}.ob-progress i.on{background:var(--lime-deep)}.ob-body{flex:1;padding:0 16px 24px}.ob-body h1{margin:2px 0 6px;font-size:28px;font-weight:800;letter-spacing:-.02em;line-height:1.15}.lead{margin:0;font-size:15px;color:var(--ink-soft);line-height:1.45}.ob-foot{position:sticky;bottom:0;display:flex;gap:10px;padding:10px 16px calc(var(--safe-bottom) + 16px);background:var(--bg);border-top:1px solid #E3E7EC}.ob-foot .btn.back{flex:0 0 100px;background:var(--card);border:1px solid var(--line-strong)}.choice{display:flex;gap:12px;width:100%;text-align:left;background:var(--card);border-radius:18px;padding:14px;margin-top:10px;border:2px solid transparent}.choice[aria-checked=true]{border-color:var(--ink)}.radio{width:22px;height:22px;border-radius:999px;border:2px solid var(--line-strong);flex:none;margin-top:2px;display:flex;align-items:center;justify-content:center}.choice[aria-checked=true] .radio{border-color:var(--ink)}.choice[aria-checked=true] .radio:after{content:"";width:10px;height:10px;border-radius:999px;background:var(--ink)}.week{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:6px;margin-top:18px}.week button{display:flex;flex-direction:column;align-items:center;gap:6px;min-width:0}.week small{font-size:12px;font-weight:700;color:var(--ink-soft)}.week b{width:100%;height:56px;border-radius:14px;display:flex;align-items:center;justify-content:center;font-size:15px;font-weight:800;background:var(--ink);color:#fff;transition:background .12s,color .12s}.week button[aria-pressed=true] b{background:#e7f7c0;color:#2f4f00}.chips{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px}.chip{height:40px;padding:0 14px;border-radius:999px;background:var(--card);border:1px solid #DCE1E7;font-size:14px;font-weight:600}.chip[aria-pressed=true]{background:var(--ink);border-color:var(--ink);color:#fff}.commit-row{display:flex;align-items:center;gap:8px;padding:8px 6px 8px 16px;border-top:1px solid var(--line);min-height:52px}.commit-row:first-child{border-top:0}.add-row{display:flex;gap:8px;padding:10px 8px 10px 12px;border-top:1px solid var(--line)}.add-row input{flex:1;min-width:0;height:46px;border:1px solid var(--line-strong);border-radius:12px;padding:0 12px;font-size:17px;color:var(--ink);background:var(--card)}.switch{width:51px;height:31px;border-radius:999px;background:var(--line-strong);position:relative;flex:none;transition:background .15s}.switch i{position:absolute;top:2px;left:2px;width:27px;height:27px;border-radius:999px;background:#fff;box-shadow:0 1px 3px #00000040;transition:left .15s}.switch.on{background:var(--lime-deep)}.switch.on i{left:22px}.review-line{display:flex;flex-direction:column;gap:3px;width:100%;padding:14px 16px;border-top:1px solid var(--line);text-align:left}.review-line:first-child{border-top:0}.review-line span{font-size:13px;font-weight:600;color:var(--ink-soft)}.review-line strong{font-size:16px;line-height:1.35}.list{background:var(--card);border-radius:18px;overflow:hidden}.list-row{display:flex;align-items:center;gap:12px;width:100%;min-height:54px;padding:0 16px;border-top:1px solid var(--line);font-size:16px;text-align:left}.list-row:first-child{border-top:0}.list-row .label{flex:1;font-weight:600}.list-row .value{color:var(--ink-soft);font-size:15px}.month-nav{background:var(--chip)}.month-nav:disabled{opacity:.35}.cal{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));row-gap:6px}.cal-wk{text-align:center;font-size:12px;font-weight:700;color:var(--ink-soft);padding-bottom:4px}.cal-day{height:48px;display:flex;flex-direction:column;align-items:center;justify-content:center;position:relative}.cal-day .c{width:40px;height:40px;border-radius:999px;display:flex;align-items:center;justify-content:center;font-size:15px;font-weight:600;position:relative;transition:box-shadow .1s}.st-complete .c,.st-super .c{background:var(--lime)}.st-partial .c,.st-today .c{background:var(--card);border:3px solid var(--lime)}.st-missed .c{background:#fde7dc;color:#8a2e0b}.st-protected .c{background:#e3ecfc;color:#1d4bb0;border:2px solid var(--shield)}.st-future .c{color:#6b7583;font-weight:500}.st-untracked .c{color:#9aa3ae;font-weight:500}.cal-day.sel .c{box-shadow:0 0 0 2px var(--card),0 0 0 4px var(--ink)}.cal-day .star{position:absolute;top:-3px;right:-3px;width:16px;height:16px;border-radius:999px;background:var(--ink);display:flex;align-items:center;justify-content:center}.cal-day .tdot{position:absolute;bottom:0;width:5px;height:5px;border-radius:999px;background:var(--ink)}.legend{display:flex;flex-wrap:wrap;gap:6px 14px;margin-top:14px;font-size:12px;font-weight:600;color:var(--ink-soft)}.legend span{display:flex;align-items:center;gap:6px}.legend i{width:14px;height:14px;border-radius:999px;display:inline-block}.pill{flex:none;padding:5px 10px;border-radius:999px;font-size:12px;font-weight:700;background:var(--chip);color:var(--ink-soft)}.pill.st-super{background:var(--ink);color:var(--lime)}.pill.st-complete{background:#eaf8c2;color:#2f4f00}.pill.st-partial,.pill.st-today{background:#f3f7e4;color:#3d5400}.pill.st-missed{background:#fde7dc;color:#8a2e0b}.pill.st-protected{background:#e3ecfc;color:#1d4bb0}.detail-line{display:flex;align-items:center;gap:12px;min-height:44px;border-top:1px solid var(--line)}.detail-line:first-child{border-top:0}.ok{width:22px;height:22px;border-radius:999px;border:2px solid var(--line-strong);display:flex;align-items:center;justify-content:center;flex:none}.ok svg{opacity:0}.ok.on{background:var(--lime);border-color:var(--lime)}.ok.on svg{opacity:1}.fix-row{display:flex;align-items:center;gap:14px;width:100%;min-height:52px;text-align:left;border-top:1px solid var(--line)}.fix-row:first-of-type{border-top:0}.stat-row{display:flex;gap:12px;margin-top:16px;padding-top:14px;border-top:1px solid var(--line)}.stat-row>div{flex:1;display:flex;flex-direction:column;gap:2px}.stat-row b{font-size:22px;font-weight:800;font-variant-numeric:tabular-nums}.stat-row span{font-size:12px;font-weight:600;color:var(--ink-soft)}.bars{display:grid;grid-template-columns:repeat(8,minmax(0,1fr));gap:8px;align-items:end;height:84px;margin-top:12px}.bar{display:flex;flex-direction:column;align-items:center;justify-content:flex-end;gap:4px;height:84px}.bar i{display:block;width:100%;border-radius:6px;background:var(--lime)}.bar.now i{background:var(--ink)}.bar.zero i{background:var(--line)}.bar small{font-size:11px;font-weight:600;color:var(--ink-soft)}.bars-foot{display:flex;justify-content:space-between;font-size:11px;font-weight:600;color:var(--ink-soft);margin-top:4px}.track{height:8px;border-radius:999px;background:var(--line);overflow:hidden}.track i{display:block;height:8px;border-radius:999px;background:var(--shield)}.track.lime i{background:var(--lime-deep)}.habit-stat{display:flex;flex-direction:column;gap:6px;padding:10px 0;border-top:1px solid var(--line)}.habit-stat:first-of-type{border-top:0}input[type=date]{-webkit-appearance:none;-moz-appearance:none;appearance:none;text-align:left}.inline-edit{flex:1;min-width:0;height:44px;border:1px solid transparent;border-radius:12px;padding:0 10px;margin-left:-10px;font-size:16px;font-weight:600;color:var(--ink);background:transparent}.inline-edit:focus{border-color:var(--line-strong);background:#f7f8fa;outline:none}.wo-head{display:flex;align-items:center;gap:12px;width:100%;min-height:64px;padding:0 16px}.wo-code{width:36px;height:36px;border-radius:10px;background:var(--ink);color:#fff;font-size:14px;font-weight:800;display:flex;align-items:center;justify-content:center;flex:none}.wo-code.rest{background:#e7f7c0;color:#2f4f00}.choice[aria-current=true]{border-color:var(--ink)}.chip:disabled{opacity:.5}.commit-edit{display:flex;flex-direction:column;gap:6px;padding:10px 6px 12px 16px;border-top:1px solid var(--line)}.commit-edit:first-child{border-top:0}.day-select{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:0;background:var(--chip);border-radius:10px;height:36px;padding:0 12px;font:inherit;font-size:15px;color:var(--ink);max-width:60%}.order-btn{width:36px;height:44px;border-radius:10px;font-size:18px;color:var(--ink-soft);flex:none}.order-btn:disabled{opacity:.25}.fb-q{display:flex;flex-direction:column;gap:8px;padding-bottom:12px;border-bottom:1px solid var(--line)}.fb-text{border:1px solid var(--line-strong);border-radius:14px;padding:12px 14px;font:inherit;font-size:17px;font-weight:500;color:var(--ink);background:var(--card);resize:vertical;min-height:96px}.fb-text:focus{outline:2px solid var(--ink);outline-offset:1px}.ai-tip{margin-top:16px;padding:14px 16px 16px;border-radius:var(--radius-card);background:#eef4da;border:1px solid #D5E7A0;color:var(--ink)}.import-list{margin:8px 0 0;padding-left:20px;line-height:1.5}.import-list li{margin-bottom:4px}.format-help{margin-top:10px;padding:0 4px}.format-help summary{font-weight:700;font-size:14px;min-height:36px;display:flex;align-items:center;cursor:pointer}.format-help code{background:var(--chip);border-radius:6px;padding:1px 6px;font-size:13px}.sub a{color:var(--ink);font-weight:600}.link-inline{display:inline;min-height:0;font-weight:600;color:var(--ink);text-decoration:underline}
