/* v3.5: visual and new component styles. Pre-v3.5 sources are retained in design-backup. */
:root{--paper:#fffefa;--bg:#f4f3ef;--text:#252624;--muted:#85857f;--line:#e7e4dd;--orange:#d76122;--orangebg:#fff1e4;--green:#254f3d;--ease:cubic-bezier(.22,.72,.22,1)}
body,body *{font-family:'Noto Sans JP','Noto Sans KR',sans-serif!important}
body{font-size:13px}.app{max-width:960px;box-shadow:none}button,a,input,textarea,select{-webkit-tap-highlight-color:transparent}button{transition:background-color 160ms var(--ease),color 160ms var(--ease),border-color 160ms var(--ease),opacity 100ms linear}button:active{opacity:.68}button:disabled{opacity:.4;cursor:default}
header,.phone header,.teacher header{height:auto;min-height:82px;padding:16px 24px;gap:12px;background-color:var(--green);color:#fff;border:0;background-image:radial-gradient(ellipse at 60% 15%,transparent 48%,#ffffff05 49%,#ffffff05 53%,transparent 54%),radial-gradient(ellipse at 20% 80%,transparent 48%,#ffffff05 49%,#ffffff05 54%,transparent 55%);background-size:92px 68px,115px 95px;position:relative;z-index:40}
header .identity{flex:1;min-width:0;gap:6px}header .brand{gap:10px;min-width:70px}header .avatar,.teacher header .avatar{width:40px;height:40px;flex:0 0 40px;background:#fff5df;border-radius:50%}header .title-name{padding:0;background:none;color:white;font-size:14px;font-weight:700;line-height:1.5}header #brandTitle{gap:3px 8px;align-items:center}header .streak-badge{color:#fff3bf;font-size:11px;margin:0}header .iconbtn{color:#f1f2e9;width:30px;height:32px;flex-shrink:0}header .iconbtn:hover{background:#ffffff12;color:white}.header-right{gap:4px;flex-shrink:0}.theme{width:55px;height:30px;background:#ffffff16;border-color:#ffffff25;padding:2px}.theme span{width:23px;height:24px}.theme .sun{background:#fff8e8;color:#d08b12}.dark .theme .moon{background:#f9f5eb;color:#254f3d}main,.phone main{padding:24px}.toolbar{gap:10px;display:flex;flex-wrap:wrap}.lesson-picker{flex:1 1 100%;width:100%;max-width:none}.lesson-button{min-height:44px;padding:10px 12px;border:1px solid var(--line);border-radius:10px;background:var(--paper);font-size:13px;font-weight:600;gap:8px}.lesson-button>span:first-child{text-align:left}.toolbar .learning-buttons{display:grid;width:100%;grid-template-columns:1fr 1fr;gap:10px;margin:0}.learning-buttons .studybtn{min-height:44px;padding:10px;font-size:13px;border-radius:10px}.primary{background:var(--orange);border:1px solid transparent}.soft{background:#eeece6;color:var(--text)}.outline{background:var(--paper);border:1px solid var(--line)}.primary,.soft,.outline{border-radius:10px;box-shadow:none}.teacher .toolbar{flex-wrap:wrap}.teacher .toolbar .learning-buttons{display:flex;width:auto;flex:1}.teacher .toolbar .studybtn[hidden]{display:none}.teacher .mission-button{width:100%;min-height:40px}.teacher-add{min-height:40px;flex:1}.teacher .toolbar .lesson-picker{flex-basis:100%}
.searchbox{height:44px;border-radius:10px;margin:14px 0}.searchbox input{font-size:13px}.filter-line{margin:0 0 16px;gap:8px;flex-wrap:wrap}.filter-line .filters{gap:6px;flex:1;min-width:210px}.filter-line .filter{height:34px;min-width:34px;width:auto;padding:0 10px;font-size:12px;border-radius:9px;white-space:nowrap}.filter-line .filter svg{width:18px;height:18px}.filter.active.all{background:var(--green);border-color:var(--green);color:#fff}.passage-button,.filter-line .kana-compact{margin:0;min-width:34px;height:34px;min-height:34px;font-size:12px;padding:0 8px;border:1px solid var(--line);border-radius:9px}.statline{padding:0 0 16px!important;gap:8px;font-size:11px;flex-wrap:wrap;min-height:40px}.statline strong{font-size:12px}.statline .export-button{font-size:11px;margin-left:auto}.add-compact{width:30px;height:30px;border-radius:9px}.tablehead{padding:10px 8px;border-radius:8px;font-size:11px}.tablehead,.wordrow{grid-template-columns:minmax(0,1fr) minmax(0,.95fr) 26px;gap:12px}.wordrow{padding:18px 8px;min-height:78px}.wordrow .wordcell,.wordrow .meaning{min-width:0;text-align:left}.wordrow .jp{letter-spacing:0}.wordrow .meaning{font-size:var(--meaning-size,13px)}.wordrow .status,.wordrow .badge{width:24px;height:24px}.wordrow .badge svg{width:16px;height:16px}.tablehead span:last-child{font-size:0}.wordrow.own{background:#f0f5ef}.word-swipe>.wordrow{background:var(--paper)}
.student-folder-buttons,.library-folders{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:12px}.student-folder-buttons button,.library-folders button{min-height:30px;padding:5px 12px;border:1px solid var(--line);border-radius:18px;font-size:11px}.student-folder-buttons .selected,.library-folders .active{background:var(--green);color:#fff}.teacher .studentstrip{gap:6px}.teacher .studentchip{min-height:32px;padding:4px;font-size:12px;border-radius:8px}.managebox{gap:12px}.manageactions button{min-height:34px}.management-links{gap:10px;flex-wrap:wrap}.management-links button{font-size:11px}
.dialog{border-radius:18px!important;border:1px solid var(--line);box-shadow:0 20px 60px #141c1820;max-height:calc(100dvh - 30px);width:min(640px,calc(100vw - 24px));padding:0!important;overflow:hidden}.dialogtop{position:relative!important;top:auto!important;margin:0!important;padding:10px 18px!important;min-height:48px!important;background:var(--paper)!important;border-bottom:1px solid var(--line);transform:none!important;z-index:5}.dialogtop h2{font-size:16px!important;line-height:1.5;min-width:0}.dialogtop>.iconbtn{width:32px;height:32px;flex:0 0 32px;margin-left:auto}.dialog #modalBody{padding:18px;overflow:auto;max-height:calc(100dvh - 100px);overscroll-behavior:contain}.dialog .modal-notice:not([hidden]){margin:10px 18px 0;flex-shrink:0}.dialog:has(.modal-notice:not([hidden])) #modalBody{max-height:calc(100dvh - 175px)}.no-title .dialogtop{min-height:40px!important;padding:4px 12px!important}.dialogbottom{gap:8px;flex-wrap:wrap;margin-top:20px}.dialogbottom button{min-height:40px}.field{font-size:12px;margin-top:14px}.field input,.field select{min-height:40px;border-radius:9px}.field textarea{border-radius:9px}.dialog .thin-input{height:40px;min-height:40px}.work-date-title{grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr);gap:10px}.work-footer{bottom:0;padding:12px 0 0;background:var(--paper);z-index:2}.work-students>div{gap:8px}.import-actions{gap:8px}.photo-error{color:var(--red);padding:16px;background:var(--redbg);border-radius:10px}
.floating-menu,.notification-dropdown,.deck-popover,.custom-select-menu{border-radius:12px;box-shadow:0 10px 28px #16251a1a;border:1px solid var(--line);background:var(--paper)}.custom-select-menu{min-width:180px!important;max-width:calc(100vw - 24px)!important}.custom-select-menu button,.custom-select-menu [role=option],.select-options button{white-space:normal!important;line-height:1.5;word-break:keep-all;overflow-wrap:anywhere}.floating-menu[hidden],.custom-select-menu[hidden]{display:none!important}.word-suggestions{max-height:260px;overflow:auto;z-index:15}.word-suggestions button{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:4px 10px;font-size:12px}.word-suggestions small{grid-column:1/-1;white-space:normal;text-align:left}.dictionary-loading{display:block;padding:12px}
.paste-tools{flex-wrap:wrap;gap:6px;position:sticky;top:0;background:var(--paper);z-index:3;padding-bottom:8px}.paste-tools button{white-space:nowrap;min-height:32px;padding:5px 9px}.paste-grid{max-height:46dvh}.paste-grid table{width:max-content;min-width:100%;user-select:none}.paste-grid th{position:relative}.paste-grid textarea{height:44px;min-height:44px;font-size:13px;resize:vertical;white-space:pre-wrap}.column-resizer{position:absolute;right:0;top:0;bottom:0;width:10px;cursor:col-resize;touch-action:none}.column-resizer:hover{background:var(--bluebg)}.row-number{padding:4px;width:100%;min-height:28px}.grid-expanded.dialog{inset:0;margin:auto;width:calc(100vw - 16px);max-width:none;height:calc(100dvh - 16px);max-height:none}.grid-expanded #modalBody{height:calc(100dvh - 70px);max-height:none!important}.grid-expanded .paste-grid{height:64dvh;max-height:64dvh}.grid-expanded .paste-grid textarea{height:52px}.paste-grid .cell-selected textarea{background:var(--bluebg)}
.library-tools{display:flex;gap:8px;flex-wrap:wrap}.library-tools input{width:100%;margin-bottom:4px}.library-folders{margin-top:16px}.library-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:14px 0}.library-actions>span{margin-right:auto;font-size:12px}.library-actions button{font-size:11px;padding:6px 10px;min-height:34px}.library-row{display:grid;grid-template-columns:20px minmax(0,1fr) minmax(0,1fr);gap:12px;align-items:center;padding:16px 0;border-bottom:1px solid var(--line)}.library-row input{height:16px;width:16px}.library-word{text-align:left;font-size:16px}.library-word rt{font-size:11px;color:var(--muted)}.library-word small{display:block;font-size:10px;color:var(--muted);margin-top:4px}.usage-student{display:grid;grid-template-columns:1fr 20px;text-align:left;gap:4px;padding:16px 4px;border-bottom:1px solid var(--line);width:100%}.usage-student strong{font-size:14px}.usage-student span{grid-column:1;font-size:12px;color:var(--muted)}.usage-student i{grid-column:2;grid-row:1/3;align-self:center;font-size:24px;color:var(--muted);font-style:normal}.report-controls{display:flex;gap:8px;align-items:end;flex-wrap:wrap}.report-controls label{flex:1}.report-time{margin:20px 0;font-weight:700;font-size:17px}.report-metrics{display:grid;grid-template-columns:1fr 1fr;gap:8px}.report-metrics>div{display:flex;justify-content:space-between;gap:8px;padding:10px;background:var(--bg);border-radius:8px}.report-metrics dt{font-size:11px;color:var(--muted)}.report-metrics dd{margin:0;font-size:12px}.report-days button{display:grid;grid-template-columns:1fr 1fr;gap:4px;width:100%;padding:12px 0;border-bottom:1px solid var(--line);text-align:left;font-size:12px}.report-days small{grid-column:1/-1;color:var(--muted)}.report-events p{display:flex;gap:16px;padding:8px 0;font-size:12px}.report-events time{color:var(--muted)}
/* Learning controls have fixed tracks. Only opacity animates; text never flies into position. */
.study{background:var(--paper);padding:0!important;overflow:hidden!important}.study .studyhead{left:20px;right:20px;top:max(16px,env(safe-area-inset-top));gap:8px;height:36px;flex-wrap:nowrap}.studyhead .study-brand{font-size:12px;gap:6px}.studyhead .study-brand img{width:24px;height:24px}.studyhead .shuffle-top{font-size:10px;padding:5px 8px;min-height:30px;white-space:nowrap}.studyhead .loop-button{width:30px;min-width:30px;height:30px;min-height:30px;font-size:25px}.studyhead .furigana-toggle{font-size:10px;padding:5px 7px;min-height:30px}.study .studyoptions{top:74px;left:20px;right:20px;width:auto;max-width:560px;margin:auto;display:flex;flex-wrap:wrap;gap:8px;justify-content:center;align-items:center;padding:0}.study-scope{width:auto}.study-scope select{height:34px;min-width:86px}.quiz-direction-buttons{display:flex;gap:3px;background:var(--bg);padding:3px;border:1px solid var(--line);border-radius:10px}.quiz-direction-buttons button{min-height:30px;padding:5px 10px;white-space:nowrap;font-size:11px;border-radius:7px;color:var(--muted)}.quiz-direction-buttons .active{background:var(--orangebg);color:var(--orange);font-weight:700}.study .studycontent{left:20px;right:20px;top:36%;transform:translateY(-50%);max-height:38dvh;overflow:visible;animation:none!important;transition:none!important}.study.memorize-layout .studycontent{top:38%}.study .study-count-pill{font-size:10px;margin-bottom:18px}.quiz-wordgroup{width:100%;display:grid;grid-template-columns:36px minmax(0,1fr) 36px;gap:6px;align-items:center;pointer-events:auto;max-width:680px}.study .quiz-wordgroup .study-edge{position:static;display:flex!important;height:52px;width:36px;min-width:36px;font-size:32px;opacity:.25;background:none;padding:0;z-index:1;transform:none}.study .quiz-wordgroup .prompt{min-width:0;overflow-wrap:anywhere;font-size:var(--fit-size,48px);pointer-events:none}.study .korean-prompt{font-size:min(var(--fit-size,48px),32px)!important}.study .learn-prompt{font-size:var(--fit-size,48px);overflow-wrap:anywhere;max-height:20dvh;overflow:auto;pointer-events:auto}.study .learn-meaning{font-size:20px;margin-top:10px}.study .examples{max-height:12dvh;overflow:auto;pointer-events:auto}.study .example{font-size:13px;margin:8px 0}.study .quiz-answer-zone{top:calc(36% + 100px)!important;left:20px!important;right:20px!important;bottom:0;min-height:0!important;padding-top:8px!important;transform:none!important;animation:none!important;transition:none!important}.study .quiz-answer-zone .showanswer{height:100%;padding-top:16px!important;display:flex;align-items:flex-start;justify-content:center;font-size:16px}.study .revealed-answer{padding:16px 0;animation:none!important;transition:none!important}.study .answer .reading{font-size:18px;margin-bottom:6px}.study .answer .translation{font-size:23px}.study .answer .jpanswer{font-size:32px}.study .studybottom{top:68%;left:20px;right:20px;width:auto;max-width:600px;transform:translateY(-50%);margin:auto}.study .statusactions{width:100%;display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:12px}.study .statusactions button{width:100%;min-width:0;min-height:80px;border-radius:12px;font-size:12px}.study .statusactions .chosen{box-shadow:inset 0 0 0 2px currentColor}.study .study-complete{top:50%!important;max-height:75dvh!important;overflow:auto;pointer-events:auto!important}.mission-today{padding:8px 0}.study .mission-today .dialogbottom{justify-content:center}.study .mission-word-list{width:100%}.study .mission-word-list>div{padding:12px}.study .mission-word-list strong{font-size:12px}.study-brand,.prompt,.reading,.translation{transition:none!important;animation:none!important}
.dark{--paper:#242720;--bg:#1d201b;--text:#f3f0e7;--muted:#b0b1a7;--line:#3b4036;--orange:#f1a06b;--orangebg:#493324;--green:#254f3d}.dark .primary{background:#b95521;color:#fff}.dark .soft{background:#383c32;color:var(--text)}.dark .wordrow.own{background:#2b352a}.dark .word-swipe>.wordrow{background:var(--paper)}.dark .wordcell,.dark .meaning,.dark .word-detail,.dark .prompt,.dark .answer,.dark .library-word{color:var(--text)}
@media(max-width:620px){header,.phone header,.teacher header{padding:14px 14px;gap:5px;min-height:76px}header .identity{gap:3px}header .brand{gap:7px}header .avatar{width:36px;height:36px;flex-basis:36px}header .iconbtn{width:26px}.header-right{gap:2px}.theme{width:49px;height:28px}.theme span{width:20px;height:22px}header .title-name{font-size:13px}header .streak-badge{font-size:10px}main,.phone main{padding:20px 16px}.wordrow{gap:9px;padding:16px 6px}.tablehead{gap:9px;padding:9px 6px}.work-date-title{grid-template-columns:minmax(0,1fr);gap:0}.dialog input:not([type=checkbox]):not([type=radio]),.dialog select,.dialog textarea{font-size:16px}.study .studyhead{left:12px;right:12px;gap:5px}.studyhead .study-brand{font-size:11px}.studyhead .study-brand img{width:21px;height:21px}.studyhead .shuffle-top{font-size:9px;padding:5px 6px}.studyhead .furigana-toggle{font-size:9px;padding:5px}.studyhead .loop-button{width:26px;min-width:26px}.study .studyoptions{left:12px;right:12px}.quiz-direction-buttons button{font-size:10px;padding:5px 8px}.study .studycontent{left:14px;right:14px}.study .learn-meaning{font-size:18px}.study .studybottom{left:16px;right:16px}.study .learn-prompt{font-size:min(var(--fit-size),48px)}.filter-line .filters{min-width:200px}.filter-line{gap:5px}.filter-line .filter{padding:0 8px}.passage-button,.filter-line .kana-compact{padding:0 6px;font-size:11px}.report-days button{grid-template-columns:1fr}.report-days small{grid-column:auto}}
@media(max-width:360px){.studyhead .study-brand img{display:none}header .theme{display:none}.quiz-direction-buttons button{padding:5px 6px}.study .study-scope select{min-width:76px}.tablehead,.wordrow{grid-template-columns:minmax(0,1fr) minmax(0,.9fr) 22px;gap:6px}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}
.custom-select-menu{position:fixed!important;margin:0;padding:6px;inset:auto;overflow:auto;overscroll-behavior:contain;z-index:1000}.custom-select-menu button{display:block;width:100%;text-align:left;border-radius:8px;padding:9px 12px;font-size:12px;min-height:36px}.custom-select-menu button.selected{background:var(--orangebg);color:var(--orange)}.custom-select-menu::backdrop{background:transparent}
.tablehead>span:first-child,.tablehead>span:nth-child(2){text-align:left!important}.wordrow .meaning{text-align:left!important}.wordrow .jp{text-align:left!important}.account-card:has(.loading-shiba)::after{content:none!important;display:none!important}
/* Native discrete transitions keep layout/state unchanged while dialogs fade out. */
@supports (transition-behavior:allow-discrete){.dialog{opacity:0;transition:opacity 160ms var(--ease),display 160ms allow-discrete,overlay 160ms allow-discrete}.dialog[open]{opacity:1}.dialog::backdrop{background-color:#16251a55;transition:background-color 160ms var(--ease),display 160ms allow-discrete,overlay 160ms allow-discrete}@starting-style{.dialog[open]{opacity:0}.dialog[open]::backdrop{background-color:transparent}}}
.app>header{background-color:#254f3d;padding:16px 24px;gap:10px;min-height:82px}.app>header::before{opacity:.075}.app>header #brandTitle{display:flex;align-items:center;gap:3px 8px;flex-wrap:wrap}.app>header .title-name{background:transparent;padding:0;font-size:14px}.app>header .theme{width:55px;height:30px;background:#f8f5ef}.app>header .avatar{flex-basis:40px;width:40px;height:40px}
@media(max-width:620px){.app>header{padding:14px;min-height:76px;gap:5px}.app>header .title-name{font-size:13px}.app>header .avatar{width:36px;height:36px;flex-basis:36px}.app>header .theme{width:49px;height:28px}}
.dialog[open],.dialog[open]::backdrop,.notification-dropdown:not([hidden]),.deck-popover:not([hidden]),.floating-menu:not([hidden]),.passage-word-popover:not([hidden]){animation:none!important}
.study .quiz-wordgroup .prompt{max-height:24dvh;overflow:auto;pointer-events:auto;scrollbar-width:none}.study .quiz-wordgroup .prompt::-webkit-scrollbar{display:none}.study .learn-meaning{max-height:12dvh;overflow:auto;pointer-events:auto}.study .answer .reading,.study .answer .translation{overflow-wrap:anywhere;max-width:100%}.word-suggestions button small{line-height:1.5}

/* v3.6 teacher workflow */
.student-folder-buttons,.student-email,.student .teacher-tools{display:none!important}
.studentstrip{gap:5px!important}.studentstrip .studentchip{font-size:12px!important;padding:7px 9px!important;min-height:34px!important;min-width:0!important}
.teacher .summary .add,.teacher .summary .add-btn{display:none!important}
#composeForm .field{margin-bottom:14px}#composeForm input,#composeForm select{min-height:42px;padding:10px 12px;line-height:1.4}
#composeForm .work-students label{padding:7px 10px;min-height:32px;font-size:12px;cursor:pointer}
#composeForm .work-students input,#composeNotify{position:absolute;opacity:0;width:1px;height:1px}
#composeForm .work-students label:has(:checked){background:#fce5cf;color:#8d3c0c;border-color:#ca631e}
#composeForm .notify-toggle{width:42px;min-height:38px;padding:6px;display:inline-flex;justify-content:center;background:transparent;cursor:pointer}
#composeForm .notify-toggle:has(:checked){background:#fce5cf;color:#a64b13;box-shadow:inset 0 0 0 2px #ca631e}
.paste-tools[hidden],.work-queue-button[hidden]{display:none!important}
#pasteGrid{width:100%;overflow-x:hidden}#pasteGrid table{table-layout:fixed;width:100%!important;min-width:0!important}
#pasteGrid th,#pasteGrid td{min-width:0!important;padding:2px!important}#pasteGrid textarea{width:100%!important;min-width:0!important;font-size:12px!important;min-height:60px!important;padding:5px!important;overflow-wrap:anywhere;box-sizing:border-box}
#pasteGrid th{font-size:11px}#pasteGrid .row-number{padding:2px;font-size:10px;min-width:0}
.custom-select-menu button{color:var(--text);white-space:nowrap;font-size:13px}.custom-select-menu .duplicate-option{color:#ba3f40;background:#fde7e5}
body.dark .custom-select-menu button, [data-theme="dark"] .custom-select-menu button{color:#f4f0e9}
select{appearance:none;background-image:none;padding-right:28px!important}select{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8'%3E%3Cpath d='m1 1 5 5 5-5' fill='none' stroke='%23888' stroke-width='2'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 12px center}
.study:has(.quiz-answer-zone) .studycontent{top:44%!important}.study .quiz-answer-zone{top:65%!important;height:25%!important;bottom:auto!important}
.teacher #addCompact{display:none!important}
.dark .custom-select-menu{background:var(--paper);color:var(--text)}.dark .custom-select-menu button{color:var(--text)}.dark .custom-select-menu .duplicate-option{background:#4b2929;color:#ffb9b9}
