:root{font-family:"PingFang SC","Hiragino Sans GB","Microsoft YaHei",system-ui,sans-serif;color:#26314b;background:#14233d;font-size:16px}
*{box-sizing:border-box}
body{margin:0}
.shell{max-width:1320px;min-height:100vh;margin:auto}
.topbar{height:82px;display:flex;align-items:center;justify-content:space-between;padding:0 4%;color:#fff}
.brand{display:flex;align-items:center;gap:12px;font-size:1.35rem;font-weight:900}
.brand-icon{width:38px;height:38px;display:grid;place-items:center;border-radius:12px;background:#ffd470;color:#14233d;transform:rotate(-8deg);font-size:1.5rem}
.header-note{color:#cfd8ec;font-weight:700}
.layout{display:grid;grid-template-columns:minmax(0,1fr) 300px;align-items:start;gap:22px;padding:0 4% 50px}
.reading-card,.sidebar{border-radius:26px;box-shadow:0 14px 0 rgba(0,0,0,.13)}
.reading-card{min-height:650px;background:#fffaf0;padding:clamp(25px,4vw,55px)}
.article-top{display:flex;justify-content:space-between;align-items:start;gap:18px}
.eyebrow{margin:0 0 10px;color:#b3533e;font-weight:900;letter-spacing:.12em;font-size:.86rem}
h1{margin:0;color:#14233d;font-size:clamp(2rem,3.7vw,3.35rem);line-height:1.25}
.theme-tag{flex:none;background:#daf1e7;color:#195b49;border:2px solid #95c9b3;border-radius:100px;padding:8px 13px;font-size:.85rem;font-weight:900}
.article-kind{display:inline-block;margin:18px 0 0;color:#6b7589;font-size:.92rem;font-weight:800}
.article-body{max-width:760px;margin:22px auto 35px;color:#26314b;font-size:clamp(1.12rem,1.8vw,1.3rem);line-height:2.15;letter-spacing:.025em}
.article-body p{margin:0 0 1.2em;text-indent:2em}
.writing-tip{display:flex;align-items:start;gap:13px;max-width:760px;margin:auto;background:#e8f4ec;border-left:5px solid #388f70;border-radius:14px;padding:16px 20px;line-height:1.65}
.tip-icon{font-size:1.3rem}
.writing-tip strong{color:#245a49}
.writing-tip p{margin:4px 0 0;color:#3d594f}
.finish-zone{max-width:760px;margin:34px auto 0;padding-top:25px;border-top:2px dashed #d9d0be;text-align:center}
.finish-zone>p:first-child{margin:0 0 17px;font-weight:800;color:#596477}
.checkin-button{min-height:60px;border:2px solid #14233d;border-radius:16px;background:#ffd470;box-shadow:5px 5px 0 #14233d;color:#14233d;padding:12px 26px;font:900 1.12rem "PingFang SC",system-ui,sans-serif;cursor:pointer}
.checkin-button:hover:not(:disabled){background:#ffe19a;transform:translateY(-2px)}
.checkin-button:disabled{background:#d9ebdf;box-shadow:none;border-color:#8cbca1;color:#285c45;cursor:default}
.status{min-height:1.6em;margin:18px 0 0;color:#287655;font-weight:800}
.concept-reveal{max-width:760px;margin:30px auto 0;padding:26px;border:1px solid #9fc8ad;border-radius:18px;background:#f1f7f2;scroll-margin-top:24px}
.concept-reveal h2{margin:0;color:#14233d;font-size:clamp(1.35rem,2.5vw,1.8rem);line-height:1.5}
.concept-field{color:#596477;font-size:.9rem;margin:10px 0 20px}
.concept-body{font-size:1.05rem;line-height:1.95}
.concept-body p{margin:0 0 16px}
.concept-reference{padding-top:16px;border-top:1px solid #c9ddce;font-size:.9rem;line-height:1.8;overflow-wrap:anywhere}
.concept-reference summary{cursor:pointer;color:#245a49;font-weight:800}
.concept-reference a{display:block;margin-top:12px;color:#245a49;text-underline-offset:4px}
@media(max-width:600px){.concept-reveal{padding:20px 16px}}
.checkin-celebration{position:relative;isolation:isolate;overflow:hidden;margin:22px auto 0;padding:24px 20px;border:2px solid #e4bd62;border-radius:20px;background:linear-gradient(145deg,#fff5cd,#e8f4ec);animation:celebration-pop .45s ease-out}
.celebration-star{display:inline-block;font-size:3rem;line-height:1.4;animation:celebration-flip 1.4s ease-in-out 2}
.checkin-celebration h3{margin:8px 0;color:#14233d;font-size:1.4rem}
.celebration-joke{margin:8px 0;color:#596477;font-size:.92rem;line-height:1.7}
.celebration-reminder{margin:16px 0 0;font-size:1.08rem;line-height:1.8;font-weight:900;color:#245a49}
.checkin-celebration .journey-text-link{margin-top:12px}
.celebration-confetti{position:absolute;inset:0;z-index:-1;pointer-events:none;overflow:hidden}
.celebration-piece{position:absolute;top:-18px;width:9px;height:15px;border-radius:3px;animation:celebration-fall ease-in forwards}
@keyframes celebration-pop{from{opacity:0;transform:translateY(12px) scale(.96)}to{opacity:1;transform:translateY(0) scale(1)}}
@keyframes celebration-flip{0%,100%{transform:translateY(0) rotate(0)}35%{transform:translateY(-12px) rotate(-15deg)}75%{transform:translateY(0) rotate(360deg)}}
@keyframes celebration-fall{from{opacity:1;transform:translateY(0) rotate(0)}to{opacity:0;transform:translate(var(--drift),350px) rotate(540deg)}}
@media(prefers-reduced-motion:reduce){.checkin-celebration,.celebration-star,.celebration-piece{animation:none}}
.sidebar{background:#243657;color:#fff;padding:26px;position:sticky;top:18px}
.sidebar-head{display:flex;align-items:center;gap:13px}
.star{display:grid;place-items:center;flex:none;width:48px;height:48px;background:#ffd470;border-radius:14px;color:#14233d;font-size:1.6rem}
.sidebar .eyebrow{color:#ffd470;margin-bottom:5px;font-size:.77rem}
.sidebar h2{margin:0;font-size:1.35rem}
.stats{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin:28px 0}
.stats>div{background:#334768;border-radius:16px;padding:15px;display:grid;gap:5px}
.stats strong{color:#ffd470;font-size:2rem}
.stats span{font-size:.82rem;color:#d5deef;font-weight:700}
.sidebar h3{font-size:1rem;margin:0 0 13px}
.week-track{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:6px}
.day-item{display:grid;place-items:center;gap:7px;border-radius:10px;background:#354a6c;padding:9px 0;color:#c9d3e6;font-size:.77rem}
.day-item strong{font-size:1rem;color:#fff}
.day-item.done{background:#397a67}
.day-item.done strong{color:#ffd470}
.day-item.today{outline:2px solid #ffd470;outline-offset:2px}
.sidebar-note{margin:24px 0 0;color:#d5deef;line-height:1.7;font-size:.9rem}
.quiz-section{max-width:760px;margin:32px auto;padding:24px 0;border-top:2px dashed #d9d0be}
.quiz-section h2{margin:0;color:#14233d;font-size:1.65rem}
.quiz-intro{color:#596477;line-height:1.7;margin:10px 0 24px}
.quiz-question{border:0;padding:0;margin:0 0 26px;min-width:0}
.quiz-question legend{font-size:1.1rem;font-weight:800;line-height:1.7;padding:0;margin:0 0 12px;width:100%}
.quiz-option{display:flex;align-items:center;gap:12px;border:2px solid #e0d7c6;border-radius:13px;background:#fff;padding:13px 15px;margin:9px 0;line-height:1.65;cursor:pointer;min-height:54px}
.quiz-option input{flex:none;width:20px;height:20px;margin:0;accent-color:#287655}
.quiz-option span{flex:1;min-width:0}
.quiz-option:has(input:checked){border-color:#b77b22;background:#fff0cc}
.quiz-option.is-correct{border-color:#7fb398;background:#e8f4ec}
.quiz-option small{color:#245a49;font-weight:800;flex:none}
.quiz-question:disabled .quiz-option{cursor:default;color:#26314b}
.quiz-feedback{background:#e8f4ec;color:#245a49;line-height:1.8;padding:13px 16px;border-radius:12px;margin:12px 0 0}
.quiz-submit{font:800 1rem "PingFang SC",system-ui,sans-serif;min-height:50px;border:2px solid #14233d;border-radius:13px;background:#ffd470;color:#14233d;padding:12px 20px;cursor:pointer}
.quiz-submit:disabled{background:#eee8da;color:#687184;border-color:#b8b5ad;cursor:default}
.report-link{display:inline-block;margin-top:18px;color:#ffd470;font-weight:800;text-underline-offset:4px}
.topbar .report-link{margin-top:0;font-size:.9rem}
.reading-report{max-width:1000px;margin:auto;padding:0 4% 50px}
.reading-report h1{font-size:clamp(1.8rem,3.5vw,2.6rem)}
.reading-report h2{margin:32px 0 16px;font-size:1.4rem}
.report-stats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin-top:24px}
.report-stat{display:grid;gap:8px;padding:18px;border-radius:14px;background:#e9eef3}
.report-stat strong{font-size:2rem;color:#14233d}
.report-stat span{font-size:.86rem;color:#596477;line-height:1.6}
.report-note{line-height:1.8;color:#596477;font-size:.95rem}
.report-total{grid-column:1/-1;margin:0}
.skill-stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:12px}
.skill-stat{display:grid;gap:8px;background:#e8f4ec;border-radius:12px;padding:16px}
.skill-stat small{color:#596477}
.answer-day{border:2px solid #e0d7c6;border-radius:14px;padding:16px;margin:14px 0;line-height:1.7}
.answer-day summary{cursor:pointer;font-weight:800;overflow-wrap:anywhere}
.answer-record{margin-top:20px;padding-top:16px;border-top:1px dashed #d9d0be}
.answer-record h3{font-size:1rem;margin:0 0 10px}
.answer-record p{margin:8px 0}
.answer-evidence{background:#e8f4ec;padding:12px;border-radius:10px}
.adventure-link{display:grid;gap:8px;margin-top:26px;padding:16px;border:2px solid #e4bd62;border-radius:14px;background:#334768;color:#ffd470;text-decoration:none;line-height:1.65}
.adventure-link span{font-size:.84rem;color:#e0e8f5}
.adventure-page{padding:0 4% 50px;display:grid;gap:22px}
.journey-card{background:#fffaf0;border-radius:26px;padding:clamp(24px,4vw,42px);box-shadow:0 10px 0 rgba(0,0,0,.12)}
.journey-card h1{font-size:clamp(1.8rem,3.5vw,2.7rem)}
.journey-card h2{font-size:1.7rem;color:#14233d;margin:0 0 12px}
.journey-progress{font-weight:800;color:#245a49;line-height:1.8;margin:18px 0 14px}
.journey-note{color:#596477;font-size:.95rem;line-height:1.8;margin:12px 0}
#map-progress{display:block;width:100%;height:14px;border:0;border-radius:20px;overflow:hidden;appearance:none;background:#e9e1d0}
#map-progress::-webkit-progress-bar{background:#e9e1d0;border-radius:20px}
#map-progress::-webkit-progress-value{background:#388f70;border-radius:20px}
#map-progress::-moz-progress-bar{background:#388f70;border-radius:20px}
.adventure-map{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:12px;list-style:none;padding:0;margin:25px 0}
.map-stop{display:grid;justify-items:center;align-content:center;gap:7px;min-height:80px;padding:10px 5px;border:2px solid #d8d3c8;border-radius:15px;background:#eee9df;color:#687184;text-align:center}
.map-stop strong{font-size:1.3rem}
.map-stop span{font-size:.8rem;line-height:1.4}
.map-stop.is-done{background:#e0f0e4;border-color:#9fc8ad;color:#245a49}
.map-stop.is-milestone{border-color:#b68a34}
.map-stop.is-done.is-milestone{background:#ffedb9;color:#775118}
.map-stop.is-next{border:2px dashed #bb882a;background:#fff4d4;color:#775118}
.journey-nav{display:flex;flex-wrap:wrap;gap:12px 24px}
.journey-nav a,.journey-text-link{color:#245a49;font-weight:800;text-underline-offset:4px;line-height:1.8}
#reward-message:empty{display:none}
.reward-cards{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px;margin-top:22px;align-items:stretch}
.reward-card{display:flex;flex-direction:column;min-width:0;padding:22px;border:2px solid #ded6c6;border-radius:18px;background:#f2eee5}
.reward-card>form{display:flex;flex-direction:column;flex:1;min-width:0}
.reward-card>form>.journey-button{align-self:flex-start;margin-top:auto}
.reward-card>form>.avatar-grid,.reward-card>form>select:last-of-type{margin-bottom:18px}
.reward-card.is-unlocked{border-color:#d5af58;background:#fff}
.reward-card.reward-grand{grid-column:1/-1;background:#fffdf5;border-color:#d5af58}
.prize-gallery{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px;margin:22px 0 18px}
.prize-gallery.single-prize{grid-template-columns:1fr;max-width:360px}
.prize-card{margin:0;min-width:0;background:#fff;border:2px solid #e5d7b4;border-radius:18px;overflow:hidden}
.prize-visual{height:230px;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:16px;background:#fff}
.prize-visual img{display:block;width:100%;height:100%;object-fit:contain}
.prize-eggy328 .prize-visual{background:linear-gradient(145deg,#fff7c8,#ffe791)}
.prize-eggy328 .prize-visual img{width:88%;height:105px;flex:none}
.prize-amount{display:flex;align-items:baseline;justify-content:center;gap:10px;margin-top:10px;color:#755019}
.prize-amount strong{font-size:2.7rem;line-height:1.2}
.prize-amount span{font-size:.9rem;font-weight:800}
.prize-card figcaption{padding:14px 12px;border-top:1px solid #eee2c7;text-align:center;font-weight:800;line-height:1.7;color:#26314b;background:#fff}
@media(max-width:600px){.prize-gallery{grid-template-columns:1fr;gap:14px}.prize-visual{height:210px}.prize-card figcaption{font-size:.95rem}}
.reward-kicker{font-size:.85rem;color:#7c5b22;font-weight:800}
.reward-card h3{font-size:1.3rem;color:#14233d;margin:14px 0 8px}
.reward-state{font-size:.88rem;font-weight:800;color:#287655;margin:0}
.reward-detail{line-height:1.8;background:#e8f4ec;color:#245a49;border-radius:12px;padding:13px 15px;overflow-wrap:anywhere}
.reward-label{display:block;font-weight:800;line-height:1.7;margin:15px 0 8px}
.reward-card select,.reward-settings select{display:block;max-width:100%;width:100%;min-height:48px;padding:10px;border:2px solid #d8d3c8;border-radius:10px;background:#fff;color:#26314b;font:inherit;font-size:16px}
.journey-button{display:inline-block;max-width:100%;min-height:48px;padding:12px 16px;margin-top:16px;border:2px solid #14233d;border-radius:12px;background:#ffd470;color:#14233d;font:800 1rem "PingFang SC",system-ui,sans-serif;cursor:pointer;line-height:1.5}
.journey-button:disabled{background:#eee8da;color:#687184;border-color:#b8b5ad;cursor:default}
.avatar-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:18px}
.avatar-option{display:grid;justify-items:center;gap:8px;padding:12px 7px;border:2px solid #e0d7c6;border-radius:14px;cursor:pointer;font-size:.85rem;font-weight:800;text-align:center}
.avatar-option input{width:18px;height:18px;accent-color:#287655;margin:0}
.avatar-option:has(input:checked){background:#fff0cc;border-color:#b77b22}
.avatar-picture{font-size:2rem;line-height:1.3}
@media(min-width:1100px){.avatar-grid{grid-template-columns:repeat(4,minmax(0,1fr))}}
.collection-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:14px;margin-top:24px;align-items:start}
.collection-item{min-width:0;border:2px solid #ded6c6;border-radius:16px;padding:18px;background:#fff;line-height:1.7}
.collection-item summary,.collection-item.is-locked{display:grid;justify-items:center;gap:9px;text-align:center}
.collection-item summary{cursor:pointer}
.collection-item summary strong{color:#14233d}
.collection-item small{font-size:.78rem;color:#687184}
.collection-item p{margin:14px 0;font-size:.9rem}
.collection-icon{font-size:2.2rem;line-height:1.5}
.collection-item.is-collected{border-color:#9fc8ad;background:#f4fbf6}
.collection-item.is-locked{background:#eee9df;color:#687184}
.reward-admin-list{padding-left:22px;line-height:2}
.reward-settings{padding:18px;border:2px solid #ded6c6;border-radius:14px;margin:18px 0}
.reward-settings .reward-label{margin-top:0}
.journey-text-link{display:inline-block;margin-top:18px}
.grand-reminder{grid-column:1/-1;display:grid;grid-template-columns:1fr 1.1fr;align-items:center;gap:24px;padding:24px 28px;border:2px solid #e4bd62;border-radius:22px;background:#fffaf0}
.grand-reminder h2{margin:0;color:#14233d;font-size:1.5rem;line-height:1.5}
.grand-reminder-status{margin:12px 0;color:#245a49;font-weight:800;line-height:1.7}
.grand-reminder-progress{display:flex;align-items:center;gap:12px}
.grand-reminder-progress progress{flex:1;min-width:0;height:14px;accent-color:#388f70}
.grand-reminder-progress strong{flex:none;color:#245a49;font-size:.9rem}
.grand-reminder-note{margin:12px 0 0;color:#596477;font-size:.83rem;line-height:1.7}
.grand-reminder .journey-text-link{margin-top:10px;font-size:.9rem}
.grand-reminder-prizes{display:grid;grid-template-columns:repeat(auto-fit,minmax(0,1fr));gap:12px}
.grand-reminder-prize{display:flex;flex-direction:column;min-width:0;margin:0;border:1px solid #e5d7b4;border-radius:14px;overflow:hidden;background:#fff}
.grand-reminder-prize img{display:block;width:100%;height:136px;object-fit:contain;padding:12px}
.grand-reminder-eggy328 img{background:linear-gradient(145deg,#fff7c8,#ffe791);padding:24px 12px}
.grand-reminder-prize figcaption{flex:1;display:grid;place-items:center;padding:10px 8px;border-top:1px solid #eee2c7;text-align:center;font-size:.83rem;font-weight:800;line-height:1.6}
@media(max-width:600px){.grand-reminder{grid-template-columns:1fr;gap:16px;padding:20px 18px}.grand-reminder h2{font-size:1.3rem}.grand-reminder-prize img{height:116px}.grand-reminder-prizes{gap:10px}.grand-reminder-prize figcaption{font-size:.78rem}}
@media(max-width:600px){.adventure-page{padding:0 12px 30px;gap:14px}.journey-card{padding:22px 18px;border-radius:20px}.adventure-map{gap:7px}.map-stop{min-height:72px;border-radius:10px}.map-stop strong{font-size:1.1rem}.map-stop span{font-size:.68rem}.reward-cards{grid-template-columns:1fr}.reward-card{padding:18px}.collection-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:9px}.collection-item{padding:12px}.collection-item summary strong{font-size:.88rem}.topbar .report-link{font-size:.78rem}}
@media(max-width:600px){.quiz-option{flex-wrap:wrap;gap:9px;padding:12px}.quiz-option small{margin-left:29px}.reading-report{padding:0 12px 30px}.report-stats{gap:7px}.report-stat{padding:12px}.report-stat strong{font-size:1.5rem}.report-stat span{font-size:.78rem}}
[hidden]{display:none!important}
:focus-visible{outline:3px solid #dd705b;outline-offset:4px}
@media(max-width:900px){.layout{grid-template-columns:1fr}.sidebar{position:static}.reading-card{min-height:auto}}
@media(max-width:600px){.topbar{height:70px;padding:0 16px}.brand{font-size:1.05rem}.brand-icon{width:32px;height:32px}.header-note{font-size:.72rem}.layout{padding:0 12px 30px;gap:13px}.reading-card,.sidebar{border-radius:20px}.reading-card{padding:24px 20px}.article-top{display:block}.theme-tag{display:inline-block;margin-top:15px}.article-body{margin-top:20px;font-size:1.14rem;line-height:2}.writing-tip{padding:13px 15px}.sidebar{padding:21px}.finish-zone{margin-top:26px}}

/* 复述录音 */
.retelling-card{max-width:760px;margin:30px auto 0;padding:26px;border:1px solid #e4c98d;border-radius:18px;background:linear-gradient(150deg,#fff8e6,#fdf3de);scroll-margin-top:24px}
.retelling-card h2{margin:0;color:#14233d;font-size:clamp(1.3rem,2.4vw,1.7rem);line-height:1.5}
.retelling-hint{margin:12px 0 22px;color:#6b7589;font-size:.95rem;line-height:1.7}
.retelling-recorder{display:flex;align-items:center;gap:16px;flex-wrap:wrap}
.record-button{min-height:58px;padding:12px 26px;border:2px solid #14233d;border-radius:16px;background:#ffd470;box-shadow:5px 5px 0 #14233d;color:#14233d;font:900 1.06rem "PingFang SC",system-ui,sans-serif;cursor:pointer}
.record-button:hover:not(:disabled){background:#ffe19a;transform:translateY(-2px)}
.record-button:disabled{background:#eee8da;border-color:#b8b5ad;color:#687184;box-shadow:none;cursor:default}
.record-button.is-recording{background:#e87963;border-color:#8f2f1e;color:#fff;animation:record-pulse 1.2s ease-in-out infinite}
@keyframes record-pulse{0%,100%{box-shadow:5px 5px 0 #14233d}50%{box-shadow:5px 5px 0 #14233d,0 0 0 9px rgba(232,121,99,.28)}}
@media(prefers-reduced-motion:reduce){.record-button.is-recording{animation:none}}
.record-timer{font:900 1.5rem "PingFang SC",system-ui,sans-serif;color:#b3533e;font-variant-numeric:tabular-nums}
.retelling-playback{display:block;width:100%;margin:20px 0 0;border-radius:12px;background:#fff;padding:4px}
.retelling-actions{display:flex;gap:12px;flex-wrap:wrap;margin-top:18px}
.retelling-actions .journey-button{margin-top:0}
.retelling-status{color:#8a5a12}
@media(max-width:600px){.retelling-card{padding:20px 16px}.record-button{width:100%}.retelling-actions .journey-button{width:100%}}

/* 家长页录音列表 */
.retellings{display:grid;gap:14px;margin:18px 0 30px}
.retelling-item{display:grid;gap:10px;padding:16px;border:1px solid #d9d0be;border-radius:14px;background:#fffdf7}
.retelling-meta{display:flex;justify-content:space-between;align-items:baseline;gap:12px;flex-wrap:wrap}
.retelling-meta strong{color:#14233d;font-size:1rem}
.retelling-meta span{color:#6b7589;font-size:.85rem;font-weight:700}
.retelling-item audio{width:100%}
.retelling-delete{justify-self:start;min-height:40px;padding:8px 14px;border:2px solid #b3533e;border-radius:10px;background:#fff;color:#b3533e;font:800 .9rem "PingFang SC",system-ui,sans-serif;cursor:pointer}
.retelling-delete:disabled{opacity:.5;cursor:default}

/* 60 天神秘大奖 */
.reward-card.reward-mystery{border-color:#b9a7e6;background:linear-gradient(165deg,#f7f2ff,#efe6ff)}
.reward-card.reward-mystery .reward-kicker{color:#5b3fa8}
.reward-card.reward-mystery .reward-state{color:#5b3fa8}
.grand-reminder-mystery-1 img,.grand-reminder-mystery-2 img{object-fit:contain;background:#fff}
.reward-admin-group{margin-top:22px;padding-top:18px;border-top:1px dashed #d9d0be}
.reward-admin-title{margin:0 0 10px;font-size:1.05rem;color:#14233d}
