:root{--ink: #24302b;--ink-soft: #67746c;--sage: #5e7c6a;--sage-deep: #4f9d6a;--clay: #d66b4a;--clay-deep: #b84834;--cream: #f7f3ea;--paper: #fffaf2;--paper-soft: rgba(255, 252, 246, .82);--line: rgba(36, 48, 43, .12);--line-strong: rgba(36, 48, 43, .18);--radius-lg: 18px;--radius-md: 12px;--radius-sm: 10px;--shadow-soft: 0 18px 44px rgba(71, 54, 38, .1);--shadow-card: 0 8px 22px rgba(71, 54, 38, .08);--gradient-progress: linear-gradient(90deg, #6fb98a, #d66b4a);color:var(--ink);background:var(--cream);font-family:Inter,PingFang SC,Microsoft YaHei,system-ui,sans-serif;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased}*{box-sizing:border-box}body{margin:0;min-width:320px;min-height:100vh;background:radial-gradient(120% 120% at 12% 8%,rgba(94,124,106,.16),transparent 42%),radial-gradient(120% 120% at 92% 92%,rgba(214,107,74,.16),transparent 44%),var(--cream);background-attachment:fixed}button,textarea,input{font:inherit}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.45}.app-shell{display:grid;grid-template-columns:300px minmax(0,1fr);min-height:100vh}.sidebar{display:flex;flex-direction:column;gap:16px;padding:22px;background:#fffcf6db;border-right:1px solid var(--line);-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px)}.brand{display:flex;align-items:center;gap:12px}.brand-mark{display:grid;width:46px;height:46px;place-items:center;border-radius:14px;color:#fffaf2;background:linear-gradient(135deg,#6fb98a,#4f9d6a);font-size:22px;font-weight:800;box-shadow:0 6px 16px #5e7c6a59}.brand p,.topbar p,.task-heading p,.review-detail>p{margin:0 0 4px;color:var(--ink-soft);font-size:13px}.brand strong{font-size:18px}.profile-panel,.status-band,.report-band{border:1px solid var(--line);border-radius:var(--radius-md);background:var(--paper-soft);box-shadow:var(--shadow-card)}.profile-panel{display:flex;align-items:flex-start;gap:10px;padding:14px}.profile-panel div{display:grid;gap:4px}.profile-panel span{color:var(--ink-soft);font-size:12px;line-height:1.4}.points-badge{display:flex;align-items:center;gap:8px;padding:10px 14px;border-radius:var(--radius-md);border:1px solid rgba(214,107,74,.3);background:linear-gradient(135deg,#d66b4a1f,#ffd1662e);color:var(--clay-deep);font-size:13px}.points-badge strong{margin-left:auto;font-size:16px}.view-tabs{display:grid;grid-template-columns:1fr;gap:8px}.view-tabs button,.day-pill,.module-button,.review-item,.icon-button,.record-button{border:1px solid var(--line-strong);background:var(--paper-soft);color:var(--ink)}.view-tabs button{display:flex;align-items:center;gap:10px;min-height:44px;padding:10px 12px;border-radius:var(--radius-sm);text-align:left;transition:transform .12s ease,border-color .12s ease,background .12s ease}.view-tabs button:hover{transform:translateY(-1px);border-color:var(--sage)}.view-tabs button.active,.day-pill.active,.module-button.active,.review-item.active{border-color:var(--sage);background:#e9f0e8;box-shadow:inset 0 0 0 1px #5e7c6a40}.day-list{display:grid;gap:8px;overflow:auto;padding-right:2px}.day-pill{display:flex;align-items:center;justify-content:space-between;min-height:42px;padding:8px 12px;border-radius:var(--radius-sm);transition:transform .12s ease,border-color .12s ease}.day-pill:hover{transform:translateY(-1px);border-color:var(--sage)}.day-pill small{color:var(--ink-soft);font-size:11px}.workspace{display:flex;flex-direction:column;gap:18px;min-width:0;padding:22px}.topbar{display:grid;grid-template-columns:44px 1fr 44px;align-items:center;gap:12px}.topbar h1{margin:0;font-size:clamp(28px,4vw,46px);letter-spacing:0;background:linear-gradient(120deg,#2f3f37,#4f9d6a);-webkit-background-clip:text;background-clip:text;color:transparent}.icon-button{display:grid;width:44px;height:44px;place-items:center;border-radius:var(--radius-sm);transition:transform .12s ease,background .12s ease}.icon-button:not(:disabled):hover{transform:translateY(-1px);background:#e9f0e8}.status-band{display:grid;grid-template-columns:1.6fr 1fr .8fr;gap:16px;padding:16px}.status-band div,.report-band div{display:grid;gap:6px}.status-band span,.report-band span,.module-button span,.review-item span,.answer-area span,.question-row span,.recorder span{color:var(--ink-soft);font-size:13px}.status-band strong,.report-band strong{font-size:18px}.progress-track{height:9px;overflow:hidden;border-radius:999px;background:#24302b1f}.progress-track div{height:100%;border-radius:inherit;background:var(--gradient-progress);transition:width .24s ease}.content-grid{display:grid;grid-template-columns:minmax(220px,28%) minmax(0,1fr);gap:18px;min-height:0}.module-rail,.review-list{display:grid;align-content:start;gap:10px}.module-button{display:grid;grid-template-columns:1fr 22px;gap:6px 10px;min-height:82px;padding:12px;border-radius:var(--radius-md);text-align:left;transition:transform .12s ease,border-color .12s ease,box-shadow .12s ease}.module-button:hover{transform:translateY(-2px);box-shadow:var(--shadow-card);border-color:var(--sage)}.module-button span{grid-column:1 / -1}.module-button strong{line-height:1.35}.task-surface,.review-detail{min-width:0;padding:22px;border:1px solid var(--line);border-radius:var(--radius-lg);background:var(--paper-soft);box-shadow:var(--shadow-soft)}.task-heading{display:flex;justify-content:space-between;gap:18px;padding-bottom:16px;border-bottom:1px solid rgba(36,48,43,.1)}.task-heading h2,.review-detail h2{margin:0;font-size:26px;letter-spacing:0}.task-heading span{display:inline-block;margin-top:6px;color:var(--ink-soft)}.task-content{display:grid;gap:10px;margin:18px 0;font-size:17px;line-height:1.75}.task-content p{margin:0}.question-list{display:grid;gap:10px;margin-bottom:18px}.question-row{display:grid;gap:4px;padding:12px 14px;border-left:4px solid var(--clay);border-radius:0 var(--radius-sm) var(--radius-sm) 0;background:#d66b4a14;animation:fade-in .24s ease both}.scaffold-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin:18px 0}.scaffold-card{display:grid;align-content:start;gap:10px;min-width:0;padding:14px;border:1px solid var(--line);border-radius:var(--radius-md);background:#fffaf1;box-shadow:var(--shadow-card)}.scaffold-card h3{margin:0;font-size:16px;letter-spacing:0}.scaffold-card ol,.scaffold-card ul{display:grid;gap:8px;margin:0;padding-left:20px}.scaffold-card li{line-height:1.55}.template-lines{display:grid;gap:8px}.template-lines code{display:block;white-space:normal;word-break:break-word;padding:8px 10px;border-radius:6px;color:var(--ink);background:#5e7c6a1a;font-family:SFMono-Regular,Consolas,Liberation Mono,monospace}.example-card{background:#f4f7ee}.example-card p{margin:0;line-height:1.65}.example-card span{color:var(--sage);font-weight:700}.checklist-card{background:#eef4f7}.checklist-card ul{padding-left:0;list-style:none}.checklist-card li{display:grid;grid-template-columns:20px 1fr;align-items:start;gap:8px}.checklist-card input{width:18px;height:18px;margin:3px 0 0;accent-color:var(--sage)}.answer-area{display:grid;gap:8px}.answer-area textarea,.reward-add input{width:100%;resize:vertical;border:1px solid var(--line-strong);border-radius:var(--radius-md);padding:14px;color:var(--ink);background:#fffdf8;line-height:1.7;outline:none}.answer-area textarea:focus{border-color:var(--sage);box-shadow:0 0 0 3px #5e7c6a29}.fill-small{min-height:130px}.fill-medium{min-height:190px}.fill-large{min-height:300px}.recorder{display:flex;flex-wrap:wrap;align-items:center;gap:12px;margin-bottom:18px;padding:12px;border-radius:var(--radius-md);background:#eef4f7}.record-button{display:inline-flex;align-items:center;gap:8px;min-height:40px;padding:8px 12px;border-radius:var(--radius-sm);transition:transform .12s ease}.record-button:not(:disabled):hover{transform:translateY(-1px)}.record-button.active{color:#fffdf8;border-color:var(--clay-deep);background:var(--clay-deep)}.audio-playback{display:grid;flex-basis:100%;gap:6px}.audio-playback audio,.student-response audio{width:100%}.parent-layout{display:grid;gap:18px}.report-band{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;padding:16px}.report-band div{grid-template-columns:24px 1fr;align-items:center}.report-band strong{grid-column:2}.review-grid{display:grid;grid-template-columns:230px minmax(0,1fr);gap:18px}.review-item{display:flex;align-items:center;justify-content:space-between;min-height:58px;padding:12px;border-radius:var(--radius-md)}.student-response{display:grid;gap:10px;min-height:160px;margin:18px 0;padding:16px;border-radius:var(--radius-md);background:#5e7c6a14}.student-response p{margin:0;white-space:pre-wrap;line-height:1.7}.parent-comment textarea{min-height:180px}.growth-layout{display:grid;gap:18px}.points-header{display:grid;grid-template-columns:1fr 1fr 1.4fr;gap:14px;padding:18px;border-radius:var(--radius-lg);background:linear-gradient(120deg,#5e7c6a24,#ffd16633);border:1px solid rgba(94,124,106,.2);box-shadow:var(--shadow-soft)}.points-total,.points-available{display:flex;align-items:center;gap:12px}.points-total svg,.points-available svg{color:var(--clay)}.points-total span,.points-available span{display:block;color:var(--ink-soft);font-size:13px}.points-total strong,.points-available strong{font-size:30px;color:var(--ink)}.points-hint{display:grid;align-content:center;gap:2px}.points-hint span{font-size:14px;font-weight:600}.points-hint small{color:var(--ink-soft);font-size:12px}.companion-card{display:grid;grid-template-columns:200px 1fr;gap:20px;align-items:center;padding:22px;border-radius:var(--radius-lg);background:var(--paper-soft);border:1px solid var(--line);box-shadow:var(--shadow-soft)}.companion-stage{width:100%;max-width:200px;aspect-ratio:1;padding:14px;border-radius:var(--radius-lg);background:radial-gradient(circle at 50% 40%,#7bbf8a38,#fffaf1e6);cursor:pointer;transition:transform .14s ease}.companion-stage:hover{transform:translateY(-2px)}.companion-stage svg{width:100%;height:100%}.plant-bounce{animation:plant-bounce .6s ease}.companion-stage .grow{animation:grow-in .42s ease both;transform-origin:100px 146px}.companion-meta{display:grid;gap:12px}.companion-level{display:inline-flex;align-items:center;gap:8px;justify-self:start;padding:6px 14px;border-radius:999px;background:#5e7c6a29;color:var(--sage);font-weight:700;font-size:14px}.companion-cheer{margin:0;font-size:17px;line-height:1.7;color:var(--ink)}.companion-progress-track{height:10px;overflow:hidden;border-radius:999px;background:#24302b1f}.companion-progress-track div{height:100%;border-radius:inherit;background:var(--gradient-progress);transition:width .32s ease}.companion-progress small{color:var(--ink-soft);font-size:12px}.rewards-section{padding:22px;border-radius:var(--radius-lg);background:var(--paper-soft);border:1px solid var(--line);box-shadow:var(--shadow-soft)}.rewards-head,.approval-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px}.rewards-head h2,.approval-head h2,.reward-manage-section h2{display:flex;align-items:center;gap:8px;margin:0;font-size:20px}.pending-badge{padding:4px 12px;border-radius:999px;background:#d66b4a29;color:var(--clay-deep);font-size:13px;font-weight:600}.rewards-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:14px}.reward-card{display:grid;justify-items:center;gap:8px;padding:18px 14px;border-radius:var(--radius-md);border:1px solid var(--line-strong);background:#fffdf8;text-align:center;transition:transform .14s ease,box-shadow .14s ease,border-color .14s ease}.reward-card:not(.locked):hover{transform:translateY(-3px);box-shadow:var(--shadow-card);border-color:var(--sage)}.reward-icon{font-size:34px;line-height:1}.reward-card strong{font-size:15px}.reward-cost{display:inline-flex;align-items:center;gap:4px;color:var(--clay-deep);font-size:13px;font-weight:600}.reward-card.locked .reward-cost{color:var(--ink-soft)}.my-redeem{margin-top:18px;padding-top:16px;border-top:1px dashed var(--line)}.my-redeem h3{margin:0 0 10px;font-size:16px}.my-redeem ul,.approval-list,.reward-manage-list{display:grid;gap:10px;margin:0;padding:0;list-style:none}.my-redeem li{display:flex;align-items:center;gap:10px}.my-redeem-icon{font-size:20px}.my-redeem-name{flex:1}.my-redeem-status{padding:3px 10px;border-radius:999px;font-size:12px;font-weight:600}.my-redeem-status.pending{background:#d66b4a29;color:var(--clay-deep)}.my-redeem-status.approved{background:#5e7c6a2e;color:var(--sage)}.my-redeem-status.rejected{background:#24302b1a;color:var(--ink-soft)}.approval-section,.reward-manage-section{padding:22px;border-radius:var(--radius-lg);background:var(--paper-soft);border:1px solid var(--line);box-shadow:var(--shadow-soft)}.approval-empty{color:var(--ink-soft);margin:0}.approval-item{display:flex;align-items:center;gap:12px;padding:12px 14px;border-radius:var(--radius-md);border:1px solid var(--line);background:#fffdf8}.approval-icon{font-size:26px}.approval-info{display:grid;gap:2px;flex:1}.approval-info small{color:var(--ink-soft);font-size:12px}.approval-actions{display:flex;gap:8px}.approve-button,.reject-button,.reward-add button{min-height:38px;padding:8px 16px;border-radius:var(--radius-sm);border:1px solid transparent;font-weight:600;transition:transform .12s ease,filter .12s ease}.approve-button{background:var(--sage);color:#fff}.reject-button{background:transparent;border-color:var(--line-strong);color:var(--ink-soft)}.approve-button:hover,.reject-button:hover,.reward-add button:hover{transform:translateY(-1px);filter:brightness(1.05)}.reward-manage-item{display:flex;align-items:center;gap:10px;padding:10px 14px;border-radius:var(--radius-md);border:1px solid var(--line);background:#fffdf8}.reward-manage-item span[aria-hidden]{font-size:22px}.reward-manage-item strong{flex:1}.reward-manage-item small{color:var(--ink-soft)}.reward-tag{padding:2px 10px;border-radius:999px;background:#5e7c6a29;color:var(--sage);font-size:12px}.reward-delete{width:28px;height:28px;border-radius:50%;border:1px solid var(--line-strong);background:transparent;color:var(--ink-soft);font-size:18px;line-height:1}.reward-add{display:flex;flex-wrap:wrap;gap:10px;margin-top:14px}.reward-add input[type=text]{flex:2 1 200px}.reward-add input[type=number]{flex:1 1 90px}.reward-add button{background:var(--clay);color:#fff}.toast{position:fixed;left:50%;bottom:32px;transform:translate(-50%);padding:14px 22px;border-radius:999px;background:var(--ink);color:#fff;font-weight:600;box-shadow:0 12px 30px #00000040;animation:toast-in .26s ease both;z-index:50}@keyframes fade-in{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}@keyframes grow-in{0%{opacity:0;transform:scale(.7)}to{opacity:1;transform:scale(1)}}@keyframes plant-bounce{0%,to{transform:translateY(0)}40%{transform:translateY(-10px)}70%{transform:translateY(-4px)}}@keyframes toast-in{0%{opacity:0;transform:translate(-50%,12px)}to{opacity:1;transform:translate(-50%)}}@media(max-width:900px){.app-shell{grid-template-columns:1fr}.sidebar{position:static;border-right:0;border-bottom:1px solid var(--line)}.day-list{grid-template-columns:repeat(5,minmax(96px,1fr))}.content-grid,.review-grid,.status-band,.report-band,.scaffold-grid{grid-template-columns:1fr}.companion-card{grid-template-columns:1fr;justify-items:center;text-align:center}.module-rail{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:560px){.workspace,.sidebar{padding:14px}.topbar h1{font-size:28px}.points-header{grid-template-columns:1fr 1fr}.module-rail,.day-list{grid-template-columns:1fr}.task-surface,.review-detail{padding:16px}}@media print{body{background:#fff}.app-shell{display:block}.sidebar,.topbar button,.view-tabs,.record-button,.audio-playback,.growth-layout,.approval-section,.reward-manage-section,.toast{display:none}.workspace{padding:0}.status-band,.content-grid,.review-grid,.report-band{display:block}.task-surface,.review-detail{box-shadow:none;border:0;padding:0}.answer-area textarea{min-height:260px;border:1px solid #999}}
