:root{--cream: #faf6ef;--warm-white: #fffdf9;--paper: #fffefb;--blush: #f6dfd9;--blush-soft: #faece8;--rose: #c98a94;--rose-deep: #a96a76;--lavender: #d9d2ee;--lavender-soft: #eeeaf8;--sage: #cfdcc9;--sage-soft: #e8efe4;--sage-deep: #7d9474;--ink: #37322e;--ink-soft: #6f675f;--ink-faint: #a39a90;--line: #ece4da;--line-strong: #ddd2c4;--d-bg: #23202b;--d-bg-2: #2a2734;--d-card: #2f2b3a;--d-card-2: #363143;--d-text: #efe9e4;--d-text-soft: #b6adba;--d-line: #423c50;--d-blush: #b98b94;--d-lavender: #a99cc9;--d-sage: #93a98c;--bg: var(--cream);--bg-2: var(--warm-white);--card: var(--paper);--text: var(--ink);--text-soft: var(--ink-soft);--text-faint: var(--ink-faint);--border: var(--line);--accent: var(--rose);--accent-soft: var(--blush-soft);--accent-deep: var(--rose-deep);--lav: var(--lavender);--lav-soft: var(--lavender-soft);--grn: var(--sage-deep);--grn-soft: var(--sage-soft);--shadow: 0 2px 6px rgba(87, 70, 60, .06), 0 12px 32px rgba(87, 70, 60, .08);--shadow-lift: 0 4px 10px rgba(87, 70, 60, .08), 0 18px 44px rgba(87, 70, 60, .12);--r-lg: 24px;--r-md: 18px;--r-sm: 12px;--nav-h: 76px;--sidebar-w: 232px;--font-display: "Fraunces", Georgia, serif;--font-body: "Nunito Sans", system-ui, -apple-system, sans-serif}.dark{--bg: var(--d-bg);--bg-2: var(--d-bg-2);--card: var(--d-card);--text: var(--d-text);--text-soft: var(--d-text-soft);--text-faint: #8d8496;--border: var(--d-line);--accent: var(--d-blush);--accent-soft: #3a3140;--accent-deep: #d4a3ac;--lav: var(--d-lavender);--lav-soft: #37304a;--grn: var(--d-sage);--grn-soft: #2e3a2e;--shadow: 0 2px 6px rgba(0, 0, 0, .25), 0 12px 32px rgba(0, 0, 0, .3);--shadow-lift: 0 4px 10px rgba(0, 0, 0, .3), 0 18px 44px rgba(0, 0, 0, .38)}*{box-sizing:border-box}html,body{margin:0;padding:0}html{-webkit-text-size-adjust:100%}body{font-family:var(--font-body);font-size:16px;line-height:1.55;color:var(--text);background:var(--bg);-webkit-font-smoothing:antialiased;min-height:100dvh}h1,h2,h3,.display{font-family:var(--font-display);font-weight:600;line-height:1.2;margin:0;letter-spacing:-.01em}button,input,select,textarea{font:inherit;color:inherit}button{cursor:pointer}.app-shell{min-height:100dvh;background:radial-gradient(1200px 500px at 85% -10%,var(--blush-soft) 0%,transparent 60%),radial-gradient(900px 420px at -10% 30%,var(--lav-soft) 0%,transparent 55%),var(--bg)}.dark .app-shell{background:radial-gradient(1200px 500px at 85% -10%,#322a3d 0%,transparent 60%),radial-gradient(900px 420px at -10% 30%,#2c2a40 0%,transparent 55%),var(--bg)}.main-area{max-width:720px;margin:0 auto;padding:24px 20px calc(var(--nav-h) + 40px)}@media(min-width:768px){.main-area{max-width:780px;padding:36px 32px 80px}}@media(min-width:1024px){.with-sidebar .main-area{margin-left:var(--sidebar-w);max-width:860px}}.page-title{font-size:30px;margin-bottom:4px}@media(min-width:768px){.page-title{font-size:34px}}.page-sub{color:var(--text-soft);margin:0 0 22px;font-size:15px}.section-label{font-size:12.5px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--text-faint);margin:30px 0 12px}.card{background:var(--card);border:1px solid var(--border);border-radius:var(--r-lg);padding:22px;box-shadow:var(--shadow)}.card.pad-lg{padding:28px}.card.quiet{box-shadow:none}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;border-radius:999px;border:1px solid transparent;padding:11px 22px;font-weight:700;font-size:15px;transition:transform .15s ease,box-shadow .15s ease,background .15s ease;min-height:44px;text-decoration:none}.btn:active{transform:scale(.97)}.btn:focus-visible,a:focus-visible,[tabindex]:focus-visible{outline:3px solid var(--lav);outline-offset:2px}.btn-primary{background:var(--accent);color:#fff;box-shadow:0 6px 18px #a96a7659}.dark .btn-primary{color:#2b2230}.btn-primary:hover,.dark .btn-primary:hover{background:var(--accent-deep)}.btn-soft{background:var(--accent-soft);color:var(--accent-deep);border-color:transparent}.dark .btn-soft{color:var(--accent)}.btn-soft:hover{filter:brightness(.97)}.btn-ghost{background:transparent;border-color:var(--border);color:var(--text-soft)}.btn-ghost:hover{color:var(--text);border-color:var(--line-strong)}.btn-danger{background:transparent;border-color:transparent;color:#b3564f}.btn-danger:hover{background:#f8e9e7}.dark .btn-danger{color:#d98c85}.dark .btn-danger:hover{background:#3a2f33}.btn-sm{padding:7px 14px;font-size:13.5px;min-height:36px}.btn-block{width:100%}.btn:disabled{opacity:.55;cursor:default}.chip{display:inline-flex;align-items:center;gap:6px;border-radius:999px;padding:4px 12px;font-size:12.5px;font-weight:700;background:var(--lav-soft);color:var(--text-soft)}.chip.rose{background:var(--accent-soft);color:var(--accent-deep)}.dark .chip.rose{color:var(--accent)}.chip.sage{background:var(--grn-soft);color:var(--grn)}.field{margin-bottom:14px}.field label{display:block;font-size:13.5px;font-weight:700;color:var(--text-soft);margin-bottom:6px}.input,.select,.textarea{width:100%;border:1.5px solid var(--border);background:var(--bg-2);border-radius:var(--r-sm);padding:11px 14px;font-size:15px;color:var(--text);transition:border-color .15s ease}.input:focus,.select:focus,.textarea:focus{outline:none;border-color:var(--accent)}.input::placeholder,.textarea::placeholder{color:var(--text-faint)}.textarea{resize:vertical;min-height:74px}.field-error{color:#b3564f;font-size:13px;margin-top:5px}.dark .field-error{color:#d98c85}.form-row{display:grid;grid-template-columns:1fr 1fr;gap:12px}.seg{display:flex;flex-wrap:wrap;gap:8px}.seg button{border:1.5px solid var(--border);background:var(--bg-2);color:var(--text-soft);border-radius:999px;padding:8px 16px;font-weight:700;font-size:14px;min-height:40px}.seg button.on{background:var(--accent);border-color:var(--accent);color:#fff}.dark .seg button.on{color:#2b2230}.check{position:relative;width:26px;height:26px;border-radius:9px;border:2px solid var(--line-strong);background:var(--bg-2);flex:none;transition:background .2s ease,border-color .2s ease}.check svg{position:absolute;inset:0;margin:auto;stroke:#fff;stroke-width:3.2;fill:none;stroke-dasharray:22;stroke-dashoffset:22;transition:stroke-dashoffset .25s ease .05s}.dark .check svg{stroke:#2b2230}.check.done{background:var(--accent);border-color:var(--accent)}.check.done svg{stroke-dashoffset:0}.bottom-nav{position:fixed;left:50%;transform:translate(-50%);bottom:max(14px,env(safe-area-inset-bottom));z-index:40;display:flex;gap:2px;background:var(--card);border:1px solid var(--border);border-radius:999px;padding:7px;box-shadow:var(--shadow-lift);width:min(94vw,430px);justify-content:space-between}.bottom-nav a{flex:1;display:flex;flex-direction:column;align-items:center;gap:3px;padding:7px 4px;border-radius:999px;text-decoration:none;color:var(--text-faint);font-size:11px;font-weight:700;min-height:48px;justify-content:center}.bottom-nav a.active{color:var(--accent-deep);background:var(--accent-soft)}.dark .bottom-nav a.active{color:var(--accent)}.sidebar{position:fixed;top:0;left:0;bottom:0;width:var(--sidebar-w);padding:28px 16px;display:none;flex-direction:column;gap:4px;border-right:1px solid var(--border);background:var(--card)}.sidebar .brand{padding:0 12px 22px}.sidebar a{display:flex;align-items:center;gap:12px;padding:11px 14px;border-radius:var(--r-md);text-decoration:none;color:var(--text-soft);font-weight:700;font-size:14.5px}.sidebar a:hover{background:var(--bg-2)}.sidebar a.active{background:var(--accent-soft);color:var(--accent-deep)}.dark .sidebar a.active{color:var(--accent)}.sidebar .spacer{flex:1}@media(min-width:1024px){.sidebar{display:flex}.bottom-nav{display:none}}.brand{display:flex;align-items:center;gap:10px;font-family:var(--font-display);font-weight:700;font-size:18px}.brand-mark{color:var(--accent);flex:none}.bloom-fab{position:fixed;right:max(16px,env(safe-area-inset-right));bottom:calc(var(--nav-h) + 26px);z-index:41;width:54px;height:54px;border-radius:999px;border:none;background:var(--lav);color:#fff;box-shadow:var(--shadow-lift);display:flex;align-items:center;justify-content:center}@media(min-width:1024px){.bloom-fab{bottom:26px}}.bloom-fab:hover{filter:brightness(1.05)}.ring-track{stroke:var(--border)}.ring-fill{stroke:var(--accent);stroke-linecap:round;transition:stroke-dashoffset .9s cubic-bezier(.22,1,.36,1)}.timeline{position:relative;padding-left:20px}.timeline:before{content:"";position:absolute;left:5px;top:8px;bottom:8px;width:2px;background:var(--border);border-radius:2px}.tl-item{position:relative;padding:7px 0}.tl-item:before{content:"";position:absolute;left:-20px;top:16px;width:10px;height:10px;border-radius:999px;background:var(--card);border:2.5px solid var(--accent)}.tl-item.muted:before{border-color:var(--line-strong)}.tl-time{font-size:12.5px;font-weight:700;color:var(--text-faint);width:52px;flex:none}.mascot-eye{animation:blink 4.5s infinite;transform-origin:center}@keyframes blink{0%,94%,to{transform:scaleY(1)}96%{transform:scaleY(.08)}}.float-slow{animation:floaty 5s ease-in-out infinite}@keyframes floaty{0%,to{transform:translateY(0)}50%{transform:translateY(-5px)}}.overlay{position:fixed;inset:0;background:#372b2866;backdrop-filter:blur(3px);z-index:60;display:flex;align-items:flex-end;justify-content:center}@media(min-width:640px){.overlay{align-items:center}}.sheet{background:var(--card);border:1px solid var(--border);border-radius:26px 26px 0 0;width:100%;max-width:560px;max-height:88dvh;overflow-y:auto;padding:24px 22px calc(24px + env(safe-area-inset-bottom));box-shadow:var(--shadow-lift)}@media(min-width:640px){.sheet{border-radius:26px;padding:28px}}.sheet h2{font-size:22px;margin-bottom:16px}.sheet-grab{width:44px;height:5px;border-radius:3px;background:var(--line-strong);margin:0 auto 14px}.empty{text-align:center;color:var(--text-soft);padding:34px 18px;border:1.5px dashed var(--line-strong);border-radius:var(--r-lg);background:transparent}.empty .big{font-size:40px;margin-bottom:8px}.empty h3{font-size:18px;margin-bottom:4px;color:var(--text)}.error-note{background:#f8e9e7;color:#9c4a44;border:1px solid #efcfc9;border-radius:var(--r-md);padding:12px 16px;font-size:14px}.dark .error-note{background:#3a2f33;color:#dba09a;border-color:#54393c}.toasts{position:fixed;top:16px;left:50%;transform:translate(-50%);z-index:80;display:flex;flex-direction:column;gap:8px;width:min(92vw,420px)}.toast{background:var(--card);border:1px solid var(--border);border-radius:var(--r-md);box-shadow:var(--shadow-lift);padding:12px 16px;font-weight:600;font-size:14px;display:flex;gap:10px;align-items:center}.chat-wrap{display:flex;flex-direction:column;height:calc(100dvh - 140px)}@media(min-width:1024px){.chat-wrap{height:calc(100dvh - 120px)}}.chat-log{flex:1;overflow-y:auto;display:flex;flex-direction:column;gap:12px;padding:6px 2px 14px}.bubble{max-width:85%;padding:12px 16px;border-radius:20px;font-size:15px;white-space:pre-wrap;word-break:break-word}.bloom-bubble{background:var(--card);border:1px solid var(--border);border-bottom-left-radius:6px;align-self:flex-start;box-shadow:var(--shadow)}.user-bubble{background:var(--accent);color:#fff;border-bottom-right-radius:6px;align-self:flex-end}.dark .user-bubble{color:#2b2230}.chat-bar{display:flex;gap:10px;padding-top:12px;border-top:1px solid var(--border)}.chat-bar .input{flex:1}.suggest-row{display:flex;gap:8px;flex-wrap:wrap;padding:10px 0 4px}.suggest-row button{border:1.5px solid var(--border);background:var(--bg-2);color:var(--text-soft);border-radius:999px;padding:7px 13px;font-size:13px;font-weight:700}.typing{display:inline-flex;gap:4px;padding:4px 2px}.typing i{width:7px;height:7px;border-radius:999px;background:var(--text-faint);animation:tp 1.1s infinite}.typing i:nth-child(2){animation-delay:.15s}.typing i:nth-child(3){animation-delay:.3s}@keyframes tp{0%,to{opacity:.35;transform:translateY(0)}50%{opacity:1;transform:translateY(-3px)}}.focus-stage{min-height:calc(100dvh - var(--nav-h) - 60px);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:22px;text-align:center}.timer-big{font-family:var(--font-display);font-size:clamp(64px,17vw,110px);font-weight:600;letter-spacing:.01em;line-height:1;font-variant-numeric:tabular-nums}.garden-stage{border-radius:var(--r-lg);border:1px solid var(--border);background:linear-gradient(180deg,var(--lav-soft) 0%,var(--bg-2) 55%,var(--grn-soft) 100%);min-height:300px;position:relative;overflow:hidden}.garden-ground{position:absolute;left:0;right:0;bottom:0;height:34%;background:var(--grn-soft);border-top:1.5px solid var(--border)}.garden-item{position:absolute;bottom:18%;transform:translate(-50%);animation:grow-in .7s cubic-bezier(.22,1,.36,1) both}@keyframes grow-in{0%{transform:translate(-50%) translateY(14px) scale(.6);opacity:0}to{transform:translate(-50%) translateY(0) scale(1);opacity:1}}.row{display:flex;align-items:center;gap:12px}.row.between{justify-content:space-between}.row.wrap{flex-wrap:wrap}.stack{display:flex;flex-direction:column;gap:12px}.grow{flex:1;min-width:0}.muted{color:var(--text-soft)}.faint{color:var(--text-faint)}.small{font-size:13.5px}.tiny{font-size:12px}.bold{font-weight:700}.mt8{margin-top:8px}.mt16{margin-top:16px}.mt24{margin-top:24px}.mb8{margin-bottom:8px}.mb16{margin-bottom:16px}.center{text-align:center}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.hide-mobile{display:none}@media(min-width:768px){.hide-mobile{display:initial}}.only-mobile{display:initial}@media(min-width:768px){.only-mobile{display:none}}.skeleton{border-radius:var(--r-md);background:linear-gradient(90deg,var(--bg-2),var(--border),var(--bg-2));background-size:200% 100%;animation:sk 1.4s infinite}@keyframes sk{to{background-position:-200% 0}}.task-row{display:flex;align-items:center;gap:14px;padding:13px 4px;border-bottom:1px solid var(--border)}.task-row:last-child{border-bottom:none}.task-row .name{font-weight:700;font-size:15px}.task-row.done .name{text-decoration:line-through;color:var(--text-faint)}.task-dot{width:10px;height:10px;border-radius:999px;flex:none}.link-btn{background:none;border:none;color:var(--accent-deep);font-weight:700;padding:4px;text-decoration:underline}.dark .link-btn{color:var(--accent)}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:1ms!important;transition-duration:1ms!important}}html.reduced-motion *,html.reduced-motion *:before,html.reduced-motion *:after{animation-duration:1ms!important;transition-duration:1ms!important}.rtl,[dir=rtl]{text-align:right}
