:root{--matching-activity-bg:var(--i-eef6f4,#eef6f4);--matching-activity-border:var(--i-d4e6df,#d4e6df)}
.student-home-view{--home-ink:var(--n-403b35,#403b35);--home-muted:var(--n-716d63,#716d63);--home-line:var(--n-eee3d5,#eee3d5);--home-coral:var(--n-da725e,#da725e);--home-sage:var(--n-6e8e78,#6e8e78);--home-gold:var(--i-b08a39,#b08a39);color:var(--home-ink);max-width:850px;margin:0 auto 28px}
.student-home-view svg{width:24px;height:24px;flex-shrink:0}
/* 내 학습's greeting row is the title row every tab shares (student-tabs.css .student-tab-head: height, place, slot); its
   right slot is empty since 새로고침 · 로그아웃 moved to the brand header (student-tabs.css .header-tools, 2026-10-30). */
.student-welcome{display:flex;align-items:center;gap:8px}
.student-identity{min-width:0;max-width:35%;flex:0 1 auto}
.student-home-eyebrow{display:block;font-size:10px;line-height:1.5;font-weight:800;letter-spacing:2px;color:var(--n-a94c31,#a94c31)}
.student-welcome h1{font-size:14px;font-weight:700;letter-spacing:-.3px;line-height:22px;margin:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.student-welcome h1 span{color:var(--home-coral)}
.student-class-chip{display:flex;align-items:center;gap:4px;max-width:28%;min-width:0;flex-shrink:1;border:1px solid var(--n-d5e2d8,#d5e2d8);background:var(--n-edf4ed,#edf4ed);color:var(--n-567663,#567663);border-radius:20px;padding:1px 7px;font-size:10px;line-height:18px;font-weight:700}
.student-class-chip svg{width:12px;height:12px}
.student-class-chip span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.student-home-view button:focus-visible,.student-book-wheel:focus-visible{outline:3px solid var(--n-d4916b,#d4916b);outline-offset:4px}
.student-book-picker{background:var(--n-fffdf8,#fffdf8);border:1px solid var(--home-line);border-radius:20px;padding:8px 20px 7px;box-shadow:0 6px 26px #6d513706}
.student-picker-heading{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:2px}
.student-picker-heading .student-home-eyebrow{display:none}
.student-picker-heading h2{margin:0;font-size:14px;font-weight:700;letter-spacing:-.4px;line-height:1.5}
.student-book-position{display:block;flex-shrink:0;min-width:48px;text-align:center;background:var(--n-f5efe4,#f5efe4);border-radius:20px;padding:3px 8px;color:var(--n-8f7b59,#8f7b59);font-size:10px;line-height:1.5;font-weight:700;font-variant-numeric:tabular-nums}
.student-book-wheel-shell{position:relative;--wheel-height:96px;--book-height:64px;--book-gap:10px}
.student-book-wheel{position:relative;z-index:1;display:flex;flex-direction:column;gap:var(--book-gap);height:var(--wheel-height);padding:calc((var(--wheel-height) - var(--book-height))/2) 10px;overflow-y:auto;overflow-x:hidden;overscroll-behavior-y:contain;scroll-snap-type:y mandatory;scroll-padding-block:calc((var(--wheel-height) - var(--book-height))/2);scrollbar-width:none;-webkit-overflow-scrolling:touch;touch-action:pan-y;border-radius:16px}
.student-book-wheel::-webkit-scrollbar{display:none}
.student-book-row{position:relative;flex:0 0 var(--book-height);height:var(--book-height);width:100%;border:0;border-radius:17px;padding:0;margin:0;background:transparent;color:inherit;text-align:left;scroll-snap-align:center;cursor:pointer;outline-offset:0}
.student-book-card{display:flex;align-items:center;gap:12px;width:100%;height:100%;padding:8px 14px;border:1px solid var(--n-e9ddcc,#e9ddcc);background:var(--n-f6f0e6,#f6f0e6);border-radius:14px;transform:scale(.93);opacity:.38;filter:blur(1.4px);transition:transform .2s ease,opacity .2s ease,filter .2s ease,background .2s ease,box-shadow .2s ease;pointer-events:none}
.student-book-row.is-near .student-book-card{opacity:.56;filter:blur(.7px)}
.student-book-row.is-selected .student-book-card{background:var(--n-ffffff,#fff);border-color:var(--n-dba98f,#dba98f);transform:scale(1);opacity:1;filter:none;box-shadow:0 5px 14px var(--n-ad725b14,#ad725b14)}
.student-book-row:hover:not(:disabled){filter:none}
.student-book-row:active:not(:disabled){transform:none}
.student-book-icon{display:grid;place-items:center;flex-shrink:0;width:34px;height:40px;border:1px solid var(--n-ebd3bd,#ebd3bd);background:var(--n-f6e7d6,#f6e7d6);border-radius:9px 12px 12px 9px;color:var(--n-ad8057,#ad8057);box-shadow:inset 3px 0 var(--n-e8ceb1,#e8ceb1)}
.student-book-icon svg{width:23px;height:23px}
.student-book-copy{display:flex;flex-direction:column;gap:4px;min-width:0;flex:1}
.student-book-label{display:none}
.student-book-title{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden;overflow-wrap:anywhere;font-family:var(--font-en),Arial,'Noto Sans KR',sans-serif;font-size:18px;font-weight:700;letter-spacing:-.35px;line-height:1.25}
.student-book-check{display:grid;place-items:center;flex-shrink:0;width:24px;height:24px;border-radius:50%;background:var(--i-e8f1e9,#e8f1e9);color:var(--i-64866c,#64866c);font-size:13px;font-weight:700;opacity:0}
.student-book-row.is-selected .student-book-check{opacity:1}
.student-wheel-guide{position:absolute;z-index:0;inset:calc((var(--wheel-height) - var(--book-height))/2 - 6px) 0;pointer-events:none;border:1px solid var(--n-f0e3d3,#f0e3d3);border-radius:21px;background:var(--n-fbf4e9,#fbf4e9)}
.student-book-help{text-align:center;font-size:10px;color:var(--n-716d63,#716d63);line-height:1.5;margin:2px 0 0}
.student-book-help span{display:none}
.student-visually-hidden{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}
.student-activities{margin-top:30px}
.student-activities-heading{margin:0 0 18px;padding:0 2px}
.student-activities-heading h2{font-family:var(--font-en),Arial,'Noto Sans KR',sans-serif;font-size:22px;line-height:1.35;letter-spacing:-.5px;font-weight:700;overflow-wrap:anywhere;margin:8px 0 6px}
.student-activities-heading p{font-size:12px;color:var(--home-muted)}
.student-activity-list{display:grid;grid-template-columns:1fr;gap:12px;list-style:none;margin:0;padding:0}
.student-activity-list li{min-width:0}
.student-activity-button{--activity-gap:14px;--stamp-size:36px;display:flex;align-items:center;gap:var(--activity-gap);width:100%;min-height:93px;padding:17px 19px;border:1px solid var(--n-edddcd,#edddcd);border-radius:18px;background:var(--n-fffaf3,#fffaf3);color:var(--home-ink);text-align:left;box-shadow:0 3px 10px #74563703}
.student-activity-button:hover:not(:disabled){background:var(--n-fff5e9,#fff5e9);filter:none;box-shadow:0 5px 18px #7456370a}
.student-activity-number{flex-shrink:0;font-family:var(--font-en),Arial,sans-serif;font-size:12px;font-weight:700;color:var(--n-bcae9b,#bcae9b);font-variant-numeric:tabular-nums;width:13px;text-align:center}
.student-activity-icon{display:grid;place-items:center;flex-shrink:0;width:49px;height:49px;border-radius:14px;color:var(--i-b58639,#b58639);background:var(--i-f8e9bd,#f8e9bd)}
.student-activity-icon svg{width:26px;height:26px}
.student-activity-copy{min-width:0;flex:1;display:flex;flex-direction:column;gap:5px}
.student-activity-copy strong{font-size:17px;line-height:1.35;font-weight:800;letter-spacing:-.6px}
.student-activity-copy>span{font-size:11px;color:var(--home-muted);line-height:1.5;overflow-wrap:anywhere}
.student-activity-button>.student-activity-arrow{width:18px;height:18px;color:var(--n-b3a18a,#b3a18a)}
.activity-reading{background:var(--i-f3f7ef,#f3f7ef);border-color:var(--i-dce7d5,#dce7d5)}
.activity-reading .student-activity-icon{background:var(--i-dfebd5,#dfebd5);color:var(--i-739363,#739363)}
.activity-reading:hover:not(:disabled){background:var(--i-eef5e7,#eef5e7)}
.activity-quiz{background:var(--i-fff3ed,#fff3ed);border-color:var(--i-f0d7ca,#f0d7ca)}
.activity-quiz .student-activity-icon{background:var(--i-f8d9c9,#f8d9c9);color:var(--i-c77a58,#c77a58)}
.activity-quiz:hover:not(:disabled){background:var(--i-ffede4,#ffede4)}
.activity-sentence-builder{background:var(--i-f2f1fb,#f2f1fb);border-color:var(--i-dfdaf0,#dfdaf0)}
.activity-sentence-builder .student-activity-icon{background:var(--i-e5dff7,#e5dff7);color:var(--i-8a70ad,#8a70ad)}
.activity-sentence-builder:hover:not(:disabled){background:var(--i-edeaf8,#edeaf8)}
.activity-word-matching{background:var(--matching-activity-bg);border-color:var(--matching-activity-border)}
.activity-word-matching .student-activity-icon{background:var(--i-d7eae4,#d7eae4);color:var(--i-618b7e,#618b7e)}
.activity-word-matching:hover:not(:disabled){background:var(--i-e7f2ee,#e7f2ee)}.activity-word-matching.is-active:hover:not(:disabled){background:var(--matching-activity-bg)}
.student-activity-button[aria-busy="true"] .student-activity-arrow{opacity:0}
.student-home-status{color:var(--n-a26040,#a26040);font-size:13px;line-height:1.7;margin-top:16px}
.student-home-status:empty{display:none}
.student-home-empty{text-align:center;padding:54px 24px;background:var(--n-fffdf8,#fffdf8);border:1px solid var(--home-line);border-radius:24px}
.student-empty-icon{display:grid;place-items:center;width:68px;height:68px;border-radius:20px;background:var(--n-f5e8d1,#f5e8d1);color:var(--n-b39359,#b39359);margin:0 auto 22px}
.student-empty-icon svg{width:32px;height:32px}
.student-home-empty h2{font-size:19px;margin:0 0 12px;line-height:1.5}
.student-home-empty p{font-size:13px;color:var(--home-muted);line-height:1.9}
.learning-navigator{max-width:850px;margin:0 auto 18px;padding:18px 20px 16px;border:1px solid var(--n-eee3d5,#eee3d5);border-radius:20px;background:var(--n-fffdf8,#fffdf8);color:var(--n-403b35,#403b35);box-shadow:0 6px 26px #6d513706}
.learning-navigator[hidden],.learning-navigator [hidden]{display:none!important}
.learning-nav-heading{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:16px}
.learning-nav-heading>div{min-width:0}
.learning-nav-heading h1{font-family:var(--font-en),Arial,'Noto Sans KR',sans-serif;font-size:22px;line-height:1.35;letter-spacing:-.5px;margin:5px 0 0;overflow-wrap:anywhere}
.learning-nav-heading p{font-size:12px;color:var(--n-716d63,#716d63);line-height:1.6;margin-top:5px}
.learning-nav-heading>button{flex-shrink:0;font-size:12px;padding:9px 12px}
.learning-activity-tabs{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;margin-bottom:12px}
.learning-activity-tab{display:flex;align-items:center;justify-content:center;gap:6px;min-width:0;min-height:46px;padding:10px 8px;border:1px solid var(--n-e7dac8,#e7dac8);border-radius:11px;background:var(--n-faf5ec,#faf5ec);color:var(--n-6d6050,#6d6050);font-size:14px;font-weight:700;line-height:1.4;text-align:center;overflow-wrap:anywhere}
.learning-activity-tab svg{width:18px;height:18px;flex-shrink:0}
.learning-activity-tab.selected{border-color:var(--n-a94c31,#a94c31);background:var(--n-fff0e7,#fff0e7);color:var(--n-a94c31,#a94c31);box-shadow:inset 0 -2px var(--n-a94c31,#a94c31)}
.learning-activity-tab:hover:not(:disabled){background:var(--n-fff0e7,#fff0e7);filter:none}
.learning-activity-tab:disabled{opacity:.45;cursor:not-allowed}
.learning-day-tabs{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(0,1fr);gap:6px;padding-top:12px;border-top:1px solid var(--n-eee3d5,#eee3d5)}
.learning-day-tab{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;min-width:0;min-height:53px;padding:7px 4px;border:1px solid var(--n-e7dac8,#e7dac8);border-radius:9px;background:var(--n-fffaf2,#fffaf2);color:var(--n-6d6050,#6d6050);font-size:14px;font-weight:700;line-height:1.4;text-align:center}
.learning-day-tab strong{font-size:14px;line-height:1.4}
.learning-day-tab small{display:block;max-width:100%;color:var(--n-817263,#817263);font-size:10px;line-height:1.4;font-weight:400;overflow-wrap:anywhere}
.learning-day-tab.selected{border-color:var(--n-a94c31,#a94c31);background:var(--n-a94c31,#a94c31);color:var(--n-ffffff,#fff);box-shadow:0 3px 9px var(--n-a94c3114,#a94c3114)}
.learning-day-tab.selected small{color:var(--n-fff3eb,#fff3eb)}
.learning-day-tab:hover:not(:disabled):not(.selected){background:var(--n-fff0e7,#fff0e7);filter:none}
.learning-day-tab:disabled{opacity:.45;background:var(--n-f5f1e9,#f5f1e9);cursor:not-allowed}
.learning-nav-note{color:var(--n-716d63,#716d63);font-size:12px;line-height:1.7;margin-top:10px}
.learning-nav-note:empty{display:none}.learning-nav-note.warning{color:var(--i-a94c31,#a94c31)}
.learning-navigator button:focus-visible{outline:3px solid var(--n-93452e,#93452e);outline-offset:3px}
body[data-activity-learning="true"] .page-title,body[data-activity-learning="true"] .book-tabs{display:none}
body[data-activity-learning="true"] .reading-selector>.reading-selector-heading:first-child,body[data-activity-learning="true"] .reading-days{display:none}
body[data-activity-learning="true"] #studyPanel,body[data-activity-learning="true"] #readingPanel{max-width:850px;margin:0 auto 40px}
.learning-quiz-choices{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.learning-quiz-choices button{display:flex;flex-direction:column;gap:8px;align-items:center;padding:24px 14px;min-height:90px}.learning-quiz-choices small{font-size:12px;color:var(--muted)}
@media(min-width:680px){.student-activity-list{grid-template-columns:repeat(2,minmax(0,1fr))}.student-book-picker{padding:8px 28px 7px}.student-book-wheel-shell{max-width:600px;margin:auto}.student-book-help span{display:inline}.student-activity-button{--activity-gap:12px;padding:19px 17px}}
@media(max-width:420px){.student-book-picker{padding:8px 10px 7px;border-radius:18px}.student-picker-heading{padding:0 4px}.student-picker-heading h2{font-size:13px}.student-book-card{padding:8px 10px;gap:9px}.student-book-title{font-size:17px}.student-book-icon{width:30px;height:36px}.student-book-check{width:20px;height:20px;font-size:11px}.student-activity-button{padding:15px 13px;gap:12px;min-height:85px}.student-activity-icon{width:44px;height:44px;border-radius:12px}.student-activity-copy strong{font-size:16px}.student-activity-copy>span{font-size:10px}}
@media(max-width:600px){.learning-navigator{padding:15px 13px 13px;border-radius:18px;margin-bottom:14px}.learning-nav-heading{gap:10px;margin-bottom:13px;align-items:flex-start}.learning-nav-heading h1{font-size:19px}.learning-nav-heading>button{font-size:11px;padding:8px 10px}.learning-activity-tabs{gap:5px;margin-bottom:10px}.learning-activity-tab{font-size:12px;padding:9px 4px;gap:4px;min-height:46px}.learning-activity-tab svg{width:15px;height:15px}.learning-day-tabs{gap:4px;padding-top:10px}.learning-day-tab{font-size:12px;padding:7px 2px;min-height:51px}.learning-day-tab strong{font-size:12px}.learning-day-tab small{font-size:9px}.learning-nav-note{font-size:11px}}
@media(prefers-reduced-motion:reduce){.student-book-card,.student-activity-button{transition:none}.student-book-wheel{scroll-behavior:auto}}
/* Day first, with each lesson kept directly under its activity. */
.student-activities{margin-top:20px}
.student-day-tabs{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(0,1fr);gap:7px;margin:0 0 12px}
.student-day-tabs button{min-width:0;min-height:47px;padding:9px 3px;border:1px solid var(--n-c7beb0,#c7beb0);border-radius:10px;background:var(--n-ddd5c8,#ddd5c8);color:var(--n-6b6155,#6b6155);font-size:14px;font-weight:700;line-height:1.4}
.student-day-tabs button.selected{background:var(--n-fff2c9,#fff2c9);border:2px solid var(--n-cf9d5b,#cf9d5b);color:var(--n-4d3920,#4d3920);box-shadow:0 3px 10px var(--n-b5823020,#b5823020)}
.student-day-tabs button.inactive:hover:not(:disabled){background:var(--n-e9dfcf,#e9dfcf);filter:none}
.student-day-tabs button:disabled{opacity:.6}
.student-day-tools{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:14px;color:var(--n-8b7252,#8b7252);font-size:12px}
.student-day-tools>span{font-weight:700}
.student-day-tools button{border:0;background:transparent;color:var(--n-8d533c,#8d533c);padding:7px 0;font-size:12px;text-decoration:underline;text-underline-offset:4px}
.student-activity-list{grid-template-columns:1fr!important;gap:12px}
.student-activity-button{min-height:79px;padding:14px 17px}
.student-activity-button.is-active{border-radius:18px 18px 0 0;border-bottom-color:transparent}
.student-activity-button.is-active .student-activity-arrow{transform:rotate(180deg)}
.student-activity-button>.student-activity-arrow{width:18px;height:18px;margin-left:calc(var(--stamp-size) - var(--activity-gap));transition:transform .18s ease}
.student-activity-stamps{display:flex;align-items:center;gap:12px;flex:0 0 auto;margin-left:auto;padding-block:5px}
.student-completion-stamp{--stamp-angle:-8deg;position:relative;display:block;flex:0 0 var(--stamp-size);width:var(--stamp-size);height:var(--stamp-size);color:var(--i-bcb5a9,#bcb5a9);filter:drop-shadow(0 1px 0 var(--i-ffffff,#fff));transform:rotate(var(--stamp-angle))}
.student-completion-stamp.stamp-2{--stamp-angle:8deg}
.student-home-view .student-completion-stamp>svg{display:block;width:100%;height:100%;stroke-width:1.4;fill:var(--i-bcb5a909,#bcb5a909);filter:drop-shadow(0 -1px 0 var(--i-8b81771a,#8b81771a))}
.student-completion-stamp .stamp-symbol{stroke-width:2.4;fill:none}
.student-stamp-number{position:absolute;right:-1px;bottom:-2px;display:grid;place-items:center;width:12px;height:12px;border-radius:50%;background:var(--i-fffaf3,#fffaf3);box-shadow:0 0 0 1px currentColor;color:inherit;font:700 8px/1 var(--font-en),Arial,sans-serif}
.student-completion-stamp.is-earned{color:var(--i-c43c35,#c43c35);filter:none}
.student-completion-stamp.is-earned>svg{stroke-width:1.8;fill:var(--i-c43c350c,#c43c350c);filter:none}
.student-completion-stamp.is-earned .student-stamp-number{background:var(--i-c43c35,#c43c35);color:var(--i-ffffff,#fff);box-shadow:0 0 0 1px var(--i-fffaf3,#fffaf3)}
.student-completion-stamp.is-stamping{z-index:1;animation:student-stamp-bang .8s cubic-bezier(.2,.8,.3,1)}
@keyframes student-stamp-bang{0%{transform:translateY(-22px) scale(2.2) rotate(calc(var(--stamp-angle) - 15deg))}40%{transform:translateY(-4px) scale(1.35) rotate(calc(var(--stamp-angle) - 5deg))}56%{transform:translateY(2px) scale(.82) rotate(var(--stamp-angle))}76%{transform:translateY(-2px) scale(1.12) rotate(var(--stamp-angle))}100%{transform:translateY(0) scale(1) rotate(var(--stamp-angle))}}
@media(max-width:420px){.student-activity-button{--activity-gap:7px;--stamp-size:29px;padding-inline:11px;gap:var(--activity-gap)}.student-activity-number{width:11px;font-size:10px}.student-activity-icon{width:32px!important;height:36px!important;border-radius:10px}.student-activity-icon svg{width:23px;height:23px}.student-activity-copy strong{font-size:14px;letter-spacing:-.5px}.student-activity-stamps{gap:10px}.student-stamp-number{width:10px;height:10px;font-size:7px;right:-1px;bottom:-1px}.student-activity-button>.student-activity-arrow{width:16px;height:16px}}
@media(prefers-reduced-motion:reduce){.student-activity-button>.student-activity-arrow{transition:none}.student-completion-stamp.is-stamping{animation:none}}
/* The count line keeps its place while a Day's counts are read, so the row labels never move (2026-10-30); since
   2026-11-05 it is also where a row's 학습 완료 shows (it takes the count's place, same height). */.student-activity-copy>.student-activity-line{display:flex;align-items:center;gap:6px;min-width:0;min-height:1.5em}
.student-inline-activity{border:1px solid var(--n-edddcd,#edddcd);border-top:0;border-radius:0 0 18px 18px;padding:4px 16px 18px;background:var(--n-fffdf8,#fffdf8)}
.student-inline-activity[hidden]{display:none!important}
/* Slide open (student-home.js slideRow): the row's height moves while its screen, already at full size, is uncovered;
   closing folds an empty frame of the screen (.student-inline-fold) that keeps the open row's look. */
.student-activity-list>li{position:relative}
.student-activity-list>li.is-sliding{clip-path:inset(-40px 0 0 0 round 0 0 18px 18px)}
.student-inline-fold{position:absolute;left:0;right:0;bottom:0;border:1px solid var(--n-edddcd,#edddcd);border-top:0;border-radius:0 0 18px 18px;background:var(--n-fffdf8,#fffdf8);pointer-events:none}
.student-activity-list>li:has(>.student-inline-fold) .student-activity-button{border-radius:18px 18px 0 0;border-bottom-color:transparent}
.student-activity-loading-heading{display:flex;justify-content:flex-end;padding:0 0 10px;border-bottom:1px solid var(--n-eee3d5,#eee3d5)}
.student-activity-loading-heading button{font-size:12px;padding:7px 12px}
.student-activity-loading{display:grid;place-items:center;min-height:250px;padding:24px;text-align:center;color:var(--n-8b6146,#8b6146);font-size:15px}
.student-activity-loading-start{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;width:100%;min-height:300px;margin-top:12px;border:1px solid var(--n-e7dfd1,#e7dfd1);border-radius:16px;background:var(--n-f5f4ed,#f5f4ed);color:var(--n-8b887d,#8b887d);opacity:1;cursor:wait}
.student-activity-loading-start strong{font-size:clamp(30px,7vw,42px);font-weight:800}
.student-activity-loading-start span{font-size:13px;font-weight:400}
.student-activity-list>[data-home-activity-row="word-matching"] .student-activity-loading-start{background:var(--matching-activity-bg);border-color:var(--matching-activity-border);color:var(--i-506e62,#506e62)}
.student-inline-activity .book-panel{margin:0!important;padding:0;border:0;background:transparent;box-shadow:none;border-radius:0}
.student-inline-activity .study-heading,.student-inline-activity .reading-selector{display:flex;justify-content:space-between;align-items:center;gap:12px;margin:0 0 12px;padding:0 0 10px;border-bottom:1px solid var(--n-eee3d5,#eee3d5)}
.study-position,.reading-position{font-size:var(--act-toolbar,14px);font-weight:700;font-variant-numeric:tabular-nums;color:var(--n-8b6146,#8b6146)}
.learning-item-heading,.student-inline-activity .learning-item-heading{display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);align-items:center;gap:0}
.learning-item-navigation{grid-column:2;display:flex;align-items:center;justify-content:center;gap:5px}
.learning-item-navigation .study-position,.learning-item-navigation .reading-position{min-width:42px;text-align:center;white-space:nowrap}
.learning-item-heading>.secondary{grid-column:3;justify-self:end}
.learning-item-arrow{display:grid;place-items:center;width:44px;height:44px;padding:0;border:0;background:transparent;color:var(--n-a65035,#a65035);border-radius:10px;font-size:30px;line-height:1}
.learning-item-arrow:hover:not(:disabled){background:var(--n-f9ecdf,#f9ecdf);filter:none}
.learning-item-arrow:disabled{color:var(--n-cfc6ba,#cfc6ba);opacity:.6;cursor:default}
.learning-item-arrow:focus-visible{outline:2px solid var(--n-a65035,#a65035);outline-offset:2px}
.student-inline-activity .study-heading>.secondary,.student-inline-activity .reading-selector>.secondary,.inline-close{font-size:12px;padding:7px 12px}
.student-inline-activity .study-word-card,.student-inline-activity .study-quiz-card{padding:16px 12px;border-radius:12px;background:var(--n-ffffff,#fff);border-color:var(--n-eee3d5,#eee3d5)}
.student-inline-activity .study-rounds{margin-bottom:12px}
.student-inline-activity .study-audio-controls{justify-content:center;gap:10px}
.student-inline-activity .study-next{margin-top:12px;gap:9px}
.student-inline-activity .study-next button{padding:10px 12px}
.student-inline-activity .study-empty,.student-inline-activity .study-finish{padding:20px 14px}
.student-inline-activity .study-quiz-instruction{font-size:12px;margin-bottom:12px}
.student-inline-activity .study-writing-prompt{font-size:19px;margin:10px 0 18px}
.student-inline-activity .study-answer-label textarea{font-size:17px;padding:10px;min-height:84px}
.student-inline-activity .study-result{padding:14px;margin-top:12px}
.student-inline-activity .study-result>strong{font-size:16px}
.student-inline-activity .study-result .study-model{font-size:18px}
.student-inline-activity .reading-top{justify-content:flex-end;margin-bottom:10px}
.student-inline-activity .reading-target{padding:18px 14px;margin:10px 0}
.student-inline-activity .reading-target p{font-size:23px}
.student-inline-activity .reading-record-row{margin:12px 0}
.student-inline-activity .reading-controls textarea[hidden]{display:none}
.student-inline-activity .reading-controls textarea{min-height:64px;font-size:15px;padding:10px}
.student-inline-activity .reading-auto-status{font-size:12px;padding:8px;margin:8px 0}
.student-inline-activity .reading-listening-tools{margin:0;gap:10px}
.student-inline-activity .record-caption{font-size:12px}
body[data-inline-learning="true"] .page-title,body[data-inline-learning="true"] .book-tabs,body[data-inline-learning="true"] .speech-guide{display:none!important}
body[data-inline-learning="true"] #speechFeedback{display:none}
.student-inline-activity #speakingPanel{grid-template-columns:1fr;gap:12px}
.student-inline-activity .inline-close{justify-self:end;grid-column:1/-1}
.student-inline-activity .coach-card,.student-inline-activity .privacy-note,.student-inline-activity #scoreExample,.student-inline-activity .outline-badge,.student-inline-activity .input-kind,.student-inline-activity .input-foot>span:first-child{display:none}
.student-inline-activity .score-card:has(.score-empty){display:none}
.student-inline-activity .question,.student-inline-activity .activity{padding:18px}
.student-inline-activity .question h2{font-size:22px}
.student-inline-activity .question-body{margin:14px 0 8px}
.student-inline-activity .question-number{font-size:13px;white-space:nowrap;font-family:var(--font-en),Arial,sans-serif;font-style:normal}
.student-inline-activity .topic,.student-inline-activity .question-label{display:none}
.student-inline-activity .steps{padding:12px;gap:6px}
.student-inline-activity .steps li{font-size:11px}
.student-inline-activity .score-card{padding:18px}
.learning-quiz-choices{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px;margin-top:12px}
.learning-quiz-choices button{font-size:13px;min-height:52px;padding:12px 8px}
.day-overview-modal{width:min(94vw,900px);max-width:900px;max-height:90dvh;padding:0;border-color:var(--n-d8cbb9,#d8cbb9);border-radius:18px;color:var(--n-403b35,#403b35);background:var(--n-fffaf2,#fffaf2)}
.day-overview-modal[open]{display:flex;flex-direction:column}
/* 단어 · 문장 전체 보기 (dist/day-overview.js), denser on 2026-11-05 (owner: "단어와 문장이 한 화면에 더 많이 보이도록 박스 크기
   조정하고 누르면 영어를 읽어주도록"): words are small cards in a grid that fills the width (2 a row on phones, 5 in the
   900 px dialog), sentences compact rows (2 a row from 700 px); each card is a button that plays the English, with a
   speaker that turns the accent colour while it plays. Text sizes are the --act-* roles (chip, ko-sm, label, note). */
.day-overview-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;padding:14px 18px 8px;flex-shrink:0}
.day-overview-heading h2{font-size:20px;margin:0 0 2px}
.day-overview-heading p{font-size:12px;line-height:1.5;margin:0;color:var(--n-827561,#827561);overflow-wrap:anywhere}
.day-overview-heading button{font-size:12px;padding:8px 12px}
.day-overview-tabs{display:flex;align-items:center;gap:8px;padding:0 18px 10px;flex-shrink:0}
.day-overview-tabs>[data-overview-kind]{border:1px solid var(--n-d5c8b3,#d5c8b3);background:var(--n-ece4d6,#ece4d6);color:var(--n-786650,#786650);border-radius:8px;padding:8px 18px;font-size:13px}
.day-overview-tabs>[data-overview-kind].selected{background:var(--n-a95037,#a95037);border-color:var(--n-a95037,#a95037);color:var(--n-ffffff,white)}
.day-overview-count{display:inline-block;white-space:nowrap;color:var(--n-887a66,#887a66)}
/* 가리기 (2026-11-05, owner: "버튼을 하나로 만들어서 1번 누르면 한글 가려지고 2번 누르면 영어 가려지고 3번 누르면 다시 둘다
   보이는 방식으로"): one pill button (the .secondary colours) at the right end of the 단어 | 문장 row. Its label names the next
   tap; the three labels share one grid cell (two hidden), so it keeps the widest label's width in every font and nothing
   moves when it changes. 44 px for a finger; the -4 px block margins keep the row as tall as before. */
button.day-overview-hide{display:inline-flex;align-items:center;justify-content:center;gap:5px;flex-shrink:0;box-sizing:border-box;min-height:44px;margin:-4px 0 -4px auto;padding:0 13px 0 11px;border-radius:999px;font-size:var(--act-button-sm);line-height:var(--act-lh-ui);white-space:nowrap}
button.day-overview-hide:active:not(:disabled){transform:none}
button.day-overview-hide:focus-visible{outline:3px solid var(--focus,var(--n-93452e,#93452e));outline-offset:2px}
.day-overview-hide-icon{flex-shrink:0;width:16px;height:16px}
.day-overview-hide[data-overview-hide="english"] [data-hide-icon="hide"],.day-overview-hide:not([data-overview-hide="english"]) [data-hide-icon="show"]{display:none}
.day-overview-hide-labels{display:grid;text-align:center}
.day-overview-hide-labels>span{grid-area:1/1}
.day-overview-hide-sizer{visibility:hidden}
.day-overview-scroll{overflow-y:auto;min-height:0;padding:10px 12px;background:var(--n-e8e2d8,#e8e2d8);border-top:1px solid var(--n-d9cdbd,#d9cdbd);overscroll-behavior:contain;scrollbar-gutter:stable}
.day-overview-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:6px;list-style:none;margin:0;padding:0}
.day-overview-grid.is-sentences{grid-template-columns:1fr}
.day-overview-grid>li{display:flex;min-width:0}
.day-overview-item{display:grid;grid-template-columns:auto minmax(0,1fr) auto;grid-template-areas:"num en say" ". ko say";align-items:baseline;align-content:start;column-gap:8px;row-gap:1px;box-sizing:border-box;width:100%;min-height:44px;margin:0;padding:7px 10px;background:var(--n-fffefb,#fffefb);border:1px solid var(--n-dfd3c1,#dfd3c1);border-radius:8px;box-shadow:0 2px 5px #59432809;color:inherit;font:inherit;text-align:left;overflow-wrap:anywhere;transition:none}
button.day-overview-item{cursor:pointer}
button.day-overview-item:hover{border-color:var(--n-d5c8b3,#d5c8b3);background:var(--n-fffefb,#fffefb);filter:none}
button.day-overview-item:active:not(:disabled){transform:none}
button.day-overview-item:focus-visible{outline:3px solid var(--focus,var(--n-93452e,#93452e));outline-offset:2px}
.day-overview-number{grid-area:num;min-width:1.5em;color:var(--n-a28d70,#a28d70);font-size:var(--act-label);font-weight:var(--act-w-strong);line-height:var(--act-lh-ui);font-variant-numeric:tabular-nums}
.day-overview-english{grid-area:en;font-family:var(--font-en),Arial,sans-serif;font-size:var(--act-chip);font-weight:var(--act-w-strong);line-height:var(--act-lh-word);letter-spacing:var(--act-track-word)}
.day-overview-item .day-overview-korean{grid-area:ko;font-size:var(--act-ko-sm);font-weight:var(--act-w-ko);line-height:1.4;color:var(--n-7c7163,#7c7163)}
.day-overview-item .is-concealed{visibility:hidden;user-select:none}
.day-overview-grid.is-sentences .day-overview-english{line-height:var(--act-lh-sentence);letter-spacing:var(--act-track-sentence)}
.day-overview-speaker{grid-area:say;align-self:center;width:16px;height:16px;color:var(--n-a28d70,#a28d70)}
button.day-overview-item.is-playing{border-color:var(--n-a95037,#a95037);box-shadow:0 0 0 1px var(--n-a95037,#a95037)}
button.day-overview-item.is-playing .day-overview-speaker{color:var(--n-a95037,#a95037)}
@media (prefers-reduced-motion:no-preference){button.day-overview-item.is-playing .day-overview-speaker{animation:day-overview-say 1s ease-in-out infinite}}
@keyframes day-overview-say{50%{opacity:.4}}
.day-overview-sr{position:absolute;width:1px;height:1px;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
/* A sound that could not play says so over the list's foot (never a line in the flow: nothing moves). */
.day-overview-status{position:absolute;left:12px;right:12px;bottom:12px;margin:0;padding:8px 12px;border-radius:10px;background:var(--n-4d3920,#4d3920);color:var(--n-ffffff,#fff);font-size:var(--act-note);font-weight:var(--act-w-note);line-height:1.45;text-align:center;word-break:keep-all;pointer-events:none}
.day-overview-status:empty{display:none}
@media (min-width:700px){.day-overview-grid.is-sentences{grid-template-columns:repeat(2,minmax(0,1fr))}}
.day-overview-empty{text-align:center;padding:30px;color:var(--n-827561,#827561)}
@media(max-width:600px){.student-inline-activity{padding:4px 12px 14px}.student-day-tabs{gap:5px}.student-day-tabs button{font-size:13px}.student-activity-button{min-height:73px;padding:12px 13px}.student-activity-icon{width:42px;height:42px}.day-overview-heading{padding:12px 14px 8px}.day-overview-tabs{padding:0 14px 10px}.day-overview-tabs>[data-overview-kind]{padding:8px 12px}.day-overview-scroll{padding:8px}.day-overview-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.day-overview-grid.is-sentences{grid-template-columns:1fr}.day-overview-item{padding:6px 8px;column-gap:6px}.student-inline-activity .question-number{display:none}}
@media(max-width:360px){.student-activity-button{--activity-gap:5px;padding-inline:10px}}

/* Keep the authenticated student home focused on the learning content. */
body[data-view="student"]:has(.student-home-view) .header{min-height:38px;padding:0 18px;gap:10px;flex-wrap:nowrap}
body[data-view="student"]:has(.student-home-view) .header .brand{gap:6px;margin-right:0}
body[data-view="student"]:has(.student-home-view) .header .brand-logo{width:22px;height:27px}
body[data-view="student"]:has(.student-home-view) .header .brand-name{font-size:14px;line-height:1.2;letter-spacing:-.5px}
body[data-view="student"]:has(.student-home-view) .header .brand-name small,
body[data-view="student"]:has(.student-home-view) .header .header-caption{display:none}
body[data-view="student"]:has(.student-home-view) main{padding-top:0}

/* Four compact columns keep the selected Day's activities distinct. */
.student-day-ranking{margin-top:26px;padding:22px 4px 4px;border-top:1px solid var(--home-line);color:var(--home-ink)}
.student-ranking-heading{display:flex;align-items:center;justify-content:space-between;gap:12px}
.student-ranking-class{display:block;color:var(--home-muted);font-size:11px;line-height:1.5;overflow-wrap:anywhere}
.student-ranking-heading h3{margin:2px 0 0;font-size:20px;line-height:1.4;letter-spacing:-.5px}
.student-ranking-own{margin:0;flex:0 0 auto;color:var(--home-muted);text-align:right;font-size:11px;line-height:1.5}
.student-ranking-own>strong{display:block;color:var(--n-a34c34,#a34c34);font-size:25px;line-height:1.3;font-variant-numeric:tabular-nums}
.student-ranking-own>strong small{color:var(--home-muted);font-size:12px;font-weight:500}
.student-ranking-rule{color:var(--home-muted);font-size:10px;line-height:1.6;margin:8px 0 16px;overflow-wrap:anywhere}
.student-activity-rankings{display:grid;grid-template-columns:repeat(var(--ranking-columns,4),minmax(0,1fr));align-items:start;gap:0;margin:0 -4px}
.student-activity-ranking{--ranking-tint:var(--i-eff5e9,#eff5e9);--ranking-accent:var(--i-627b4a,#627b4a);--ranking-row-soft:var(--i-f1f6ed,#f1f6ed);--ranking-row:var(--i-e4efdf,#e4efdf);--ranking-row-ink:var(--i-3e6241,#3e6241);min-width:0;padding:6px 7px 2px;border-top:2px solid var(--ranking-accent);border-radius:7px 7px 0 0;background:linear-gradient(var(--ranking-tint),transparent 130px)}
.student-activity-ranking+.student-activity-ranking{border-left:1px solid var(--i-e8dfd2,#e8dfd2)}
.student-activity-ranking.ranking-word-matching{--ranking-tint:var(--i-e9f6f1,#e9f6f1);--ranking-accent:var(--i-4f877a,#4f877a);--ranking-row-soft:var(--i-edf6f3,#edf6f3);--ranking-row:var(--i-d7eae4,#d7eae4);--ranking-row-ink:var(--i-285c4c,#285c4c)}
.student-activity-ranking.ranking-word-builder{--ranking-tint:var(--i-fff0e8,#fff0e8);--ranking-accent:var(--i-b57a56,#b57a56);--ranking-row-soft:var(--i-fff3ed,#fff3ed);--ranking-row:var(--i-f9e2d5,#f9e2d5);--ranking-row-ink:var(--i-85452e,#85452e)}
.student-activity-ranking.ranking-sentence-builder{--ranking-tint:var(--i-f2eefb,#f2eefb);--ranking-accent:var(--i-8d78ad,#8d78ad);--ranking-row-soft:var(--i-f4f0fa,#f4f0fa);--ranking-row:var(--i-e9e0f5,#e9e0f5);--ranking-row-ink:var(--i-654781,#654781)}
.student-activity-ranking>header{min-height:38px;text-align:center;padding-bottom:5px;border-bottom:1px solid var(--i-e9e2d6,#e9e2d6)}
.student-activity-ranking h4{margin:0;color:var(--ranking-accent);font-size:13px;line-height:1.45;font-weight:750;letter-spacing:-.4px}
.student-activity-ranking h4{white-space:nowrap}
.student-activity-ranking>header p{margin:3px 0 0;color:var(--home-muted);font-size:9px;line-height:1.4;white-space:nowrap;font-variant-numeric:tabular-nums}
.student-activity-ranks{list-style:none;margin:0;padding:5px 0 0}
.student-activity-rank{display:grid;grid-template-columns:22px fit-content(4em) minmax(max-content,1fr);gap:3px;align-items:center;min-width:0;min-height:39px;padding:7px 2px;border-bottom:1px solid var(--i-ece5d9,#ece5d9);border-radius:6px;background:var(--ranking-row-soft);color:var(--ranking-row-ink);font-size:11px;line-height:1.4}
.student-activity-rank.is-me{border-radius:6px;border-color:transparent;background:var(--ranking-row);color:var(--ranking-row-ink)}
.student-activity-rank-place{color:var(--i-8b7b66,#8b7b66);font-size:10px;font-weight:700;white-space:normal;text-align:center;font-variant-numeric:tabular-nums}
.student-activity-rank-place>span{white-space:nowrap}.student-activity-rank-place small{display:inline-block;font-size:8px;font-weight:500;margin-left:1px}
.student-activity-rank-place.is-medal{font-size:17px;line-height:1.2}
.student-activity-rank-name{min-width:0;font-size:11px;font-weight:600;overflow-wrap:anywhere;word-break:normal}
.student-activity-rank-score{font-size:11px;font-weight:750;white-space:nowrap;font-variant-numeric:tabular-nums;text-align:center;justify-self:center}
.student-activity-rank-empty{margin:16px 0;text-align:center;color:var(--home-muted);font-size:10px;line-height:1.5;overflow-wrap:anywhere}
.student-ranking-message{margin:13px 0 0;text-align:center;color:var(--home-muted);font-size:12px;line-height:1.6;overflow-wrap:anywhere}
.student-ranking-retry{display:block;min-height:40px;padding:8px 14px;margin:10px auto 0;border:1px solid var(--i-dbcbb7,#dbcbb7);border-radius:9px;background:var(--i-fffdf6,#fffdf6);color:var(--i-8a6147,#8a6147);font-size:12px}
.student-ranking-refresh-error{margin:12px 0 0;color:var(--home-muted);font-size:11px;line-height:1.6;text-align:center}
.student-ranking-refresh-error button{border:0;padding:4px;color:var(--i-8a6147,#8a6147);background:transparent;font-size:inherit;text-decoration:underline;text-underline-offset:3px}
@media(max-width:420px){.student-day-ranking{padding:18px 0 0;margin-top:23px}.student-ranking-heading h3{font-size:18px}.student-ranking-own>strong{font-size:24px}.student-ranking-rule{font-size:9px;margin-bottom:13px}.student-activity-rankings{margin:0}.student-activity-ranking{padding-inline:3px}.student-activity-ranking h4{font-size:clamp(9px,2.8vw,11px);letter-spacing:-.5px}.student-activity-rank{grid-template-columns:18px fit-content(4em) minmax(max-content,1fr);gap:1px;padding-inline:0}.student-activity-rank-place{font-size:9px}.student-activity-rank-place.is-medal{font-size:14px}.student-activity-rank-place small{font-size:6.5px;margin-left:.5px}.student-activity-rank-name{font-size:10.5px}.student-activity-rank-score{font-size:10px}}
@media(min-width:700px){.student-activity-ranking{padding-inline:14px}.student-activity-ranking h4{font-size:15px}.student-activity-rank{grid-template-columns:23px fit-content(4em) minmax(max-content,1fr);gap:7px;min-height:42px}.student-activity-rank-name,.student-activity-rank-score{font-size:13px}.student-activity-rank-place{font-size:11px}.student-activity-ranking>header p{font-size:10px}}

/* Landscape keeps the student/book/ranking beside an independently scrolling lesson. */
@media(orientation:landscape){
 body[data-view="student"]:has(.student-home-view .student-activities){height:100dvh;overflow:hidden}
 body[data-view="student"]:has(.student-home-view .student-activities) main,
 body[data-view="student"]:has(.student-home-view .student-activities) #schoolPanel,
 body[data-view="student"]:has(.student-home-view .student-activities) #schoolContent,
 body[data-view="student"]:has(.student-home-view .student-activities) #studentHome{width:100%;max-width:none;height:100dvh;min-height:0;margin:0;padding:0}
 body[data-view="student"]:has(.student-home-view .student-activities) .header{position:fixed;top:0;left:0;z-index:15;width:50%;height:38px;min-height:38px;padding:0 16px 0 max(16px,env(safe-area-inset-left,0px))}
 body[data-view="student"]:has(.student-home-view .student-activities) main>footer{display:none}
 .student-home-view:has(.student-activities){display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-template-rows:auto auto minmax(0,1fr) auto;max-width:none;height:100dvh;min-height:0;margin:0;overflow:hidden}
 .student-home-view:has(.student-activities)>.student-welcome{grid-column:1;grid-row:1;margin:38px 16px 0}
 .student-home-view:has(.student-activities)>.student-book-picker{grid-column:1;grid-row:2;margin:0 16px;padding:8px 12px 7px}
 .student-home-view:has(.student-activities)>.student-activities{grid-column:2;grid-row:1/5;height:100dvh;min-height:0;overflow-y:auto;overflow-x:hidden;overflow-anchor:none;overscroll-behavior-y:contain;scrollbar-gutter:stable;margin:0;padding:12px 16px 20px;border-left:1px solid var(--home-line)}
 /* Answer renders must not anchor to a later row or clamp the current view
    when feedback disappears. Keep one viewport of scroll room while open. */
 .student-home-view:has(.student-activities)>.student-activities:has(.student-inline-activity:not([hidden]),.student-inline-fold){padding-bottom:calc(100dvh + 20px)}
 .student-home-view:has(.student-activities)>.student-home-status{grid-column:1;grid-row:4;max-height:20dvh;overflow:auto;margin:0 16px 6px;font-size:11px}
 .student-home-view .student-day-tabs{gap:5px}
 .student-home-view .student-activity-button{--activity-gap:10px;--stamp-size:32px;padding:15px 12px;min-height:82px}
 .student-home-view .student-activity-icon{width:38px;height:42px}
 .student-home-view .student-activity-copy strong{font-size:16px}
 .student-home-view .student-activity-ranking{padding-inline:3px}
 .student-home-view .student-activity-ranking h4{font-size:clamp(9px,1.35vw,13px);letter-spacing:-.4px}
 .student-home-view .student-activity-ranking>header p{font-size:9px}
 .student-home-view .student-activity-rank{grid-template-columns:18px fit-content(4em) minmax(max-content,1fr);gap:1px;min-height:39px;padding-inline:0}
 .student-home-view .student-activity-rank-name,.student-home-view .student-activity-rank-score{font-size:11px}
 .student-home-view .student-activity-rank-place{font-size:9px}
 .student-home-view .student-activity-rank-place.is-medal{font-size:14px}
 body[data-view="student"]:has(.student-home-view .student-activities) #schoolNotice:not(:empty){position:fixed;left:max(12px,env(safe-area-inset-left,0px));right:calc(50% + 12px);bottom:6px;z-index:20;max-height:30dvh;overflow:auto}
 body[data-view="student"]:has(.student-home-view .student-activities) #speechFeedback:not([hidden]){position:fixed;left:calc(50% + 12px);right:max(12px,env(safe-area-inset-right,0px));bottom:6px;z-index:20;max-height:30dvh;overflow:auto}
}
@media(orientation:landscape) and (max-height:480px){
 .student-home-view:has(.student-activities)>.student-book-picker{padding-block:5px}
 .student-home-view .student-book-wheel-shell{--wheel-height:78px;--book-height:56px}
 .student-home-view .student-ranking-heading h3{font-size:18px}
 .student-home-view .student-ranking-own>strong{font-size:22px}
 .student-home-view .student-ranking-rule{margin:5px 0 9px;font-size:9px}
}
@media(orientation:landscape) and (max-width:900px){
 .student-home-view .student-activity-button{--activity-gap:7px;--stamp-size:29px;padding-inline:11px;gap:var(--activity-gap)}
 .student-home-view .student-activity-number{width:11px;font-size:10px}
 .student-home-view .student-activity-icon{width:32px!important;height:36px!important;border-radius:10px}
 .student-home-view .student-activity-icon svg{width:23px;height:23px}
 .student-home-view .student-activity-copy strong{font-size:14px;letter-spacing:-.5px}
 .student-home-view .student-activity-stamps{gap:10px}
 .student-home-view .student-stamp-number{width:10px;height:10px;font-size:7px;right:-1px;bottom:-1px}
 .student-home-view .student-activity-button>.student-activity-arrow{width:16px;height:16px}
}

.student-day-tabs{overflow-x:auto;grid-auto-columns:minmax(64px,1fr);scrollbar-width:thin}.student-day-tabs button{white-space:nowrap}

/* A class may show 1-5 activities; without any the list explains why. */
.student-activity-empty{margin:4px 0 0;padding:22px 16px;border:1px dashed var(--n-e2d6c4,#e2d6c4);border-radius:16px;background:var(--n-fffdf8,#fffdf8);color:var(--home-muted);font-size:13px;line-height:1.7;text-align:center}
.student-activity-rankings[style*="--ranking-columns:1"],.student-activity-rankings[style*="--ranking-columns:2"]{max-width:520px;margin-inline:auto}
/* An activity that could not open: the reason inside its row, with 다시 시도 (school.js showActivityFailure). */
.student-activity-failure{display:grid;justify-items:center;align-content:center;gap:14px;min-height:180px;padding:24px 16px;text-align:center}
.student-activity-failure p{margin:0;color:var(--i-9a4b2c,#9a4b2c);font-size:var(--act-ko,16px);font-weight:700;line-height:1.6;word-break:keep-all;overflow-wrap:anywhere}
.student-activity-failure button{min-width:140px;min-height:48px;font-size:var(--act-button,16px)}
/* A game screen still loading: a neutral block about a game card's height (the status text is for screen readers). */
.student-activity-loading.is-module{min-height:440px;margin-top:12px;padding:0;border:1px solid var(--line,var(--n-e7dfd1,#e7dfd1));border-radius:18px;background:var(--surface-2,var(--n-faf7f0,#faf7f0))}

/* A Day's boards being read keep their rows' place with quiet empty rows (2026-10-30). */
.student-activity-rank.is-placeholder{background:var(--ranking-row-soft);opacity:.55}
/* The row state chip in the count line (2026-11-05, owner's answers: "학습 완료 자리에 "도전 잠김" -> "도전 열림" -> 랭킹 도전
   한 번이라도 하면 "학습 완료" 한 번 상태가 바뀌면 쭉 유지"): 도전 잠김 (lock, quiet) → 도전 열림 (open lock, the accent) →
   학습 완료 (check, green) on a ranking row; 학습 완료 alone on the others. It sits after the count, which stays (it only
   shortens with an ellipsis on a narrow row), so nothing moves when the chip comes or changes. One 18 px chip (the line
   is 1.5em) of one width in every state (four syllables, one 12 px icon; min-width keeps it even if a font's syllables
   differ). Colours are the theme's --t-* tokens (every 화면 색, 밤 included); 학습 완료 is ink on the soft green with a green
   check (the old green-on-green mark was 4.13:1). */
.student-activity-line>.student-activity-count{flex:0 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.student-activity-state{display:inline-flex;align-items:center;justify-content:center;gap:3px;flex:0 0 auto;box-sizing:border-box;min-width:calc(4em + 29px);padding:1px 8px 1px 6px;border-radius:10px;font-size:11px;line-height:16px;font-weight:700;white-space:nowrap}
.student-activity-state[hidden]{display:none}
.student-activity-state.is-locked{background:var(--t-surface);color:var(--t-muted);box-shadow:inset 0 0 0 1px var(--t-line)}
.student-activity-state.is-open{background:var(--t-accent-soft);color:var(--t-primary)}
.student-activity-state.is-done{background:var(--t-success-soft);color:var(--t-ink)}
.student-home-view .student-activity-state.is-done svg{color:var(--t-success)}
.student-home-view .student-activity-state svg{width:12px;height:12px;flex:0 0 auto;stroke-width:2.6}
.student-home-view .student-activity-state:is(.is-locked,.is-open) svg{stroke-width:2.2}
/* A narrow count line (review 2026-11-05: on a 랭킹 도전 row at 320 px the line is 91 px and '12개 문제' got 9 px): the line
   is a container; under 140 px the chip drops its icon, under 118 px it shows its short label (잠김 / 열림 / 완료; screen
   readers still hear the whole state). Each step keeps one width for the three states, so a two-digit count fits at 320. */
.student-activity-copy>.student-activity-line{container:activity-line/inline-size}
.student-activity-state-short{display:none}
@container activity-line (max-width:139.98px){.student-home-view .student-activity-state svg{display:none}.student-activity-state{min-width:calc(4em + 14px);padding:1px 7px}}
@container activity-line (max-width:117.98px){.student-activity-state{min-width:calc(2em + 12px);padding:1px 6px}.student-activity-state-long{display:none}.student-activity-state-short{display:inline}}
/* The Day's line under the Day tools: 학습 완료 n/m (rows with material on this Day), one 18px line, kept while unknown. */
.student-day-progress{min-height:18px;margin:-6px 0 12px;font-size:12px;line-height:18px}
.student-day-progress>span{display:block;color:var(--n-8b6146,#8b6146);font-weight:700}
.student-day-progress[data-done="all"]>span{color:var(--i-2a8058,#2a8058)}
/* 화면 색 (2026-10-31): in the four other colour sets the 내 학습 focus ring is the set's --t-focus (the shared coral ring
   was below 3:1 on the page); 지금 keeps it. */
:where(:root[data-theme]:not([data-theme="classic"])) .student-home-view button:focus-visible,:where(:root[data-theme]:not([data-theme="classic"])) .student-book-wheel:focus-visible{outline-color:var(--t-focus)}
