:root{color-scheme:dark;--bg:#06101c;--panel:#101e30;--panel2:#16283d;--line:rgba(255,255,255,.1);--text:#f7fbff;--muted:#98aabd;--green:#6ff5ad;--green2:#26c982;--violet:#a18cff;--gold:#ffd26d;--red:#ff7878;--safe:max(18px,env(safe-area-inset-bottom));font-family:-apple-system,BlinkMacSystemFont,"SF Pro Display","PingFang SC","Microsoft YaHei",sans-serif}
*{box-sizing:border-box}html{min-height:100%;background:var(--bg)}body{min-height:100%;margin:0;color:var(--text);background:radial-gradient(circle at 88% -8%,rgba(111,245,173,.17),transparent 32%),radial-gradient(circle at -15% 42%,rgba(161,140,255,.13),transparent 30%),var(--bg)}button,input,select,textarea{font:inherit}button{touch-action:manipulation}.app-shell{width:min(100%,540px);min-height:100vh;margin:0 auto;padding:max(18px,env(safe-area-inset-top)) 17px calc(96px + var(--safe))}.topbar{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px}.eyebrow{margin:0 0 4px;color:var(--green);font-size:10px;font-weight:900;letter-spacing:.17em}.topbar h1{margin:0;font-size:28px;letter-spacing:-.04em}.coach-sub{margin:4px 0 0;color:var(--muted);font-size:12px}h2,h3,p{margin-top:0}h2{font-size:22px;line-height:1.22;letter-spacing:-.025em}h3{font-size:16px;margin-bottom:7px}.muted{color:var(--muted)}.small{font-size:12px}.level-badge{width:62px;height:62px;border:1px solid rgba(111,245,173,.42);border-radius:21px;color:var(--green);background:rgba(111,245,173,.08);display:grid;place-content:center;padding:0}.level-badge span{font-size:9px;letter-spacing:.12em}.level-badge strong{font-size:24px;line-height:1}.card,.hero{border:1px solid var(--line);border-radius:24px;background:linear-gradient(145deg,rgba(20,38,59,.97),rgba(9,20,34,.97));box-shadow:0 18px 50px rgba(0,0,0,.22);padding:18px;margin-top:13px;overflow:hidden}.hero{position:relative;padding:21px;border-color:rgba(111,245,173,.28)}.hero:after{content:"";position:absolute;width:170px;height:170px;border-radius:50%;right:-75px;top:-90px;background:rgba(161,140,255,.14)}.danger-card{border-color:rgba(255,120,120,.42);background:linear-gradient(145deg,rgba(62,27,37,.97),rgba(23,18,29,.98))}.coach-card{border-color:rgba(161,140,255,.46);box-shadow:0 20px 60px rgba(44,29,102,.24)}.coach-card.overdue{border-color:rgba(255,210,109,.5)}.card-head,.status-row,.progress-label,.profile-row,.chart-head{display:flex;align-items:center;justify-content:space-between;gap:12px}.status-pill{display:inline-flex;align-items:center;gap:7px;padding:7px 11px;border-radius:999px;font-size:11px;font-weight:900;color:var(--green);background:rgba(111,245,173,.08);border:1px solid rgba(111,245,173,.24)}.status-pill.gold{color:var(--gold);background:rgba(255,210,109,.08);border-color:rgba(255,210,109,.24)}.status-pill.red{color:var(--red);background:rgba(255,120,120,.08);border-color:rgba(255,120,120,.24)}.hero h2{margin:12px 0 4px;font-size:29px}.hero-copy{color:var(--muted);font-size:13px;margin-bottom:15px}.completion-ring{position:relative;width:86px;height:86px;border-radius:50%;display:grid;place-items:center;background:conic-gradient(var(--green) calc(var(--pct)*1%),rgba(255,255,255,.08) 0)}.completion-ring:before{content:"";position:absolute;inset:8px;border-radius:50%;background:#0d1a2a}.completion-ring strong,.completion-ring span{position:relative;z-index:1}.completion-ring strong{font-size:23px}.completion-ring span{font-size:10px;color:var(--muted)}.hero-grid{display:grid;grid-template-columns:1fr 86px;align-items:center;gap:15px}.progress{height:9px;background:rgba(255,255,255,.07);border-radius:99px;overflow:hidden}.progress>span{display:block;height:100%;border-radius:inherit;background:linear-gradient(90deg,var(--green2),var(--green))}.progress-label{color:var(--muted);font-size:11px;margin-bottom:6px}.current-time{color:var(--gold);font-size:12px;font-weight:900}.current-title{font-size:30px;margin:14px 0 7px}.current-short{font-size:16px;font-weight:750;line-height:1.5;margin-bottom:9px}.coach-reason{padding:12px;border-radius:15px;background:rgba(161,140,255,.08);border:1px solid rgba(161,140,255,.18);font-size:12px;line-height:1.55;color:#d7cffd;margin:14px 0}.primary-button,.secondary-button,.danger-button,.ghost-button{min-height:50px;border-radius:16px;border:0;padding:0 17px;font-weight:900;cursor:pointer}.primary-button{width:100%;color:#03140c;background:linear-gradient(135deg,#77f8b3,#37d88c);box-shadow:0 12px 28px rgba(55,216,140,.17)}.primary-button:disabled{color:#7f8d9b;background:#273648;box-shadow:none}.secondary-button{width:100%;color:var(--text);background:#21334b;border:1px solid rgba(255,255,255,.09)}.danger-button{width:100%;color:#ffe1e1;background:rgba(255,120,120,.12);border:1px solid rgba(255,120,120,.35)}.ghost-button{min-height:40px;color:var(--green);background:rgba(111,245,173,.08)}.button-stack{display:grid;gap:9px}.timeline{display:grid;gap:9px;margin-top:14px}.timeline-item{display:grid;grid-template-columns:55px 14px 1fr 38px;gap:9px;align-items:center;padding:12px 10px;border-radius:17px;border:1px solid rgba(255,255,255,.06);background:rgba(255,255,255,.035)}.timeline-item.current{border-color:rgba(161,140,255,.45);background:rgba(161,140,255,.09)}.timeline-item.done{border-color:rgba(111,245,173,.21);background:rgba(31,89,69,.3)}.timeline-item.locked{border-color:rgba(255,120,120,.25);opacity:.76}.task-time{color:var(--gold);font-size:11px;font-weight:900}.task-dot{width:11px;height:11px;border-radius:50%;background:#536276;box-shadow:0 0 0 4px rgba(83,98,118,.13)}.done .task-dot{background:var(--green);box-shadow:0 0 0 4px rgba(111,245,173,.13)}.current .task-dot{background:var(--violet);box-shadow:0 0 0 4px rgba(161,140,255,.15)}.task-copy{display:grid;gap:4px}.task-copy strong{font-size:14px}.task-copy span{font-size:11px;color:var(--muted);line-height:1.45}.task-status{display:grid;place-items:center;width:34px;height:34px;border-radius:12px;background:rgba(255,255,255,.05);color:#8391a2;font-size:13px;font-weight:900}.done .task-status{color:var(--green)}.now-strip{display:flex;gap:10px;align-items:center;padding:12px 14px;margin-bottom:12px;border-radius:16px;background:linear-gradient(90deg,rgba(161,140,255,.16),rgba(111,245,173,.08));border:1px solid rgba(161,140,255,.25)}.now-strip strong{font-size:13px}.now-strip span{color:var(--muted);font-size:11px}.metric-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:9px}.metric{padding:13px 9px;border-radius:17px;background:rgba(255,255,255,.04);border:1px solid rgba(255,255,255,.06)}.metric strong{display:block;font-size:20px;margin-bottom:3px}.metric span{color:var(--muted);font-size:10px}.chart{display:flex;align-items:flex-end;gap:8px;height:128px;margin-top:14px;padding-top:8px}.bar-wrap{flex:1;display:grid;align-items:end;gap:5px;height:100%;text-align:center}.bar{min-height:8px;border-radius:8px 8px 3px 3px;background:linear-gradient(180deg,var(--green),var(--green2))}.bar-wrap small{font-size:9px;color:var(--muted)}.bar-wrap em{font-style:normal;font-size:9px;color:#cbd7e4}.coach-note{line-height:1.65;color:#dbe6f1;font-size:14px;margin:0}.milestone{display:grid;grid-template-columns:1fr auto;gap:12px;align-items:center}.milestone strong{font-size:28px;color:var(--gold)}.profile-list{display:grid}.profile-row{padding:12px 0;border-bottom:1px solid var(--line);font-size:13px}.profile-row:last-child{border-bottom:0}.profile-row span{color:var(--muted)}.profile-row strong{text-align:right}.safety-list{padding-left:19px;color:var(--muted);font-size:12px;line-height:1.7}.safety-list a{color:#b9cbff}.bottom-nav{position:fixed;z-index:20;left:50%;bottom:0;transform:translateX(-50%);width:min(100%,540px);display:grid;grid-template-columns:repeat(4,1fr);padding:9px 12px var(--safe);background:rgba(6,16,28,.93);border-top:1px solid var(--line);backdrop-filter:blur(18px)}.bottom-nav button{border:0;background:transparent;color:#718198;font-size:10px;font-weight:900;padding:6px 2px}.bottom-nav button span{display:block;font-size:19px;margin-bottom:2px}.bottom-nav button.active{color:var(--green)}dialog{width:min(calc(100% - 22px),500px);padding:0;border:1px solid var(--line);border-radius:25px;color:var(--text);background:#0b1727;box-shadow:0 30px 90px rgba(0,0,0,.62)}dialog::backdrop{background:rgba(2,7,13,.78);backdrop-filter:blur(8px)}.dialog-card{padding:20px}.compact-dialog{max-width:420px}.dialog-head{display:flex;align-items:flex-start;justify-content:space-between;gap:13px}.icon-button{border:0;background:rgba(255,255,255,.07);color:var(--text);width:38px;height:38px;border-radius:50%;font-size:23px}.field{display:grid;gap:7px;color:#dbe4ed;font-size:13px;font-weight:750;margin-top:13px}input[type=text],input[type=password],input[type=number],select,textarea{width:100%;color:var(--text);background:#091423;border:1px solid rgba(255,255,255,.12);border-radius:14px;padding:13px;outline:none}input:focus,select:focus,textarea:focus{border-color:var(--green);box-shadow:0 0 0 3px rgba(111,245,173,.1)}textarea{resize:vertical}.choice-field{border:0;padding:0;margin:15px 0 0}.choice-field legend{font-size:13px;font-weight:800;margin-bottom:8px}.choice-row{display:grid;grid-template-columns:repeat(5,1fr);gap:6px}.choice-row.three{grid-template-columns:repeat(3,1fr)}.choice-row input{position:absolute;opacity:0}.choice-row span{display:grid;place-items:center;min-height:49px;border-radius:13px;background:rgba(255,255,255,.05);border:1px solid rgba(255,255,255,.08);font-size:11px;text-align:center}.choice-row input:checked+span{color:#05160f;background:var(--green);border-color:var(--green);font-weight:900}.switch-line{display:flex;gap:10px;align-items:flex-start;padding:12px;border-radius:14px;background:rgba(255,255,255,.04);font-size:12px;line-height:1.45}.switch-line input{width:20px;height:20px;accent-color:var(--green2)}.danger-line{margin:14px 0;color:#ffd7d7;border:1px solid rgba(255,120,120,.24)}.mini-plan{padding:13px;border-radius:15px;background:rgba(111,245,173,.07);border:1px solid rgba(111,245,173,.2);font-size:12px;line-height:1.6}.install-steps{padding-left:20px;line-height:1.8;color:#dce5ef}.toast{position:fixed;z-index:50;left:50%;bottom:105px;transform:translate(-50%,16px);max-width:calc(100% - 34px);padding:12px 15px;border-radius:14px;background:#e9fff4;color:#0b402a;font-weight:900;font-size:12px;opacity:0;pointer-events:none;transition:.2s}.toast.show{opacity:1;transform:translate(-50%,0)}.loading-card{text-align:center;color:var(--muted)}.spinner{display:inline-block;width:25px;height:25px;border:3px solid rgba(255,255,255,.1);border-top-color:var(--green);border-radius:50%;animation:spin .8s linear infinite}.error-card{text-align:center}.error-card h2{color:var(--red)}@keyframes spin{to{transform:rotate(360deg)}}
@media(max-width:360px){.app-shell{padding-left:12px;padding-right:12px}.current-title{font-size:27px}.timeline-item{grid-template-columns:49px 12px 1fr 34px;padding:10px 8px}.metric strong{font-size:17px}.choice-row{gap:4px}}@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important;animation:none!important}}
.bottom-nav[hidden],.level-badge[hidden]{display:none!important}.login-card{margin-top:7vh}.login-card h2{font-size:27px;margin-bottom:8px}.login-form{display:grid;gap:3px}.login-form .primary-button{margin-top:16px}.login-error{padding:11px 13px;border-radius:13px;color:#ffd8d8;background:rgba(255,120,120,.11);border:1px solid rgba(255,120,120,.28);font-size:12px}.login-note{margin:14px 0 0;text-align:center}
.water-card{border-color:rgba(75,188,255,.34);background:linear-gradient(145deg,rgba(18,48,69,.98),rgba(9,23,39,.98))}.water-card h2{margin-bottom:0}.water-percent{font-size:26px;color:#78d7ff}.water-cups{display:grid;grid-template-columns:repeat(8,1fr);gap:6px;margin:15px 0}.water-cup{display:grid;place-items:center;height:32px;border-radius:11px;color:#38546d;background:rgba(255,255,255,.04);border:1px solid rgba(255,255,255,.06);font-size:12px}.water-cup.filled{color:#b8ecff;background:linear-gradient(180deg,rgba(83,199,255,.34),rgba(39,133,209,.2));border-color:rgba(117,215,255,.36)}.water-actions{display:grid;grid-template-columns:1fr 1fr 62px;gap:8px}.water-actions button{min-height:44px;padding:0 8px;font-size:12px}.compact-water{margin-top:13px}.delay-box{margin-top:12px;padding:11px;border-radius:14px;background:rgba(255,210,109,.07);border:1px solid rgba(255,210,109,.18)}.delay-box>span{display:block;color:var(--gold);font-size:11px;font-weight:800;margin-bottom:8px}.delay-box>div{display:grid;grid-template-columns:repeat(3,1fr);gap:6px}.delay-box button{min-height:36px;border:0;border-radius:11px;color:#f7e5b4;background:rgba(255,210,109,.1);font-size:11px;font-weight:900}.task-time small{display:block;margin-top:3px;color:#728196;font-size:8px}.meal-block{display:grid;gap:5px;padding:13px 0;border-bottom:1px solid var(--line)}.meal-block:last-child{border-bottom:0}.meal-block>span{color:var(--gold);font-size:10px;font-weight:900}.meal-block>strong{font-size:14px;line-height:1.45}.meal-block>small{color:var(--muted);font-size:11px;line-height:1.65}.shopping-tags{display:flex;flex-wrap:wrap;gap:7px;margin:12px 0}.shopping-tags span{padding:7px 10px;border-radius:999px;color:#d9f9e8;background:rgba(111,245,173,.08);border:1px solid rgba(111,245,173,.18);font-size:11px}.avatar-card{display:grid;grid-template-columns:1fr 155px;gap:10px;align-items:center;border-color:rgba(111,245,173,.31)}.avatar-copy h2{margin-bottom:7px}.avatar-stage{position:relative;text-align:center}.avatar-stage svg{display:block;width:150px;height:220px;margin:-8px auto -4px;overflow:visible}.avatar-halo{fill:rgba(111,245,173,.045);stroke:rgba(111,245,173,.1)}.avatar-start path{fill:rgba(255,255,255,.07);stroke:rgba(255,255,255,.11);stroke-width:11;stroke-linecap:round;stroke-linejoin:round}.avatar-current path{fill:#35d98d;stroke:#7ef7b7;stroke-width:11;stroke-linecap:round;stroke-linejoin:round;filter:drop-shadow(0 8px 16px rgba(53,217,141,.18))}.avatar-start .avatar-limb,.avatar-current .avatar-limb{fill:none}.avatar-head{fill:#ffd2b5;stroke:#ffeadc;stroke-width:3}.avatar-eye{fill:#213041}.avatar-smile{fill:none;stroke:#b76566;stroke-width:2.5;stroke-linecap:round}.avatar-level{display:inline-block;padding:6px 9px;border-radius:99px;color:var(--green);background:rgba(111,245,173,.08);font-size:10px;font-weight:900}.avatar-numbers{display:grid;grid-template-columns:repeat(3,1fr);gap:6px;margin-top:15px}.avatar-numbers>div{padding:9px 5px;border-radius:13px;background:rgba(255,255,255,.04)}.avatar-numbers strong{display:block;font-size:16px}.avatar-numbers span{display:block;margin-top:2px;color:var(--muted);font-size:8px}.roadmap{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.roadmap-step{padding:11px 7px;border-radius:14px;background:rgba(255,255,255,.035);border:1px solid var(--line)}.roadmap-step span{display:block;color:#8c9bad;font-size:16px;font-weight:900}.roadmap-step small{display:block;margin-top:3px;color:#718198;font-size:9px}.roadmap-step.reached{background:rgba(111,245,173,.08);border-color:rgba(111,245,173,.23)}.roadmap-step.reached span{color:var(--green)}
@media(max-width:420px){.avatar-card{grid-template-columns:1fr 132px}.avatar-stage svg{width:130px;height:202px}.avatar-numbers{grid-template-columns:1fr}.avatar-numbers>div{display:flex;align-items:center;justify-content:space-between}.avatar-numbers span{margin:0}.roadmap{grid-template-columns:repeat(2,1fr)}}
@media(max-width:360px){.water-actions{grid-template-columns:1fr 1fr}.water-actions .ghost-button{grid-column:1/-1}.avatar-card{grid-template-columns:1fr}.avatar-numbers{grid-template-columns:repeat(3,1fr)}.avatar-numbers>div{display:block}.avatar-stage svg{height:190px}}
.water-actions{display:grid;grid-template-columns:1fr;gap:9px}.water-actions .water-main-button{min-height:72px;font-size:24px;font-weight:900;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px}.water-main-button span{font-size:11px;font-weight:600;opacity:.78}.water-other-actions{display:grid;grid-template-columns:1fr 1fr 70px;gap:8px}.water-other-actions button{min-height:42px;padding:0 5px;font-size:12px}.water-reminder-times{margin-top:10px;line-height:1.6}
@media(max-width:360px){.water-actions{grid-template-columns:1fr}.water-actions .ghost-button{grid-column:auto}.water-other-actions{grid-template-columns:1fr 1fr}.water-other-actions .ghost-button{grid-column:1/-1}}
.timeline-item.missed{border-color:rgba(255,210,109,.2)}.timeline-item.skipped{opacity:.62}.timeline-actions{display:flex;flex-wrap:wrap;gap:6px;margin-top:5px}.timeline-actions button{border:1px solid rgba(255,255,255,.13);border-radius:9px;background:#20354a;color:#eff8ff;padding:5px 8px;font-size:10px;font-weight:800}.timeline-actions button:last-child{background:transparent;color:#9eafc1}.skip-link{display:block!important;width:100%;margin-top:9px!important;min-height:38px!important;background:transparent!important;border:1px solid rgba(255,210,109,.25)!important}.time-grid{display:grid;grid-template-columns:1fr 1fr;gap:0 10px}input[type=time]{width:100%;min-width:0;color:var(--text);background:#091423;border:1px solid rgba(255,255,255,.12);border-radius:14px;padding:13px;outline:none}input[type=time]:focus{border-color:var(--green)}.secondary-button:disabled{opacity:.48;cursor:not-allowed}.mini-plan{margin-top:13px}
.completion-ring strong.ring-wait{font-size:13px;white-space:nowrap}.daily-pillars h2{margin-bottom:10px}.daily-pillars .card-head{align-items:start}.text-button{border:0;background:transparent;color:var(--green);font-size:12px;font-weight:800;white-space:nowrap;padding:5px 0}.pillar-row{display:grid;grid-template-columns:100px 1fr;gap:12px;align-items:start;padding:11px 0;border-top:1px solid var(--line)}.pillar-row span{color:var(--muted);font-size:12px}.pillar-row strong{font-size:13px;line-height:1.45;text-align:right}
.timeline-item.prestart{opacity:.6}

/* Food check stays easy to use on a narrow phone. */
.food-ask-form { display:flex; gap:10px; margin-top:12px; }
.food-ask-form input { min-width:0; flex:1; border:1px solid rgba(255,255,255,.18); border-radius:12px; padding:12px; font:inherit; color:#f7fbff; background:#091423; }
.food-ask-form input::placeholder { color:#98aabd; opacity:1; }
.food-ask-form input:focus { outline:2px solid #6ff5ad; outline-offset:1px; }
.food-ask-form button { width:auto; white-space:nowrap; }
.food-answer { margin:14px 0 0; padding:14px; border:1px solid rgba(111,245,173,.22); border-radius:12px; color:#e8fff3; background:#123124; line-height:1.7; white-space:pre-wrap; }
.breakfast-skip { margin-top:10px; }
@media (max-width:480px) { .food-ask-form { flex-direction:column; } .food-ask-form button { width:100%; } }
