:root{--paper:#f4f6f1;--white:#fcfdf9;--ink:#172420;--soft:#53635d;--jade:#245c53;--jade-deep:#17473f;--moss:#dce9df;--line:#c9d4cc;--coral:#c8644c;--danger:#843d2c;--shadow:0 22px 62px rgba(23,36,32,.09);--display:"Iowan Old Style","Songti SC","STSong",Georgia,serif;--body:"PingFang SC","Hiragino Sans GB","Microsoft YaHei",sans-serif;--mono:"SFMono-Regular",Consolas,monospace}
*{box-sizing:border-box}body{margin:0;min-width:320px;background:radial-gradient(circle at 8% 4%,#e1ede4 0,transparent 28rem),var(--paper);color:var(--ink);font:15px/1.65 var(--body)}button,input,textarea,select{font:inherit}button{cursor:pointer}button:focus-visible,input:focus-visible,textarea:focus-visible,select:focus-visible{outline:3px solid rgba(200,100,76,.36);outline-offset:3px}:where(.auth-view,.app-view)[hidden]{display:none!important}.skip-link{position:fixed;top:-80px;left:16px;background:var(--ink);color:#fff;padding:9px 12px;z-index:50}.skip-link:focus{top:16px}
.auth-view{min-height:100vh;display:grid;place-items:center;padding:32px}.auth-paper{width:min(100%,560px);padding:clamp(30px,6vw,64px);background:var(--white);border:1px solid var(--line);border-radius:6px 24px 24px 6px;box-shadow:var(--shadow);position:relative}.auth-paper:before{content:"";position:absolute;inset:0 auto 0 0;width:9px;background:var(--jade)}.brand{display:inline-flex;align-items:center;gap:9px;padding:0;border:0;background:none;color:var(--ink);font:700 21px var(--display);letter-spacing:.03em}.brand small{font:700 10px var(--mono);letter-spacing:.12em;color:var(--soft)}.brand-mark{display:grid;place-items:center;width:34px;height:34px;color:var(--white);background:var(--jade);border-radius:50% 50% 42% 58%;font:18px var(--display);position:relative}.brand-mark:after{content:"";width:7px;height:7px;border:2px solid var(--paper);position:absolute;right:-3px;bottom:1px;border-radius:50%;background:var(--coral)}.eyebrow{margin:38px 0 10px;color:var(--jade);font:800 10px var(--mono);letter-spacing:.11em;text-transform:uppercase}.auth-paper h1,.page-title{font:600 clamp(38px,5vw,56px)/1.16 var(--display);letter-spacing:-.045em;margin:0 0 16px}.lead{color:var(--soft);max-width:44ch;margin:0 0 28px}.auth-paper form{display:grid;gap:10px}.auth-paper label:not(.consent){font-weight:700;font-size:13px}.auth-paper input[type=email],.field textarea,.field select{width:100%;background:var(--paper);border:1px solid var(--line);border-radius:11px;color:var(--ink);padding:12px 13px}.auth-paper input[type=email]:focus,.field textarea:focus,.field select:focus{background:#fff;border-color:var(--jade);outline:0;box-shadow:0 0 0 4px rgba(36,92,83,.09)}.consent{display:flex;gap:9px;align-items:flex-start;color:var(--soft);font-size:12px;margin:6px 0}.consent input{margin-top:4px;accent-color:var(--jade)}.button{border:1px solid transparent;border-radius:12px;min-height:48px;padding:11px 16px;font-weight:750;transition:background .18s,border-color .18s,transform .18s}.button:hover{transform:translateY(-1px)}.primary{color:#fff;background:var(--jade);box-shadow:0 8px 22px rgba(36,92,83,.18)}.primary:hover{background:var(--jade-deep)}.secondary{background:var(--white);color:var(--jade-deep);border-color:var(--line)}.danger{color:var(--danger)}.plain-button{border:0;background:transparent;color:var(--soft);padding:7px 4px;font-size:12px}.plain-button:hover{text-decoration:underline;color:var(--ink)}.form-error{min-height:20px;margin:0;color:var(--danger);font-size:12px}.micro{margin:18px 0 0;color:var(--soft);font-size:12px}.safety-link{position:fixed;bottom:20px;color:var(--danger)}
.app-view{min-height:100vh;display:grid;grid-template-columns:230px 1fr}.sidebar{position:sticky;top:0;height:100vh;padding:28px 18px;display:flex;flex-direction:column;border-right:1px solid var(--line);background:rgba(252,253,249,.52)}.brand-home{margin:0 8px 38px;text-align:left}.side-nav{display:grid;gap:5px}.nav-item{display:flex;align-items:center;gap:11px;width:100%;padding:11px 12px;border:1px solid transparent;background:transparent;border-radius:10px;color:var(--soft);text-align:left;font-weight:650}.nav-item:hover{background:rgba(220,233,223,.62);color:var(--ink)}.nav-item.active{background:var(--moss);border-color:#c2d8c9;color:var(--jade-deep)}.nav-icon{font:18px/1 var(--display);width:16px;text-align:center}.sidebar-bottom{margin-top:auto;display:grid;gap:5px;padding:12px 8px}.user-email{overflow:hidden;text-overflow:ellipsis;color:var(--soft);font-size:11px;white-space:nowrap}.app-column{min-width:0}.topbar{height:72px;display:flex;justify-content:space-between;align-items:center;padding:0 clamp(20px,4vw,56px);border-bottom:1px solid var(--line);background:rgba(244,246,241,.72);backdrop-filter:blur(12px);position:sticky;top:0;z-index:5}.topbar p{margin:0;font:800 10px var(--mono);letter-spacing:.12em;text-transform:uppercase}.mobile-brand{display:none;border:0;background:none}.content{width:min(100% - 48px,1000px);margin:0 auto;padding:clamp(34px,6vw,72px) 0 100px}.view-intro{display:flex;justify-content:space-between;align-items:end;gap:20px;margin-bottom:30px}.view-intro p{margin:0;color:var(--soft);max-width:45ch}.page-title{font-size:clamp(34px,4vw,49px);margin:0 0 8px}.card{background:var(--white);border:1px solid var(--line);border-radius:16px;padding:clamp(19px,3vw,30px);box-shadow:0 15px 40px rgba(23,36,32,.045)}.action-card,.practice-card{border-left:7px solid var(--jade)}.practice-card{display:grid;grid-template-columns:1fr auto;align-items:center;gap:20px;border-left-color:var(--coral)}.card-kicker{color:var(--jade);font:800 10px var(--mono);letter-spacing:.1em;text-transform:uppercase;margin:0 0 12px}.action-card h2,.practice-card h2{font:600 clamp(25px,3.3vw,36px)/1.38 var(--display);margin:0 0 14px}.practice-card p{color:var(--soft);margin:0;max-width:48ch}.card-row,.modal-actions{display:flex;flex-wrap:wrap;gap:10px;align-items:center}.due{color:var(--soft);font-size:12px}.split{display:grid;grid-template-columns:1.1fr .9fr;gap:18px}.metric-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:18px}.metric{padding:23px;border:1px solid var(--line);border-radius:14px;background:rgba(252,253,249,.72)}.metric strong{display:block;font:700 38px var(--display);color:var(--jade)}.metric span{color:var(--soft);font-size:12px}.empty{border:1px dashed var(--line);border-radius:15px;padding:31px;background:rgba(252,253,249,.45)}.empty h2{font:600 27px var(--display);margin:0 0 8px}.empty p{color:var(--soft);margin:0 0 18px}.badge{display:inline-block;margin-top:13px;padding:4px 8px;background:var(--moss);border-radius:99px;color:var(--jade-deep);font:800 10px var(--mono);letter-spacing:.07em}.section-gap{margin-top:18px}
.progress-head{display:flex;align-items:center;justify-content:space-between;gap:15px;margin-bottom:20px}.progress-head span{font:800 11px var(--mono);letter-spacing:.1em}.progress-track{height:5px;background:var(--moss);border-radius:20px;overflow:hidden}.progress-track i{display:block;height:100%;background:var(--coral);transition:width .25s}.exercise{max-width:780px}.exercise .card{padding:clamp(24px,5vw,54px)}.exercise h2{font:600 clamp(31px,4vw,47px)/1.25 var(--display);letter-spacing:-.035em;margin:0 0 12px}.exercise-help{color:var(--soft);margin:0 0 28px}.field{display:grid;gap:8px}.field label{font-weight:750;font-size:13px}.field small{color:var(--soft);font-weight:400}.field textarea{min-height:150px;resize:vertical;line-height:1.65}.two-fields{display:grid;grid-template-columns:1fr 1fr;gap:14px}.chip-row{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:22px}.chip{padding:8px 12px;border:1px solid var(--line);border-radius:99px;color:var(--soft);background:var(--paper)}.chip.selected{color:var(--jade-deep);background:var(--moss);border-color:var(--jade)}.range-box{padding:17px;border:1px solid var(--line);border-radius:12px;background:var(--paper)}.range-box label{display:flex;justify-content:space-between;font-weight:750}.range-box output{font:700 27px var(--display);color:var(--jade)}.range-box input{width:100%;accent-color:var(--coral)}.suggestions{display:grid;gap:8px;margin:0 0 15px}.suggestion{padding:11px;border:1px solid var(--line);border-radius:10px;background:var(--paper);text-align:left;color:var(--soft);font-size:12px}.suggestion:hover{border-color:var(--jade);background:#fff;color:var(--ink)}.exercise-actions{display:flex;justify-content:space-between;gap:12px;margin-top:31px}.exercise-actions .button{min-width:128px}.board{margin-top:18px;padding:18px;border:1px solid var(--line);border-radius:13px;background:rgba(252,253,249,.62)}.board h3{font:600 20px var(--display);margin:0 0 10px}.board-item{padding:8px 0;border-bottom:1px solid var(--line);font-size:12px}.board-item:last-child{border:0}.board-item b{font:800 9px var(--mono);color:var(--coral);letter-spacing:.08em;margin-right:7px}.timeline{display:grid;gap:10px}.timeline-item{padding:15px;border:1px solid var(--line);border-radius:12px;background:var(--white)}.timeline-item strong{display:block;font-size:14px}.timeline-item span{font-size:12px;color:var(--soft)}
.modal-backdrop{position:fixed;inset:0;z-index:20;background:rgba(23,36,32,.48);padding:20px;align-items:center;justify-content:center}.modal-backdrop:not([hidden]){display:flex}.modal{width:min(560px,100%);max-height:calc(100vh - 40px);overflow:auto;padding:28px;background:var(--white);border-radius:17px;box-shadow:var(--shadow)}.modal h2{font:600 30px var(--display);margin:0 0 10px}.modal p,.modal li{color:var(--soft)}.toast{position:fixed;right:20px;bottom:20px;z-index:30;padding:12px 15px;color:#fff;background:var(--ink);border-radius:9px;transform:translateY(15px);opacity:0;pointer-events:none;transition:.2s}.toast.show{transform:none;opacity:1}.mobile-nav{display:none}
@media(max-width:760px){.app-view{display:block}.sidebar{display:none}.topbar{height:64px}.mobile-brand{display:block}.content{width:min(100% - 30px,1000px);padding:32px 0 96px}.view-intro{display:block}.split,.two-fields,.metric-grid{grid-template-columns:1fr}.practice-card{grid-template-columns:1fr}.mobile-nav{display:grid;grid-template-columns:repeat(3,1fr);position:fixed;z-index:10;left:0;right:0;bottom:0;padding:8px 12px calc(8px + env(safe-area-inset-bottom));background:rgba(252,253,249,.95);border-top:1px solid var(--line);backdrop-filter:blur(12px)}.mobile-nav button{padding:9px;border:0;background:transparent;color:var(--soft);font-weight:700}.mobile-nav button.active{color:var(--jade)}.auth-view{padding:18px}.auth-paper{padding:35px 29px}.auth-paper h1{font-size:43px}.safety-link{position:static;margin-top:20px}.exercise-actions{position:sticky;bottom:0;padding:15px 0 0;background:linear-gradient(transparent,var(--white) 35%)}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{transition:none!important;animation:none!important}}
