:root{font-family:-apple-system,BlinkMacSystemFont,"Hiragino Kaku Gothic ProN","Yu Gothic","Meiryo",sans-serif;color:#173746;background:#f7f7f1;font-size:17px;line-height:1.5;-webkit-text-size-adjust:100%;--ink:#173746;--teal:#147f78;--teal-dark:#10655f;--cream:#f7f7f1;--soft:#e8f5ed;--border:#dbe5de;--gold:#f6bb54;--danger:#9b4939;--shadow:0 8px 28px rgba(34,62,65,.075)}
*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;min-height:100vh}button,input,select{font:inherit}button{cursor:pointer}button:disabled{opacity:.42;cursor:not-allowed}button:focus-visible,input:focus-visible,select:focus-visible,summary:focus-visible{outline:3px solid #e98c24;outline-offset:3px}button{border:0;background:#147f78;color:white;border-radius:15px;min-height:52px;padding:12px 22px;font-size:.97rem;font-weight:750;transition:background .16s,transform .16s}button:hover:not(:disabled){background:#10655f}button:active:not(:disabled){transform:scale(.985)}button.secondary{background:#eef3ef;color:#284a51;border:1px solid #dbe4dd}button.secondary:hover:not(:disabled){background:#dfeae2}button.primary{background:#147f78;color:#fff;box-shadow:0 5px 0 #0d5c57}button.primary:hover:not(:disabled){background:#116d68}button.small{font-size:.82rem;min-height:44px;padding:9px 15px;border-radius:11px}button.full{width:100%}button.quiet-button,.quiet-button{background:transparent;color:var(--ink);min-height:46px;padding:9px 12px;border:1px solid var(--border);font-size:.9rem}button.quiet-button:hover{background:#edf2ed}.skip-link{position:absolute;top:-60px;left:12px;padding:10px;background:white;z-index:50}.skip-link:focus{top:10px}
.app-header{background:#173d4d;color:white;padding:13px max(20px,env(safe-area-inset-left));}.header-inner{max-width:1120px;margin:auto;display:flex;justify-content:space-between;align-items:center;gap:14px}.brand{display:flex;align-items:center;gap:12px}.brand-mark{display:grid;place-items:center;background:#ffcf70;color:#15494f;width:42px;height:42px;font-size:1.7rem;font-weight:900;border-radius:13px;transform:rotate(-7deg)}.brand strong{font-size:1.15rem;line-height:1.1;display:block;letter-spacing:.03em}.brand small{display:block;opacity:.78;font-size:.72rem}.header-meta{font-size:.76rem;display:flex;align-items:center;gap:8px;opacity:.9}.offline-dot{width:8px;height:8px;border-radius:50%;background:#95e6bc;display:inline-block}
main{max-width:1120px;padding:24px 20px 58px;margin:auto}.notice{border:1px solid #cde4db;color:#285357;background:#e8f4ef;border-radius:15px;padding:14px 19px;margin-bottom:20px;font-size:.85rem;box-shadow:0 2px 8px #174d4520}.notice.warn{background:#fff0eb;border-color:#e8b4a4;color:#8a3528;font-weight:650}.home-page,.player-page,.parent-page{animation:fadein .16s ease-out}@keyframes fadein{from{opacity:.7;transform:translateY(4px)}to{opacity:1;transform:none}}
.hero{border-radius:26px;background:linear-gradient(110deg,#e2f3df 0%,#eff7e9 55%,#fff3d9 100%);border:1px solid #d8e9d3;min-height:230px;position:relative;overflow:hidden;padding:37px 49px;display:flex;align-items:center;justify-content:space-between}.hero-content{position:relative;z-index:2}.eyebrow{font-size:.71rem;letter-spacing:.18em;font-weight:850;color:#16786c}.eyebrow.ink{color:#4e827d}.hero h1{font-size:clamp(1.85rem,3.4vw,2.8rem);line-height:1.4;letter-spacing:-.03em;margin:12px 0}.hero p{margin:0;font-size:.92rem;color:#486e65}.hero-art{width:290px;height:210px;flex-shrink:0;position:relative}.orbit{position:absolute;border:2px dashed #9ec7a3;border-radius:50%;transform:rotate(-28deg)}.orbit-a{width:240px;height:142px;top:34px;left:18px}.orbit-b{width:152px;height:154px;top:28px;left:69px;border-style:solid;border-color:#c8dec3}.orbit-star,.orbit-disc,.orbit-leaf{position:absolute;display:grid;place-items:center}.orbit-star{top:17px;right:27px;color:#f0a727;font-size:3.8rem}.orbit-disc{left:65px;top:53px;border-radius:50%;height:91px;width:91px;background:#fff9e8;color:#4eac91;font-size:3.6rem;box-shadow:0 9px 14px #174d4520}.orbit-leaf{bottom:9px;right:61px;color:#4c9b83;font-size:3.5rem}.section-heading{display:flex;justify-content:space-between;align-items:end;gap:12px;margin:33px 0 15px}.section-heading h2{font-size:1.35rem;letter-spacing:-.02em;margin:5px 0}.section-caption{color:#6c7f7a;font-size:.81rem}.subject-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}.subject-card{background:white;border:1px solid #dfe8df;border-radius:21px;padding:23px;min-width:0;box-shadow:var(--shadow);position:relative;overflow:hidden}.subject-card .subject-icon{width:58px;height:58px;border-radius:17px;display:grid;place-items:center;font-size:1.8rem;background:#f6efe3;margin-bottom:14px}.subject-card.science .subject-icon{background:#e7f1fa}.subject-card h3{font-size:1.35rem;margin:0 0 5px}.subject-card .minor{font-size:.79rem;color:#73847e;margin:0 0 13px}.subject-card .subject-bar{height:8px;background:#e8edea;overflow:hidden;border-radius:99px;margin:11px 0 6px}.subject-card .subject-fill{height:100%;background:#23a295;border-radius:99px}.subject-card .subject-count{font-size:.8rem;color:#516e6b;font-weight:700;margin-bottom:17px}.subject-card button{width:100%;text-align:center}.demo-label{color:#8c5930;background:#fff0db;border-radius:30px;padding:4px 10px;font-size:.72rem;font-weight:700;white-space:nowrap}.pack-label{display:flex;flex-wrap:wrap;gap:8px;align-items:center;grid-column:1/-1;font-size:.76rem;color:#6f807a;margin:8px 0 -7px}.empty-pack{grid-column:1/-1;background:white;padding:28px;border:1px dashed #bbcec1;border-radius:18px;color:#57716b}.parent-entry{margin-top:26px;border-top:1px solid #dde5d9;padding-top:20px;display:flex;align-items:center;justify-content:space-between;gap:16px}.parent-entry p{font-size:.81rem;color:#688077}
.player-page{max-width:890px;margin:auto}.lesson-top{background:white;border:1px solid var(--border);border-radius:20px;padding:19px 24px;margin-bottom:17px}.lesson-meta{display:flex;justify-content:space-between;align-items:center;color:#345b5c;font-weight:750;font-size:.88rem;gap:10px;flex-wrap:wrap}.session-tag{background:#eef5ec;border-radius:99px;padding:5px 12px;color:#52816c;font-size:.76rem}.day-progress{display:grid;grid-template-columns:repeat(12,1fr);gap:5px;margin-top:16px}.progress-segment{height:8px;border-radius:99px;background:#e4ede5}.progress-segment.done{background:#159487}.progress-segment.active{background:#efba4c}.lesson-actions{text-align:right;margin-top:12px}.lesson-actions button{border:0;padding:5px 0;font-size:.83rem;min-height:36px}
.question-card{background:#fff;border:1px solid #dfe7df;border-radius:23px;box-shadow:var(--shadow);padding:clamp(18px,3.5vw,38px);}.card-kicker{display:flex;gap:10px;align-items:center;color:#587d72;font-size:.78rem;font-weight:800;letter-spacing:.02em;margin-bottom:15px}.icon-circle{height:28px;width:28px;border-radius:9px;background:#eaf4e9;display:grid;place-items:center;color:#238a78;font-weight:900}.question-id{word-break:break-word}.question{font-size:clamp(1.32rem,2.5vw,1.85rem);font-weight:800;line-height:1.75;white-space:pre-wrap;overflow-wrap:anywhere;letter-spacing:.01em;margin:0 0 21px}.reference,.equation{padding:15px 17px;background:#f1f7ed;border-left:5px solid #7aaa8a;border-radius:0 12px 12px 0;line-height:1.85;white-space:pre-wrap;font-size:1.02rem;margin:17px 0}.reference:empty,.equation:empty{display:none}.image-area{background:#f7f8f3;padding:15px;border:1px solid #e8ebe1;border-radius:17px;margin:23px 0;}.image-top{display:flex;justify-content:space-between;gap:7px;align-items:center;font-weight:800;font-size:.87rem;margin-bottom:14px}.image-hint{color:#708279;font-size:.77rem;font-weight:500}.image-scroll{overflow:auto;border-radius:9px;max-height:min(50vh,490px);}.image-scroll img{display:block;max-width:none;width:100%;height:auto;object-fit:contain}.image-controls{display:flex;justify-content:end;gap:8px;margin-top:11px}
.feedback{white-space:pre-wrap;margin:15px 0;font-size:1.06rem;line-height:1.7;color:#386263;font-weight:620}.feedback:empty{display:none}.hint-panel{border:1px solid #dce7df;border-radius:16px;background:#f8fbf7;padding:20px;margin:15px 0 22px}.feedback-head{display:flex;align-items:center;flex-wrap:wrap;gap:10px}.result-pill{background:#e2efe9;color:#176e59;border-radius:99px;padding:7px 14px;min-width:75px;text-align:center;font-size:.95rem;font-weight:850}.result-pill.answer-wrong{background:#fbeae4;color:#984a39}.result-pill.answer-right{background:#e3f4e7;color:#176e4c}.result-pill:empty{display:none}.first-answer{font-size:.99rem;color:#405f60;font-weight:700;margin:4px 0}.hint-list{display:grid;gap:10px;margin-top:14px}.hint-line{background:#fff7df;border:1px solid #f4dcaa;border-left:5px solid #ecb047;border-radius:12px;padding:15px 18px;margin:0;line-height:1.75;font-size:1.05rem}.hint-last{color:#647771;font-size:.91rem;margin:11px 0 0}.hint-last:empty{display:none}.final-answer{background:#eaf3ed;color:#155b52;padding:15px 18px;border-radius:12px;font-weight:800;font-size:1.2rem;margin:14px 0 0}.review-panel{background:#f2f8f2;border-radius:12px;padding:14px}.answer-form{border-top:1px solid #edf0e9;padding-top:20px;margin-top:21px}.answer-form label{font-size:1.05rem;font-weight:800;display:block;margin-bottom:9px}.answer-controls{display:flex;align-items:stretch;gap:12px}.answer-controls input{border:2px solid #c4d7ce;border-radius:14px;background:#fff;flex:1;min-width:0;padding:14px 18px;min-height:59px;font-size:1.16rem;color:#183e45}.answer-controls input::placeholder{color:#93a6a0}.answer-controls button{flex:0 0 auto}.answer-note{font-size:.79rem;color:#7b8f85;margin:11px 0 0}.main-actions{display:flex;flex-wrap:wrap;gap:12px;margin-top:24px}.main-actions .next-button{min-width:220px}.help-details,.summary-details{border-top:1px solid #e6ece5;margin-top:28px;padding-top:17px;color:#617b72}.help-details summary,.summary-details summary{font-size:.84rem;cursor:pointer;font-weight:750}.help-details .controls{display:flex;flex-wrap:wrap;gap:8px;margin-top:14px}.hold-panel{border-radius:12px;padding:18px;background:#fff3e6}.hold-panel .controls{display:flex;gap:10px}.summary-details pre{font-size:.77rem;line-height:1.7;white-space:pre-wrap;word-break:break-all}
.parent-top{display:flex;align-items:center;justify-content:space-between;gap:15px;margin-bottom:25px}.parent-top h1{margin:5px 0;font-size:1.55rem}.parent-top p{color:#61766f;font-size:.87rem}.parent-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}.parent-card{background:#fff;padding:25px;border:1px solid var(--border);border-radius:20px;box-shadow:var(--shadow)}.parent-card:first-child{grid-row:span 2}.parent-card-head{display:flex;gap:12px;align-items:flex-start}.step-badge{display:grid;place-items:center;background:#d9f1e4;color:#176b5a;border-radius:10px;min-width:42px;height:42px;font-weight:850}.parent-card h2{margin:0 0 5px;font-size:1.13rem}.parent-card p{margin:4px 0 17px}.parent-card label{display:block;margin:18px 0 8px;font-size:.88rem;font-weight:800}.parent-card input[type=file]{width:100%;border:1px dashed #b0c9ba;border-radius:12px;padding:17px 12px;background:#f8fbf8;min-width:0}.parent-card input[type=text],.parent-card select{width:100%;font-size:.95rem;padding:13px;border:1.5px solid #bfcec4;border-radius:11px;background:#fff;min-height:48px}.parent-card button{margin:15px 0 8px}.parent-card .note{font-size:.78rem;line-height:1.7;color:#6b8078}.parent-card .safety{border-top:1px solid var(--border);margin-top:20px;padding-top:4px}.safety label{display:flex;align-items:start;gap:8px;font-size:.81rem;font-weight:600}.safety input{width:20px;height:20px;flex-shrink:0;accent-color:var(--teal)}.safety small{display:block;color:#6b8078;font-size:.76rem}footer{max-width:1120px;margin:auto;padding:12px 20px 35px;display:flex;justify-content:space-between;gap:16px;color:#78908a;font-size:.76rem}
[hidden]{display:none!important}
@media(max-width:720px){main{padding:14px 12px 55px}.app-header{padding:13px 15px}.header-meta{font-size:.66rem}.hero{padding:27px 24px;min-height:195px}.hero h1{font-size:1.75rem}.hero-art{width:135px;opacity:.62}.hero-art .orbit-a{left:-25px}.subject-grid,.parent-grid{grid-template-columns:1fr}.pack-label{grid-column:auto}.parent-entry{align-items:start;flex-direction:column}.question-card{padding:21px 19px}.lesson-top{padding:17px}.answer-controls{flex-direction:column}.answer-controls button{width:100%}.parent-card:first-child{grid-row:auto}.parent-top{display:block}.parent-top button{margin-top:8px}.image-hint{display:none}.header-meta{display:none}footer{display:block;text-align:center}footer span{display:block}}
@media(max-width:420px){.hero-art{display:none}.hero{min-height:175px}.lesson-meta{font-size:.8rem}.question{font-size:1.34rem}.session-tag{font-size:.68rem}.question-card{padding:18px 15px}.main-actions button{width:100%}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation-duration:.001s!important;transition-duration:.001s!important;scroll-behavior:auto!important}}
/* All tappable actions, including quiet navigation, meet the 44pt iOS target guideline. */
.lesson-actions button{min-height:44px}
/* Accessible contrast for explanatory small text on white and cream backgrounds. */
.section-caption,.subject-card .minor,.answer-note,.parent-card .note,.parent-card .safety small,footer{color:#526b63}
.session-tag{color:#2a6753}

/* v7.4: production-oriented student experience; confirmation labels appear only on synthetic cards. */
.hero{min-height:190px;padding:28px 40px}
.hero h1{line-height:1.33;margin:8px 0 11px}
.hero-art{height:178px;transform:scale(.88);transform-origin:center right}
.section-heading{margin-top:23px}
.section-heading .eyebrow{letter-spacing:.1em}
.subject-card{display:flex;flex-direction:column;transition:box-shadow .18s ease,transform .18s ease}
.subject-card .subject-count{margin-bottom:18px}
.subject-card button{margin-top:auto}
.subject-card:focus-within{box-shadow:0 0 0 3px #a5d6be, var(--shadow)}
@media (hover:hover){.subject-card:hover{box-shadow:0 13px 30px rgba(34,62,65,.11);transform:translateY(-2px)}}
.subject-card.is-demo{border-color:#e7d7b9}
.demo-card-tag{position:absolute;top:18px;right:18px;font-size:.73rem;font-weight:800;line-height:1.3;color:#87552a;background:#fff2db;border-radius:999px;padding:7px 10px;max-width:55%;text-align:center}
.pack-label{color:#3e716b;font-weight:750;font-size:.82rem}
.lesson-top{padding:16px 22px;margin-bottom:14px}
.lesson-actions .quiet-button{padding:9px 13px;border:1px solid var(--border);border-radius:12px;min-height:44px}
.question{line-height:1.62}
.card-kicker{font-size:.88rem;letter-spacing:0}
.question-id{color:#476d66}
.summary-details pre{font-family:inherit;font-size:.92rem;line-height:1.9;color:#365c52;background:#f2f7f1;border:1px solid #dce8df;border-radius:14px;padding:18px;word-break:normal}
.summary-details summary{font-size:.9rem;min-height:44px;padding-top:12px}
.parent-entry{margin-top:24px}
@media(max-width:720px){.hero{min-height:160px;padding:24px 24px}.hero-art{height:145px;transform:scale(.76)}.section-heading{margin-top:20px}.subject-card{padding:21px}.demo-card-tag{top:15px;right:14px;font-size:.7rem}.question{line-height:1.57}}
@media(max-width:420px){.hero{min-height:152px}.hero-art{display:none}.subject-card .subject-icon{margin-bottom:16px}.subject-card{padding-top:21px}.subject-card.is-demo .subject-icon{margin-top:22px}}

/* v7.5: readable, natural-language headline on tablet and phone */
.hero-content h1{max-width:none;text-wrap:wrap}
@media(max-width:420px){.hero-content h1{max-width:100%;font-size:clamp(1.8rem,7.4vw,2.25rem)}}

/* v7.6: clear, guarded parent review of a reversible consultation hold. */
#parentReleaseArea{margin:18px 0;background:#fff6e7;border:1px solid #edcf8c;color:#4b462f;line-height:1.7}
#parentReleaseArea p{margin:9px 0 12px}#parentReleaseArea summary{font-weight:700;cursor:pointer}
#parentReleaseArea button{margin-top:12px;min-height:50px}#parentReleaseArea[hidden]{display:none}

/* v7.7: consultation is student-authored evidence, not a parent blocking screen */
.autosave-label{font-size:.8rem;color:#42736b;font-weight:600}
.consult-panel{background:#f5fbf7;border:1px solid #b7dacc;border-radius:17px;padding:22px;margin:16px 0}
.consult-panel label{display:block;font-size:1.1rem;font-weight:700;color:#193f43}
.consult-panel p{margin:8px 0 14px;color:#47666b}
.consult-panel textarea{display:block;box-sizing:border-box;width:100%;padding:14px;font:inherit;font-size:1rem;line-height:1.55;min-height:104px;border:2px solid #a4cfc1;border-radius:12px;background:white;color:#173d4d;resize:vertical}
.consult-panel .controls{display:flex;flex-wrap:wrap;gap:10px;margin-top:14px}
.consult-panel [role=alert]{color:#8b443a;font-weight:600}
.consult-saved{padding:12px 16px;background:#e7f6ec;color:#135646;border-radius:12px;margin:12px 0;font-weight:600}
.result-pill.answer-pending{background:#eef3fc;color:#2e5879}
@media(max-width:640px){.consult-panel{padding:16px}.autosave-label{display:block;font-size:.72rem}.consult-panel .controls button{min-height:48px}}
/* Vocabulary: readable three-choice, large targets; not a text-entry form. */
.subject-card.vocabulary .subject-icon{background:#eef0d8;}
.choice-options{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.8rem;margin:1.1rem 0;}
.choice-options[hidden]{display:none;}
.choice-button{min-height:68px;border:2px solid #c9dacf;border-radius:16px;background:#fff;color:#173d4d;font-size:1.2rem;font-weight:700;cursor:pointer;padding:1rem .5rem;box-shadow:0 3px 0 #b5d1c8;}
.choice-button:hover,.choice-button:focus-visible{background:#e9f7ed;border-color:#147e72;outline-offset:3px;}
.choice-button:disabled{opacity:.55;cursor:default;}
.final-explanation{margin:1rem 0;padding:1.15rem;background:#eff7f2;color:#173d4d;border-left:4px solid #178575;border-radius:12px;white-space:pre-wrap;line-height:1.8;}
@media(max-width:600px){.choice-options{grid-template-columns:1fr;gap:.7rem}.choice-button{min-height:60px}}
