@charset "UTF-8";
:root{font-family:"Pretendard","Noto Sans KR","Malgun Gothic",sans-serif;color:#342f48;background:#f6f4f7;font-synthesis:none;--ink:#342f48;--muted:#746d80;--plum:#765378;--line:#e3dfe7;--paper:#fffcf4;--video:#577bac;--cards:#967234;--theory:#7961a4;--problems:#387d72}*{box-sizing:border-box}body{margin:0}button,input,textarea,select{font:inherit}button,a,input,textarea,select{touch-action:manipulation}button,a{ -webkit-tap-highlight-color:transparent}button,.button{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:42px;padding:10px 16px;border:1px solid var(--line);border-radius:7px;background:white;color:var(--ink);font-size:14px;font-weight:600;text-decoration:none;cursor:pointer}button:hover,.button:hover{background:#f3eff5;border-color:#c6b6ca}button:disabled{opacity:.4;cursor:not-allowed}button.primary,.button.primary{background:var(--plum);border-color:var(--plum);color:white}button.primary:hover,.button.primary:hover{background:#654568}a{color:inherit}button:focus-visible,a:focus-visible,input:focus-visible,textarea:focus-visible,select:focus-visible,summary:focus-visible{outline:3px solid #b79bc6;outline-offset:3px}h1,h2,h3,p{margin-top:0}h1{letter-spacing:-.055em}p{line-height:1.8}small,.muted{color:var(--muted)}.eyebrow{font-size:11px;font-weight:750;letter-spacing:.18em;color:var(--plum);text-transform:uppercase}.brand{display:inline-flex;align-items:center;gap:10px;text-decoration:none;font-weight:800;letter-spacing:-.05em;font-size:22px}.brand-mark{display:grid;place-items:center;background:#d4c5dd;color:#65446d;width:33px;height:38px;border-radius:3px 9px 9px 3px;border-left:4px solid #8e719c;box-shadow:2px 2px 0 #c0b8d0;font-size:19px}.skip{position:absolute;left:12px;top:-60px;z-index:99}.skip:focus{top:12px}.public{background:#f9f7f3}.public-header{max-width:1200px;margin:auto;padding:26px 28px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid #ded8df;gap:24px}.public-header nav{display:flex;align-items:center;gap:28px;font-size:14px}.public-header nav>a:not(.button){text-decoration:none;color:#685c70}.public-main{max-width:1200px;margin:auto;padding:0 28px}.hero{display:grid;grid-template-columns:1.05fr 1fr;align-items:center;gap:72px;padding:72px 0 64px}.hero h1{font-size:clamp(38px,4.1vw,59px);line-height:1.35;font-weight:650;margin:25px 0}.hero h1 em{font-style:normal;color:var(--plum)}.hero-lead{font-size:16px;color:#766b7a;max-width:410px}.hero-copy>.eyebrow:before{content:"";display:inline-block;width:28px;height:1px;background:var(--plum);vertical-align:middle;margin-right:12px}.hero-actions{display:flex;gap:12px;margin-top:30px}.hero-actions .button{min-height:49px}.quiet-note{font-size:12px;margin-top:17px;color:#857b89}.desk-preview{position:relative;min-height:390px;display:grid;place-items:center;background:#e9e6f0 url('/pwa/assets/workshop/desk-painted-scene.png') center 45%/cover;border-radius:90px 90px 8px 8px}.display-notebook{position:relative;width:72%;padding:35px 30px 28px 38px;background:var(--paper);border:9px solid #b5a1c9;border-left:19px solid #a48eb8;border-radius:8px 14px 14px 8px;box-shadow:14px 18px 0 #8b91b32e;transform:rotate(-5deg)}.display-notebook:before{content:"";position:absolute;left:9px;top:20px;bottom:20px;width:2px;border-left:2px dotted #c7b5d7}.display-notebook h2{font-size:24px;line-height:1.65;margin:16px 0}.display-notebook p{font-size:12px;color:#766981}.notebook-line{border-bottom:1px solid #e6dfd8;padding:10px 0;font-size:12px}.notebook-line span{color:#967cab;margin-right:12px}.bookmark{position:absolute;bottom:-32px;right:28px;background:#775375;color:#fff;font-size:11px;padding:13px 13px 21px;clip-path:polygon(0 0,100% 0,100% 100%,50% 86%,0 100%)}.desk-caption{position:absolute;bottom:17px;right:20px;font-size:10px;letter-spacing:.12em;color:#75677c}.install-section{padding:36px 0 54px;border-top:1px solid #ded8df;display:grid;grid-template-columns:.75fr 1.4fr;gap:72px}.install-section h2{font-size:27px;letter-spacing:-.05em;margin-top:15px}.install-section p{font-size:14px;color:#756a7e}.app-option{display:flex;align-items:center;gap:18px;border-bottom:1px solid #ded8df;padding:20px 0}.app-option img{width:53px;height:53px;border-radius:12px}.app-option h3{font-size:17px;margin:0 0 6px}.app-option p{margin:0;font-size:12px}.app-option .button{margin-left:auto;white-space:nowrap}.install-guide{margin-top:20px;font-size:13px;color:#756a7e}.install-guide summary{cursor:pointer;font-weight:600;padding:8px 0}.install-guide li{line-height:1.9;margin:7px 0}.footer{max-width:1144px;margin:0 auto;padding:24px 0 32px;border-top:1px solid #ded8df;display:flex;justify-content:space-between;color:#84798b;font-size:11px;gap:20px}.about{min-height:60vh;max-width:720px;padding:90px 0}.about h1{font-size:44px;line-height:1.4}.about p{color:var(--muted)}
/* The editing surface is a quiet, dense workbench. */
.admin-header{height:70px;padding:0 32px;display:flex;align-items:center;justify-content:space-between;background:white;border-bottom:1px solid var(--line)}.admin-header .brand{font-size:19px}.header-links{display:flex;gap:20px;align-items:center;font-size:12px;color:var(--muted)}.workspace-label{font-size:11px;color:var(--muted);border-left:1px solid var(--line);padding-left:20px;letter-spacing:.06em}.admin-shell{max-width:1420px;margin:auto;padding:30px 38px 60px}.context-bar{display:flex;align-items:center;gap:15px;margin-bottom:31px}.grade-label{display:block;position:relative}.grade-label select{min-height:47px;font-size:16px;font-weight:750;color:var(--ink);background:white;border:1px solid #cfc4d6;border-radius:8px;padding:10px 48px 10px 16px}.context-bar .crumb{color:#908898;font-size:13px}.context-bar .spacer{flex:1}.context-bar a{font-size:12px}.page-title{display:flex;align-items:flex-end;justify-content:space-between;gap:20px;margin-bottom:28px}.page-title h1{font-size:29px;margin:8px 0}.page-title p{font-size:13px;color:var(--muted);margin:0}.unit-nav{display:flex;align-items:stretch;border-bottom:1px solid #dcd5e1;gap:8px;margin-bottom:27px}.unit-tabs{display:flex;overflow:auto;flex:1;scrollbar-width:thin}.unit-tabs button{background:transparent;border:0;border-bottom:3px solid transparent;border-radius:0;white-space:nowrap;min-height:50px;padding:12px 17px;color:var(--muted);font-size:13px}.unit-tabs button[aria-selected=true]{color:var(--plum);border-bottom-color:var(--plum);font-weight:800}.unit-tabs .count{margin-left:7px;font-size:10px}.unit-nav>button{align-self:center;min-width:40px;white-space:nowrap;padding:8px 10px;font-size:12px}.list-toolbar{display:flex;align-items:center;gap:12px;margin-bottom:17px;flex-wrap:wrap}.list-toolbar h2{font-size:17px;letter-spacing:-.035em;margin:0}.list-toolbar .total{font-size:12px;color:var(--muted)}.search-box{margin-left:auto}.search-box input{width:230px;min-height:38px;padding:9px 12px;border:1px solid var(--line);border-radius:6px;font-size:12px;background:white}.filter-select{min-height:38px;border:1px solid var(--line);border-radius:6px;padding:7px;font-size:12px;color:var(--muted);background:white}.icon-button{min-height:34px;min-width:34px;padding:6px 9px;font-size:13px}.list-head,.routine-row{display:grid;grid-template-columns:50px minmax(210px,1fr) 360px 170px;align-items:center;gap:16px}.list-head{padding:12px 20px;color:#8b8293;font-size:11px}.routine-list{background:white;border:1px solid var(--line);border-radius:9px;overflow:hidden}.routine-row{padding:23px 20px;border-bottom:1px solid #ebe7ee;min-height:100px}.routine-row:last-child{border-bottom:0}.routine-number{font-variant-numeric:tabular-nums;font-size:13px;color:#a397af}.routine-title{font-size:15px;font-weight:750;line-height:1.5;margin-bottom:6px;overflow-wrap:anywhere}.routine-objective{font-size:12px;color:var(--muted);line-height:1.6;overflow-wrap:anywhere}.routine-checks{display:grid;grid-template-columns:repeat(4,1fr);gap:6px}.status-mark{font-size:10px;display:flex;flex-direction:column;align-items:center;gap:8px;color:#9c95a3;white-space:nowrap}.status-mark i{display:grid;place-items:center;width:22px;height:22px;background:#f0edf2;border:1px solid #e3dee7;border-radius:50%;font-style:normal;font-size:12px;color:#b4acbb}.status-mark.present{color:var(--stage)}.status-mark.present i{background:color-mix(in srgb,var(--stage) 12%,white);border-color:color-mix(in srgb,var(--stage) 30%,white);color:var(--stage)}.video{--stage:var(--video)}.cards{--stage:var(--cards)}.theory{--stage:var(--theory)}.problems{--stage:var(--problems)}.row-actions{display:flex;justify-content:flex-end;gap:5px}.row-actions .edit{color:var(--plum);background:#f8f4fa;border-color:#e9deef;min-height:35px;padding:7px 12px;font-size:12px}.row-actions .reorder{display:flex;flex-direction:column}.reorder button{min-height:22px;padding:0 7px;font-size:10px;border:0}.list-foot{display:flex;justify-content:space-between;gap:20px;margin-top:16px;color:#908599;font-size:11px;line-height:1.8}.empty-state{padding:65px 20px;text-align:center;background:white}.empty-state .empty-symbol{margin:0 auto 19px;width:47px;height:57px;border:1px solid #d4c6df;border-left:5px solid #b8a2c9;background:#fcf9ff;border-radius:4px;display:grid;place-items:center;color:#a18aaf;font-size:24px}.empty-state h3{font-size:17px}.empty-state p{font-size:13px;color:var(--muted);margin-bottom:24px}.danger{color:#a34850!important}.error-banner{background:#fff0f0;border:1px solid #e7bfc1;color:#9d3447;padding:14px 18px;font-size:13px;margin-bottom:20px;border-radius:6px}.toast{position:fixed;bottom:24px;left:50%;transform:translateX(-50%);background:#393046;color:white;padding:13px 22px;font-size:13px;border-radius:8px;z-index:40;box-shadow:0 6px 24px #30263b25;max-width:90vw}.toast:empty{display:none}
dialog{color:var(--ink);border:1px solid #d5ccd9;border-radius:12px;padding:0;max-height:92dvh;box-shadow:0 25px 90px #30203840}dialog::backdrop{background:#28213466;backdrop-filter:blur(3px)}.editor{width:min(930px,94vw)}.dialog-layout{display:flex;flex-direction:column;max-height:90dvh}.dialog-header{padding:22px 28px 18px;display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid var(--line)}.dialog-header h2{font-size:20px;letter-spacing:-.04em;margin:5px 0 0}.dialog-scroll{overflow:auto;padding:24px 28px;flex:1}.routine-fields{display:grid;grid-template-columns:1.5fr 1fr;gap:15px}.field{display:flex;flex-direction:column;gap:8px;font-size:12px;font-weight:650;margin-bottom:17px}.field input,.field textarea,.field select{border:1px solid #d9d1df;background:#fff;border-radius:6px;min-height:42px;padding:10px 12px;color:var(--ink);width:100%;font-size:13px;font-weight:400}.field textarea{resize:vertical;min-height:77px;line-height:1.6}.field.wide{grid-column:1/-1}.field small{font-weight:400;line-height:1.6}.content-tabs{display:flex;margin:8px 0 22px;border-bottom:1px solid var(--line);gap:14px}.content-tabs button{flex:1;border:0;border-radius:0;border-bottom:3px solid transparent;background:transparent;color:var(--muted);font-size:13px;padding:14px 8px}.content-tabs button[aria-selected=true]{border-bottom-color:var(--stage);color:var(--stage);background:color-mix(in srgb,var(--stage) 6%,white)}.content-intro{display:flex;justify-content:space-between;gap:20px;align-items:center;margin-bottom:15px}.content-intro h3{font-size:14px;margin:0 0 7px}.content-intro p{font-size:12px;color:var(--muted);margin:0}.content-item{padding:20px 0;border-top:1px solid #eee8f0}.item-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px;font-size:11px;color:var(--muted)}.item-header button{border:0;background:transparent;min-height:30px;padding:3px 8px;font-size:12px}.item-grid{display:grid;grid-template-columns:1fr 130px;gap:15px}.item-grid .field{margin-bottom:8px}.drop-zone{display:block;border:1px dashed #c9b5d4;background:#faf7fc;border-radius:8px;padding:25px;text-align:center;color:var(--plum);font-size:13px;line-height:1.8}.drop-zone input{display:block;max-width:100%;margin:14px auto 0;font-size:12px}.file-info{display:flex;align-items:center;gap:12px;margin:14px 0;font-size:12px;overflow-wrap:anywhere}.file-info span{flex:1}.theory-preview{width:100%;height:290px;border:1px solid var(--line);background:white;border-radius:6px}.question-image{max-width:240px;max-height:170px;object-fit:contain;background:#fafafa;border:1px solid var(--line);border-radius:5px}.image-field{font-size:12px;display:flex;gap:15px;align-items:center;flex-wrap:wrap;margin:12px 0}.image-field input{max-width:100%}.dialog-footer{border-top:1px solid var(--line);padding:16px 28px;display:flex;align-items:center;gap:12px;background:#fbf9fc}.dialog-footer .save-hint{font-size:11px;color:var(--muted);margin-right:auto}.confirm-dialog{width:400px;padding:28px}.confirm-dialog h2{font-size:20px}.confirm-dialog p{font-size:13px;color:var(--muted)}.confirm-dialog input{width:100%;padding:12px;margin:0 0 20px;border:1px solid var(--line);border-radius:6px}.confirm-actions{display:flex;gap:10px;justify-content:flex-end}.placeholder-content{text-align:center;font-size:13px;padding:30px 10px;color:var(--muted)}[hidden]{display:none!important}
.studio-nav{display:flex;align-items:center;gap:24px;padding:12px 32px;background:#fff;border-bottom:1px solid var(--line);font-size:12px;flex-wrap:wrap}.studio-nav a{text-decoration:none;color:var(--muted)}.studio-nav a[aria-current]{color:var(--plum);font-weight:750}.studio-user{margin-left:auto;color:var(--muted);overflow-wrap:anywhere}.auth-shell{max-width:530px;margin:60px auto;padding:0 24px}.auth-shell h1{font-size:36px;line-height:1.4}.auth-shell h2{font-size:21px;line-height:1.6}.auth-shell>.muted{font-size:14px;margin-bottom:30px}.auth-shell form{margin:24px 0}.auth-shell button{margin-bottom:10px}.auth-tabs{display:flex;gap:8px}.account-list,.audit-list{background:white;border:1px solid var(--line);border-radius:8px;overflow:hidden}.account-row{display:grid;grid-template-columns:1fr 1fr auto;gap:25px;padding:22px;border-bottom:1px solid var(--line);font-size:13px;align-items:center;overflow-wrap:anywhere}.account-row p{margin:6px 0;font-size:12px;white-space:pre-wrap}.account-state{padding:5px 9px;background:#f2edf7;font-size:11px;border-radius:4px}.account-state.pending{color:#937134;background:#fff5df}.account-state.active{color:#387d72;background:#eaf6ef}.account-state.suspended,.account-state.rejected{color:#9e485a;background:#ffedf1}.account-actions{display:flex;gap:7px}.account-actions button{font-size:12px}.audit-row{display:grid;grid-template-columns:175px 1fr 220px;gap:25px;padding:20px;border-bottom:1px solid var(--line);font-size:12px;overflow-wrap:anywhere}.audit-row p{margin:7px 0}.audit-row time,.audit-row>span{color:var(--muted)}.log-pagination{display:flex;align-items:center;justify-content:center;gap:20px;margin-top:24px;font-size:12px}#auth-status{color:#387d72;font-size:13px;line-height:1.7;margin:15px 0}@media(max-width:760px){.studio-nav{padding:12px 16px;gap:14px}.studio-user{order:4;flex-basis:100%;font-size:11px}.studio-nav button{margin-left:auto}.account-row,.audit-row{grid-template-columns:1fr;padding:18px;gap:13px}.account-actions{justify-content:flex-end}.auth-shell{margin:38px auto}.auth-shell h1{font-size:31px}}
@media(min-width:1500px){.hero{padding-top:90px;padding-bottom:80px}.desk-preview{min-height:430px}}
@media(max-width:1000px){.admin-shell{padding:25px 22px}.list-head,.routine-row{grid-template-columns:30px minmax(170px,1fr) 265px 130px;gap:10px}.routine-checks{gap:2px}.hero{gap:35px}.install-section{gap:35px}.display-notebook{width:83%;padding:25px}.display-notebook h2{font-size:21px}}
@media(max-width:760px){.public-header{padding:20px}.public-header nav{gap:12px;font-size:12px}.public-header nav .button{padding:8px 10px;font-size:12px}.public-header .brand{font-size:18px}.public-header nav>a:first-child{display:none}.public-main{padding:0 22px}.hero{grid-template-columns:1fr;padding:43px 0 40px;gap:32px}.hero h1{font-size:39px}.hero-lead{font-size:14px}.desk-preview{min-height:350px;max-width:500px;width:100%;margin:auto}.display-notebook{width:70%}.install-section{grid-template-columns:1fr;gap:8px;padding:30px 0}.footer{margin:0 22px;flex-wrap:wrap}.app-option{gap:12px}.app-option .button{font-size:12px;padding:9px}.admin-header{padding:0 18px;height:62px}.workspace-label{display:none}.header-links{gap:12px}.admin-shell{padding:22px 16px 50px}.context-bar{margin-bottom:23px;flex-wrap:wrap;gap:10px}.context-bar .crumb{font-size:11px}.context-bar a{font-size:11px}.page-title{align-items:flex-start;margin-bottom:20px}.page-title h1{font-size:26px}.page-title p{font-size:12px}.page-title>.button{font-size:12px;padding:8px 10px;white-space:nowrap}.unit-nav{margin-bottom:22px}.unit-tabs button{padding:12px;font-size:12px}.list-toolbar{gap:8px}.list-toolbar h2{font-size:16px}.search-box{margin-left:0;order:3;width:calc(100% - 110px)}.search-box input{width:100%}.filter-select{order:4;width:102px}.list-head{display:none}.routine-row{grid-template-columns:24px 1fr auto;gap:10px;padding:20px 14px}.routine-info{grid-column:2;grid-row:1}.routine-checks{grid-column:2/4;grid-row:2;margin-top:15px;max-width:340px}.row-actions{grid-column:3;grid-row:1}.row-actions .reorder{display:none}.routine-title{font-size:14px}.routine-objective{font-size:11px}.row-actions .icon-button{min-width:30px;padding:6px}.list-foot{flex-direction:column;gap:5px}.dialog-header{padding:18px}.dialog-scroll{padding:18px}.routine-fields{grid-template-columns:1fr;gap:0}.field.wide{grid-column:auto}.content-tabs{gap:0}.content-tabs button{font-size:12px;padding:12px 4px}.item-grid{grid-template-columns:1fr 85px;gap:10px}.dialog-footer{padding:15px 18px;flex-wrap:wrap}.dialog-footer .save-hint{width:100%}.dialog-footer button{flex:1}.content-intro{gap:10px}.content-intro>button{white-space:nowrap}.about h1{font-size:34px}.about{padding-top:65px}}

/* 학년 선택은 설치 패널 안에서 유지한다. */
.install-grades{border:0;padding:0;margin:0 0 4px;min-width:0}.install-grades legend{padding:0;margin-bottom:12px;font-size:13px;font-weight:700}.install-grade-options{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.install-grade-options label{position:relative;cursor:pointer}.install-grade-options input{position:absolute;opacity:0;width:1px;height:1px}.install-grade-options span{display:flex;align-items:center;justify-content:center;min-height:46px;border:1px solid #d8d0dd;border-radius:7px;padding:10px 6px;font-size:13px;background:#fffcf4}.install-grade-options input:checked+span{background:#765378;color:#fff;border-color:#765378;font-weight:700}.install-grade-options input:focus-visible+span{outline:3px solid #b79bc6;outline-offset:3px}.install-grade-options label:hover span{border-color:#765378}.install-panel [hidden]{display:none!important}.app-option>div{min-width:0}.app-option #install-pending{margin-left:auto;white-space:nowrap}.app-option #install-download{font-size:13px}.app-option #install-pending:disabled{opacity:.65}@media(max-width:440px){.install-grade-options span{font-size:12px}.install-panel .app-option{flex-wrap:wrap}.install-panel .app-option>div{flex:1}.install-panel #install-download,.install-panel #install-pending{width:100%;margin-left:0;min-height:46px}}

.help-panel{position:fixed;inset:0 0 0 auto;margin:0;border:0;border-left:1px solid var(--line);padding:0;width:min(600px,100%);max-width:100%;height:100dvh;max-height:100dvh;background:#fff;color:var(--ink);box-shadow:-12px 0 50px #342f4826}.help-panel[open]{display:flex;flex-direction:column}.help-panel::backdrop{background:#342f4866}.help-header{display:flex;align-items:center;justify-content:space-between;gap:20px;padding:24px 28px;border-bottom:1px solid var(--line);flex-shrink:0}.help-header .eyebrow{margin:0 0 8px}.help-header h2{font-size:22px;letter-spacing:-.04em;margin:0}.help-header button{flex-shrink:0}.help-body{padding:24px 28px 48px;overflow-y:auto;overscroll-behavior:contain;min-height:0;font-size:14px;line-height:1.8}.help-lead{color:var(--muted)}.help-index{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:28px}.help-index button{font-size:12px;background:#f8f6fa;min-height:44px}.help-body section{padding:24px 0;border-top:1px solid var(--line)}.help-body h3{font-size:19px;margin:0 0 18px;scroll-margin-top:20px}.help-body li{padding-left:3px;margin-bottom:12px}.help-body ol,.help-body ul{padding-left:23px}.help-note{padding:14px 17px;background:#f8f5fa;border-left:3px solid #aa91b6;font-size:13px;margin:18px 0 0}.help-glossary{margin:0}.help-glossary dt{font-weight:750;margin-top:18px;color:var(--plum)}.help-glossary dd{margin:4px 0 0}.help-body details{border-bottom:1px solid var(--line);padding:12px 0}.help-body summary{font-weight:650;cursor:pointer;padding:7px 0;min-height:44px}.help-body details p{margin:10px 0}.help-body details ul{margin-bottom:8px}.help-body h3:focus-visible{outline:2px solid #b79bc6;outline-offset:5px}@media(max-width:600px){.help-header{padding:20px}.help-header h2{font-size:20px}.help-body{padding:20px 20px 40px}.dialog-header:has([data-open-help]){gap:10px}.dialog-header [data-open-help]{margin-left:auto;font-size:12px;padding:8px 10px}.dialog-header h2{font-size:20px}}
