*{box-sizing:border-box;margin:0;padding:0}:root{--bg:#f5f2ec;--c:#fff;--t:#5c5a5a;--ts:#9c9a9a;--tb:#b8b6b6;--tm:#d4d2d0;--b:#5c5a5a1a;--b-strong:#5c5a5a2e;--stroke:#a48268;--p:#a3c4d9;--p-soft:#a3c4d91f;--pb:#ede8e0;--sage:#d4c4b0;--sage-dark:#c4b4a0;--sage-light:#e8ddd0;--fog:#c8d8e0;--apricot:#f2e0c8;--red:#d99b92;--yellow:#f2d8a7;--r-lg:28px;--r-sm:18px;--fs-display:24px;--fs-nav:18px;--fs-body:14px;--fs-aux:13px;--fs-tab:11px;--surface-bubble-user:#faf4ee;--accent-sage:#c4b4a0;--border-subtle:#5c5a5a0f;--radius-md:14px;--radius-bubble-ai:6px 20px 20px 20px;--radius-bubble-user:20px 6px 20px 20px;--shadow-soft:0 4px 14px #5c5a5a0a, 0 1px 3px #00000005;--shadow-interactive:0 8px 24px #5c5a5a14, 0 2px 6px #5c5a5a05;--transition-bounce:all .4s cubic-bezier(.175, .885, .32, 1.15);--font-display:"Nunito", -apple-system, BlinkMacSystemFont, "PingFang SC", sans-serif;--font-body:"Nunito", -apple-system, BlinkMacSystemFont, "PingFang SC", sans-serif}@keyframes fadeIn{0%{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:translateY(0)}}@keyframes cardIn{0%{opacity:0;transform:translateY(6px)scale(.98)}to{opacity:1;transform:translateY(0)scale(1)}}@keyframes slideUp{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@keyframes modalIn{0%{opacity:0;transform:translateY(16px)scale(.95)}to{opacity:1;transform:translateY(0)scale(1)}}@keyframes thinkingDot{0%,80%,to{opacity:.4;transform:scale(.5)}40%{opacity:1;transform:scale(1)}}html{height:100%}body{height:100%;font-family:var(--font-body);color:var(--t);-webkit-font-smoothing:antialiased;font-size:var(--fs-body);letter-spacing:-.01em;background:var(--bg);overflow:hidden}.app{overscroll-behavior:none;background:var(--bg);width:100%;max-width:430px;height:100dvh;margin:0 auto;overflow:hidden}.app.setup-view{-webkit-overflow-scrolling:touch;overflow:hidden auto}.page{padding:.5rem .75rem 1rem}.date-bar{justify-content:space-between;align-items:center;padding:.5rem .25rem .3rem;display:flex}.date-bar-center{align-items:center;gap:.4rem;display:flex}.date-bar h1{font-family:var(--font-display);font-size:var(--fs-display);letter-spacing:.02em;color:var(--t);font-weight:700}.btn-date-nav{font-size:var(--fs-aux);cursor:pointer;color:var(--ts);background:0 0;border:none;border-radius:8px;padding:.2rem .4rem}.btn-date-nav:active{background:var(--b)}.card{background:var(--c);border-radius:var(--r-lg);box-shadow:var(--shadow-soft);border:1.5px solid var(--stroke);filter:url(#sketch);margin-bottom:.75rem;padding:1.2rem 1rem;animation:.35s both cardIn}.card-sm{background:var(--c);border-radius:var(--r-sm);box-shadow:var(--shadow-soft);border:1.5px solid var(--stroke);filter:url(#sketch);margin-bottom:.5rem;padding:.7rem .8rem;animation:.35s both cardIn}.card h2{font-family:var(--font-display);font-size:var(--fs-display);margin-bottom:.4rem;font-weight:700}.card h3{font-family:var(--font-display);font-size:var(--fs-nav);margin-bottom:.3rem;font-weight:600}.hint{font-size:var(--fs-aux);color:var(--ts);line-height:1.5}.btn{border:1.5px solid var(--stroke);font-size:var(--fs-body);cursor:pointer;background:var(--c);color:var(--t);font-weight:600;font-family:var(--font-body);transition:var(--transition-bounce);filter:url(#sketch);border-radius:999px;justify-content:center;align-items:center;padding:.4rem .75rem;display:inline-flex;box-shadow:0 2px 6px #5c5a5a0f}.btn:active{box-shadow:none;transform:scale(.95)}.btn-primary{background:var(--p);color:#faf8f5;border-color:var(--p);box-shadow:0 4px 12px #a3c4d933}.btn-soft{background:var(--apricot);color:var(--t)}.btn-text{box-shadow:none;color:var(--ts);filter:none;background:0 0;border:none;font-weight:400}.btn-lg{font-size:var(--fs-nav);border-radius:999px;padding:.55rem 1rem}.btn-sm{font-size:var(--fs-aux);border-radius:12px;padding:.2rem .5rem}.btn:disabled{opacity:.4;cursor:default}.tab-bar{padding:.25rem .5rem calc(.25rem + env(safe-area-inset-bottom,0));background:var(--c);border:1.5px solid var(--stroke);box-shadow:var(--shadow-soft);z-index:10;filter:url(#sketch);border-radius:24px;justify-content:space-around;align-items:flex-end;margin:0 .5rem .5rem;display:flex;position:relative}.tab-item{cursor:pointer;font-family:var(--font-body);transition:var(--transition-bounce);background:0 0;border:none;flex-direction:column;align-items:center;gap:.25rem;padding:.4rem .5rem;display:flex}.tab-item:active{transform:scale(.92)}.tab-item svg{width:22px;height:22px;color:var(--tm);stroke-width:1.8px}.tab-item span{color:var(--tm);font-size:11px;font-weight:600;font-family:var(--font-body);transition:color .2s}.tab-item:hover span,.tab-item.active svg{color:var(--p)}.tab-item.active span{color:var(--p);font-weight:700}input,textarea,select{border:1.5px solid var(--stroke);border-radius:var(--radius-md);width:100%;font-size:var(--fs-body);font-family:var(--font-body);background:var(--c);color:var(--t);outline:none;padding:.45rem .6rem}input:focus,textarea:focus,select:focus{border-color:var(--p)}input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}input[type=number]::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}input[type=number]{-moz-appearance:textfield}textarea{resize:vertical;min-height:2.5rem}.onboard-card{background:var(--c);border-radius:var(--r-lg);box-shadow:var(--shadow-soft);border:1.5px solid var(--stroke);filter:url(#sketch);gap:.8rem;margin-bottom:.6rem;padding:1rem;display:flex}.onboard-icon{border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:44px;height:44px;display:flex}.onboard-body{flex:1}.onboard-body h3{font-family:var(--font-display);font-size:var(--fs-nav);margin-bottom:.15rem;font-weight:600}.onboard-body p{font-size:var(--fs-aux);color:var(--ts);line-height:1.5}.accordion-wrap{opacity:.5;max-height:0;transition:max-height .35s,opacity .3s;overflow:hidden}.accordion-wrap.open{opacity:1;max-height:9999px}.accordion-inner{overflow:hidden}.subtask-slide{opacity:0;max-height:0;margin-top:0;transition:max-height .3s,opacity .25s,margin .3s;overflow:hidden}.subtask-slide.open{opacity:1;max-height:2000px;margin-top:.3rem}.tl-wrap{background:var(--c);border-radius:var(--r-lg);box-shadow:var(--shadow-soft);border:1.5px solid var(--stroke);filter:url(#sketch);padding:.8rem}.tl-wrap h3{font-size:var(--fs-aux);color:var(--ts);margin-bottom:.4rem;font-weight:600}.tl-24h{padding:.3rem 0;position:relative}.tl-hour-label{width:3rem;font-size:var(--fs-aux);color:var(--ts);text-align:right;flex-shrink:0;padding-top:2px}.tl-hour-line{background:var(--b);height:1px;position:absolute;top:0;left:3rem;right:0}.tl-block{cursor:grab;z-index:1;touch-action:none;border:1.5px solid var(--stroke);filter:url(#sketch);border-radius:16px;min-height:32px;padding:.35rem .55rem;transition:transform .15s,box-shadow .15s;position:absolute;left:3.4rem;right:.5rem;overflow:hidden}.tl-block:hover{transform:translateY(-1px);box-shadow:0 4px 12px #5c5a5a1a}.tl-block .tb-title{font-size:var(--fs-aux);align-items:center;gap:.3rem;font-weight:600;display:flex;overflow:hidden}.tl-block.done{opacity:.5}.drop-indicator{background:var(--p);z-index:10;pointer-events:none;height:2px;transition:top .15s;position:absolute;left:3.4rem;right:.5rem}.tl-hint{background:var(--c);border:1px solid var(--b);font-size:var(--fs-aux);color:var(--ts);border-radius:20px;margin-top:2rem;padding:.6rem .75rem;line-height:1.5}.bg-study{background:var(--fog)}.bg-rest{background:var(--apricot)}.bg-fixed{background:var(--sage)}.bg-habit{background:#ede0d4}.bg-daily-task{background:#e4dee8}.bg-goal{background:var(--fog)}.bg-buffer{background:var(--c);border:1px dashed var(--b);color:var(--ts);filter:none}.bg-meta{border:1px dashed var(--b);color:var(--ts);filter:none;background:0 0}.bg-done{background:var(--c);border:1px solid var(--b);color:var(--ts)}.tl-now-line{background:var(--p);z-index:2;pointer-events:none;height:1px;position:absolute;left:3rem;right:0}.tl-now-line:before{content:"";background:var(--p);border-radius:50%;width:8px;height:8px;position:absolute;top:-4px;left:-4px}.cal-heat{grid-template-columns:repeat(7,1fr);gap:3px;margin-bottom:.4rem;display:grid}.heat-cell{aspect-ratio:1;font-size:var(--fs-aux);cursor:pointer;border-radius:14px;flex-direction:column;justify-content:center;align-items:center;display:flex}.heat-cell .hd{font-size:var(--fs-aux);font-weight:600;font-family:var(--font-body)}.heat-cell .hp{font-size:var(--fs-tab);color:var(--ts)}.heat-cell.today{outline:2px solid var(--p);outline-offset:-2px}.cal-hdr{text-align:center;font-size:var(--fs-tab);color:var(--ts);padding:.2rem 0;font-weight:500}.modal-overlay{z-index:100;background:#5c5a5a26;justify-content:center;align-items:center;animation:.2s both fadeIn;display:flex;position:fixed;inset:0}.modal-card{background:var(--c);border-radius:var(--r-lg);width:88%;max-width:380px;box-shadow:var(--shadow-interactive);border:1.5px solid var(--stroke);filter:url(#sketch);padding:1.2rem;animation:.25s both modalIn}.modal-card h3{font-family:var(--font-display);font-size:var(--fs-nav);margin-bottom:.5rem;font-weight:600}.st-section{background:var(--c);border-radius:var(--r-lg);box-shadow:var(--shadow-soft);border:1.5px solid var(--stroke);filter:url(#sketch);margin-bottom:.6rem;padding:1rem;animation:.35s both cardIn}.st-section h3{font-family:var(--font-display);font-size:var(--fs-nav);margin-bottom:.3rem;font-weight:600}.st-pill{background:var(--bg);font-size:var(--fs-aux);border:1.5px solid var(--stroke);border-radius:14px;align-items:center;gap:.3rem;margin:.15rem;padding:.3rem .65rem;font-weight:500;display:inline-flex}.st-row{justify-content:space-between;align-items:center;padding:.35rem 0;display:flex}.st-row .st-label{font-size:var(--fs-body)}.tg{cursor:pointer;flex-shrink:0;width:34px;height:18px;display:inline-block;position:relative}.tg input{opacity:0;width:0;height:0;position:absolute}.tg-sl{background:#e0dedc;border-radius:18px;transition:all .2s;position:absolute;inset:0}.tg-sl:before{content:"";background:#faf8f5;border-radius:50%;width:14px;height:14px;transition:all .2s;position:absolute;bottom:2px;left:2px}.tg input:checked+.tg-sl{background:var(--p)}.tg input:checked+.tg-sl:before{transform:translate(16px)}.row{align-items:center;gap:.25rem;display:flex}.c-ts{color:var(--ts)}
