/* Chinese edition: local system fonts and original seed garden identity. */
:root { --ink:#293f35; --paper:#faf9f5; --blue:#397354; --pink:#e79985; --blue-soft:#e6eee1; --mint:#b9db79; --yellow:#efd792; --red:#bd6260; }
body { font-weight:600; }
#paper { background:radial-gradient(ellipse at 14% 16%,#f0f2e5 0,transparent 44%),radial-gradient(ellipse at 91% 90%,#f8efdd 0,transparent 45%),#faf9f5; }
#app { width:min(1120px,100%); max-height:none; height:100dvh; top:0; }
.screen { max-width:480px; margin:auto; }
#screen-title { max-width:none; align-items:stretch; gap:0; padding:0 42px; }
.home-header { display:flex; align-items:center; justify-content:space-between; padding:28px 0; border-bottom:1px solid #e3e6db; }
.brand { display:flex; align-items:center; gap:12px; color:var(--ink); text-decoration:none; font-size:21px; letter-spacing:1px; font-weight:850; }
.brand img { width:43px;height:43px; }
.brand small { display:block; font-size:10px; font-weight:500; color:#788174; letter-spacing:2px; margin-top:3px; }
.home-tools { display:flex; gap:10px; }
.tool-btn { border:1px solid #dde2d5; background:#fffaf3; border-radius:50%; width:38px; height:38px; display:grid; place-items:center; font-size:20px; color:#55745a; }
.tool-btn svg { width:21px;height:21px;stroke:currentColor;stroke-width:1.7;fill:#fffaf3; }
.install-card h3 { margin:0;font-size:15px;color:#397354; }
.install-card ol,.install-card p { margin:0;font-size:13px;line-height:1.9;color:#657a61; }
.install-card ol { padding-left:22px; }
.install-card li+li { margin-top:6px; }
.install-intro { text-align:center; }
.install-status { min-height:0;color:#397354; }
.install-status:empty { display:none; }
.home-layout { display:grid;grid-template-columns:minmax(0,1.5fr) minmax(290px,1fr);gap:42px;padding:30px 0 26px; }
.home-primary { min-width:0; }
.home-hero { display:flex; align-items:center; position:relative; min-height:234px; }
.hero-copy { z-index:1; flex:1; }
.eyebrow { display:flex; align-items:center; gap:7px; color:#6e8662; font-size:11px; font-weight:600; letter-spacing:1px; margin:0 0 19px; }
.eyebrow>span { height:6px;width:6px;border-radius:50%;background:#7d9f57; }
#logo { font-size:clamp(36px,4.6vw,54px);line-height:1.24;letter-spacing:-2px;margin:0;font-weight:900;color:#304b39; }
.word-leaf { color:#7f9d53; }
.hero-desc { font-size:12px;font-weight:500;line-height:1.95;color:#798074; margin:15px 0 0; }
.hero-art { position:relative;width:172px;flex:none;display:flex;flex-direction:column;gap:16px; }
#title-stage { position:relative;width:100%;height:182px;margin:0;flex:none; }
.hero-ground { position:absolute;bottom:6px;left:22px;right:22px;height:7px;border-radius:50%;background:#cbd7b4; }
.level-speech { position:relative;width:100%;min-height:56px;padding:10px 12px;border:1px solid #afc5a0;border-radius:14px;background:#fffdf7;color:#304b39;text-align:left;box-shadow:0 3px 10px #293f3509;cursor:pointer; }
.level-speech::before { content:'';position:absolute;top:-6px;left:calc(50% - 6px);width:10px;height:10px;background:#fffdf7;border-left:1px solid #afc5a0;border-top:1px solid #afc5a0;transform:rotate(45deg); }
.level-speech:hover { background:#f1f6e9;border-color:#397354; }
.level-speech:focus-visible { outline:3px solid #397354;outline-offset:3px; }
.level-speech small { display:block;font-size:10px;font-weight:500;color:#708166;line-height:1.4;margin-top:4px; }
.speech-main { display:flex;justify-content:space-between;align-items:center;gap:5px;font-size:14px;font-weight:750;line-height:1.4;color:#397354; }
.speech-main>span:last-child { font-size:18px;line-height:1; }
.art-orbit { position:absolute;font-weight:600;font-size:23px;color:#86a368; }
.orbit-one { right:8px;top:18px;transform:rotate(12deg); }
.orbit-two { left:0;top:45px;color:#dfb972;transform:rotate(-12deg); }
.orbit-three { right:0;bottom:67px;color:#aebda0; }
#modes { width:100%;gap:18px; margin-top:24px; }
.big-btn,.sub-btn { border:1px solid #d4dfcb;border-radius:15px;box-shadow:none;text-shadow:none; }
.big-btn { background:#397354;color:#fff; font-family:var(--round);font-weight:700; }
.big-btn::before,.big-btn::after { display:none; }
.big-btn:hover { background:#2f6448; }
.big-btn:active { transform:translateY(2px); box-shadow:none; }
.sub-btn { background:#fffdf7;font-weight:600; }
.sub-btn:hover { background:#f0f4e9; }
.section-label { width:100%;display:flex;justify-content:space-between;align-items:center;margin:6px 0 -6px; }
.section-label h2 { font-size:14px;margin:0;font-weight:750; }
.section-label>span { color:#90978a;font-size:10px;font-weight:500; }
.grades { width:100%;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px; }
.grades button { --grade-color:#53734e;border:1px solid #dde5d6;border-radius:14px;background:#fffdf7;box-shadow:none;padding:16px 10px;transform:none;min-height:84px;min-width:0;display:flex;justify-content:center;align-items:flex-start;flex-direction:column;gap:7px;text-align:left; }
.grades button::before,.grades button::after { display:none; }
.grades button b { font-family:var(--round);font-size:18px;font-weight:750;line-height:1.3;color:var(--grade-color);white-space:nowrap; }
.grades button>span { font-size:11px;line-height:1.4;color:#798572;font-weight:500;white-space:nowrap; }
.grades button:nth-child(1) { --grade-color:#53734e;background:#f4f8ea; }
.grades button:nth-child(2) { --grade-color:#896a35;background:#fbf7e9; }
.grades button:nth-child(3) { --grade-color:#9a6a54;background:#faf0e9; }
.grades button:nth-child(4) { --grade-color:#507786;background:#eef5f5; }
.grades button:nth-child(5) { --grade-color:#7b6896;background:#f4f0fa; }
.grades button:nth-child(6) { --grade-color:#477f68;background:#eef6ed; }
.grades button:hover { border-color:var(--grade-color);transform:translateY(-2px); }
.subject-cards { width:100%;display:flex;flex-direction:column;gap:12px; }
.subject-card { --sc-color:#53734e;--sc-bg:#eef6ed;border:1px solid #dde5d6;border-radius:16px;background:#fffdf7;padding:12px;display:flex;flex-direction:column;gap:10px; }
.subject-card[data-subject="geo"] { --sc-color:#507786;--sc-bg:#eef5f5; }
.subject-card[data-subject="en"] { --sc-color:#9a6a54;--sc-bg:#faf0e9; }
.subject-go { width:100%;min-height:66px;display:flex;align-items:center;gap:14px;padding:12px 16px;border:1px solid transparent;border-radius:13px;background:var(--sc-bg);box-shadow:none;text-align:left;transition:border-color .15s,transform .15s; }
.subject-go:hover { border-color:var(--sc-color);transform:translateY(-1px); }
.subject-go:active { transform:none; }
.sc-name { flex:0 0 5.4em;font-family:var(--round);font-size:17px;font-weight:750;color:var(--sc-color);white-space:nowrap; }
.sc-grade { display:flex;flex-direction:column;gap:3px;min-width:0; }
.sc-grade b { font-family:var(--round);font-size:15px;font-weight:750;line-height:1.3;color:#3d4a35; }
.sc-grade small { font-size:11px;line-height:1.4;color:#798572;font-weight:500; }
.sc-arrow { margin-left:auto;font-size:20px;color:var(--sc-color); }
.sc-tools { display:flex;flex-wrap:wrap;align-items:center;gap:8px; }
.sc-tools .placement-btn { padding:6px 13px;font-size:12px; }
.subject-change[aria-expanded="true"] { background:#eef2e7;border-color:#91ae76; }
.grades.subject-grades[hidden] { display:none; }
.grades.subject-grades button { min-height:66px;padding:10px 12px;gap:4px; }
.grades.subject-grades button[aria-pressed="true"] { border-color:var(--grade-color);box-shadow:inset 0 0 0 1px var(--grade-color); }
.grade-ask-card { gap:14px; }
.ga-note { margin:0;text-align:center;font-size:13px;line-height:1.8;color:#6d7e64; }
.ga-grades { display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px; }
.ga-grades button { min-height:64px;padding:0 6px;border:1px solid #d4dfcb;border-radius:14px;background:#fffdf7;box-shadow:none;font-family:var(--round);font-size:19px;font-weight:750;color:#397354;white-space:nowrap; }
.ga-grades button:nth-child(2) { color:#896a35;background:#fbf7e9; }.ga-grades button:nth-child(3) { color:#9a6a54;background:#faf0e9; }
.ga-grades button:nth-child(4) { color:#507786;background:#eef5f5; }.ga-grades button:nth-child(5) { color:#7b6896;background:#f4f0fa; }
.ga-grades button:nth-child(6) { color:#477f68;background:#eef6ed; }
.ga-grades button:hover { border-color:currentColor; }
.ga-skip { align-self:center;min-width:0;font-size:13px;color:#6d7e64; }
.mode-row { display:grid;grid-template-columns:repeat(3,1fr);gap:9px; }
.mode-row>.sub-btn { padding:13px 8px;display:flex;align-items:center;gap:7px;font-size:11px; border-color:#e3e6d9; }
.mode-icon { font-size:23px;color:#829473; }
.mode-row .sub-btn b { display:block;font-size:9px;color:#989f8b;font-weight:500;margin-top:3px; }
.report-entry { width:100%;display:flex;align-items:center;gap:13px;text-align:left;border:1px solid #e3e6d9;background:#edf1e7; padding:16px 17px;border-radius:13px; }
.report-icon { font-size:27px;color:#5d7d61; }
.report-entry b { display:block;font-size:12px;font-weight:650; }
.report-entry small { display:block;font-size:10px;margin-top:5px;color:#839077;font-weight:450; }
.report-arrow { margin-left:auto;color:#638259;font-size:20px; }
.home-aside { display:flex;flex-direction:column;gap:19px;padding-top:6px; }
.quest-card,.cal-card { width:100%; border:1px solid #e1e5d7;border-radius:18px; background:#fffdf8;box-shadow:none;padding:21px 20px; }
.quest-head h2,.cal-section h2 { font-family:var(--round);font-size:14px;letter-spacing:0;margin:0;display:flex;align-items:center;gap:8px;font-weight:750; }
.card-symbol { font-size:20px;font-weight:400;color:#a4ac7a; }
.quest-reward { font-size:9px;color:#7c8c68;max-width:110px; }
.quest-reward .qham { width:16px;height:16px; }
.section-note { font-size:10px;font-weight:450;color:#9b9f8e;margin:8px 0 15px 28px; }
.quest-list { gap:10px; }
.quest-list li { border:0;border-bottom:1px solid #ebeee4;background:transparent;border-radius:0;min-height:35px;font-size:11px;padding:5px 0 11px; }
.quest-list li:last-child { border-bottom:0;padding-bottom:0; }
.quest-list .qprogress { color:#88917f; }
.quest-list .qbox { border:1px solid #d5dcc7;background:#f6f8ee;border-radius:7px; }
.cal-section { display:flex;justify-content:space-between;align-items:center;gap:8px;margin-bottom:15px; }
.cal-section>span { font-size:8px;font-weight:500;color:#949d84; }
.cal-head { padding:5px 0; }
.cal-head h3 { font-size:13px;margin:0;font-weight:650; }
.cal-nav { border:0;background:#f3f5eb;border-radius:8px;width:27px;height:27px;box-shadow:none;font-size:20px;line-height:1; }
.cal-badges { margin:9px 0 13px;gap:6px; }
.cal-badge { font-size:8px;border:0;border-radius:7px;background:#eef2e7;box-shadow:none;padding:4px 7px;color:#73835e; }
.cal-badge b { font-size:10px; }
.cal-badge.hmr { background:#f8f0db; }
.cal-week { font-size:9px;color:#8d9783; }
.cal-grid { gap:5px; }
.cal-grid .cal-day,.cal-grid>.day,.cal-grid>button,.cal-grid>span { border:1px solid transparent;border-radius:8px;box-shadow:none;font-size:11px;background:transparent;min-height:32px;height:34px; }
.cal-grid .today { border-color:#91ae76;background:#f4f7e9; }
.cal-grid .played { background:#e6efd8; }
.cal-grid .n { font-size:11px; }
.gentle-note { display:flex;gap:11px;align-items:center;padding:0 12px;color:#8c987e; }
.gentle-note>span { font-size:26px;color:#b0b888; }
.gentle-note p { font-size:10px;font-weight:450;line-height:1.8;margin:0; }
.home-footer { margin-top:auto; display:flex;justify-content:space-between;gap:12px;font-size:9px;font-weight:450;color:#969d8d;padding:19px 0 24px;border-top:1px solid #e3e6db; }
.home-footer>span:last-child { display:flex;gap:7px;align-items:center; }
.home-footer button { padding:0;border:0;background:none;color:#697e5b;font-size:9px; }
.hint { font-size:11px; }
#screen-play { padding-top:max(12px,env(safe-area-inset-top)); }
.play-exit { border:1px solid #d8e1ce;background:#fffdf5;border-radius:11px;width:32px;height:32px;font-size:23px; }
.hud .pips { flex:1; }
.hud .play-exit { order:-1;margin-right:7px; }
.card { border-color:#416d51;box-shadow:0 5px 0 #416d5120;border-radius:20px; }
.chip { font-family:var(--round);font-weight:750; }
.pad button { border-color:#819871;box-shadow:0 4px 0 #819871; border-radius:14px; }
.pad button:hover { background:#eef3e3; }
.modal-card,.result-card { border-color:#b0c39d;box-shadow:0 8px 0 #607e3b18;border-radius:23px; }
.modal-card { font-size:14px; }
.tree-head h2 { font-family:var(--round);font-size:24px; }
.tree-note { font-size:11px; }
.tree-stars { font-size:12px; }
.modal .set-label { font-size:14px; }
.set-note { font-size:11px; }
.result-card { padding-top:30px; }
.result-install { display:flex;align-items:center;justify-content:space-between;gap:9px;width:100%;margin:0;padding:8px 11px;background:#eef4e8;border:1px solid #d8e5cf;border-radius:12px; }
.result-install b,.result-install small { display:block; }
.result-install b { font-size:12px;color:#397354; }
.result-install small { font-size:10px;color:#778c70;margin-top:3px; }
.install-reminder { flex:none;border:1px solid #a8c09c;border-radius:9px;background:#fffdf8;color:#397354;font-size:11px;font-weight:750;padding:8px 9px; }
.install-reminder:hover { background:#f9fff1; }
.score { font-family:var(--round); }
.actions .sub-btn { font-size:14px; }
.review-main { width:100%; }
.co-name { font-size:12px; }
.guide-actions .big-btn { font-size:18px; }
#guide-heading { font-family:var(--round); }
button { transition:background .16s,border-color .16s; }
[hidden] { display:none !important; }
/* Reports and sharing are rendered locally and do not load a network service. */
#screen-report { flex-direction:column;overflow-y:auto;padding:18px 20px 35px;max-width:750px;background:#faf9f5;gap:20px; }
.report-head { display:flex;align-items:center;gap:13px; }
.report-head h2 { font-size:23px; margin:0; }
.report-head p { font-size:11px;color:#88917b;margin:5px 0 0; }
.report-head .tool-btn { flex:none; }
.report-period { display:flex;gap:8px; }
.report-period button { border:1px solid #dce3cf;border-radius:20px;background:#fffdf8;padding:8px 15px;font-size:12px; }
.report-period button[aria-pressed="true"] { background:#397354;color:white;border-color:#397354; }
.report-kpis { display:grid;grid-template-columns:repeat(3,1fr);gap:10px; }
.report-kpi { padding:19px 12px;background:#eef2e7;border-radius:14px; }
.report-kpi b { display:block;color:#397354;font-size:28px;letter-spacing:-1px; }
.report-kpi b.time { font-size:clamp(16px,2vw,23px);white-space:nowrap; }
.report-kpi span { display:block;font-size:11px;color:#7d8971;margin-top:7px; }
.report-panel { border:1px solid #e0e5d8;border-radius:17px;background:#fffdf8;padding:20px; }
.report-panel h3 { font-size:14px;margin:0 0 15px; }
.report-chart { width:100%;height:auto; }
.report-chart text { font-family:var(--round);fill:#849077;font-size:10px;font-weight:500; }
.chart-legend { font-size:10px;color:#879277;line-height:1.8; }
.report-empty { color:#909a83;font-size:13px;text-align:center;padding:26px 8px;line-height:1.9; }
.report-empty svg { display:block;width:75px;height:75px;margin:0 auto 15px; }
.report-empty a { color:#397354; }
.report-list { margin:0;padding:0;list-style:none; }
.report-list li { display:flex;gap:12px;justify-content:space-between;padding:13px 0;border-bottom:1px solid #e9ede2;align-items:center; font-size:12px; }
.report-list li:last-child { border-bottom:0; }
.report-list small { display:block;font-size:10px;color:#88927c;margin-top:5px; }
.report-list strong { color:#397354;white-space:nowrap; }
.report-note { font-size:11px;line-height:1.9;color:#8b957f; margin:0; }
.share-preview { display:block;max-width:100%;max-height:52dvh;object-fit:contain;margin:0 auto 14px;border-radius:14px; }
.share-modal h2 { font-size:20px;margin-top:0; }
.share-modal .confirm-actions { flex-wrap:wrap; gap:8px; }
.share-modal .confirm-actions button { font-size:13px; }
.share-note { font-size:11px;color:#7d8973;line-height:1.8; }
.share-link { font-size:13px;line-height:1.5;margin:0;overflow-wrap:anywhere; }
.share-link a { color:#397354;text-decoration:underline;text-underline-offset:3px;font-weight:700; }
.privacy-modal p { line-height:1.9;font-size:12px;color:#6d7e64; }
#share-status { color:#397354; }
body[data-screen="report"] #actors { visibility:hidden; }
@media(min-width:900px) { #screen-title { padding:0 42px; } }
@media(max-width:900px) and (min-width:681px) { #screen-title { padding:0 24px; }.home-layout { gap:24px;grid-template-columns:1.4fr 1fr; }.hero-art { width:140px; }.grades { gap:8px; }.grades button { padding:13px 8px; }.grades button b { font-size:16px; }.grades button>span { font-size:10px; } }
@media(max-width:680px) {
  #screen-title { padding:0 20px; }.home-header { padding:18px 0 17px; }.brand { font-size:18px; }.brand img { width:36px;height:36px; }.brand small { font-size:8px; }
  .home-layout { display:block;padding:21px 0; }.home-hero { min-height:218px;gap:12px; }.hero-copy { min-width:0; }.hero-art { width:142px;gap:16px; }#title-stage { height:158px; }#logo { font-size:clamp(32px,9.7vw,40px); }.eyebrow { font-size:9px;letter-spacing:0;margin-bottom:14px; }.hero-desc { font-size:10px;line-height:1.8;margin-top:14px; }.level-speech { min-height:54px;padding:9px 10px; }.speech-main { font-size:12px; }.level-speech small { font-size:9px; }
  #modes { margin-top:22px;gap:15px; }
  .section-label h2 { font-size:13px; }.section-label>span { font-size:9px; }
  .grades { gap:9px; }.grades button { min-height:80px;padding:13px 10px;gap:6px; }.grades button b { font-size:17px; }.grades button>span { font-size:10px; }
  .mode-row { gap:8px; }.mode-row>.sub-btn { font-size:10px;padding:12px 7px; }.mode-icon { font-size:22px; }
  .home-aside { margin-top:23px;gap:17px; }.quest-card,.cal-card { padding:19px; }.section-note { font-size:11px; }.quest-list li { font-size:12px; }
  .cal-grid>button,.cal-grid>span { height:39px; }.cal-section>span { font-size:9px; }.cal-badge { font-size:9px; }
  .home-footer { flex-direction:column;align-items:center;text-align:center;font-size:9px;gap:7px;padding:16px 0 22px; }
  .gentle-note { margin-top:3px; }.gentle-note p { font-size:11px; }
  #screen-play { max-width:460px;padding-top:max(8px,env(safe-area-inset-top)); }.hud2 .dopa small { font-size:11px; }.combo small { font-size:10px; }
  .tally { font-size:13px; }.tally b { font-size:22px; }
  .report-kpi b { font-size:24px; }.report-kpi span { font-size:10px; }.report-panel { padding:17px; }
}
@media(max-width:360px) { #screen-title { padding:0 15px; }#logo { font-size:31px; }.home-hero { gap:8px; }.hero-art { width:126px; }.hero-desc { font-size:9px; }.hero-art .art-orbit { font-size:19px; }.speech-main { font-size:11px; }.level-speech small { font-size:8px; }.grades button { padding:12px 8px; }.grades button b { font-size:16px; }.mode-icon { font-size:18px; } }
@media(prefers-reduced-motion:reduce) { *,*::before,*::after { animation-duration:0.01ms!important;transition:none!important; } }

body.local-overlay #actors { visibility:hidden; }

.mode-row { width:100%; }.mode-row .sub-btn { min-width:0; }.modal .sub-btn { min-width:0; }
