:root{color:#182126;background:#f4f8fb;font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-size:16px;line-height:1.45;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}*{box-sizing:border-box}body{margin:0}button,textarea,select,input{font:inherit}button{border:1px solid #cbd8df;border-radius:12px;background:#fff;color:#182126;cursor:pointer;padding:9px 14px;transition:border-color .16s ease,background .16s ease,box-shadow .16s ease,transform .16s ease}button:hover:not(:disabled){border-color:#74b6c8;background:#f7fcff}button:active:not(:disabled){transform:translateY(1px)}button:disabled{color:#8a98a2;cursor:not-allowed}textarea,select,input{width:100%;border:1px solid #cbd8df;border-radius:12px;background:#fff;color:#182126}textarea{resize:vertical;padding:12px 13px;line-height:1.55}select,input{min-height:42px;padding:8px 10px}textarea:focus,select:focus,input:focus{border-color:#2f8f83;outline:3px solid rgba(47,143,131,.16)}.app-shell{display:grid;grid-template-columns:340px minmax(0,1fr);min-height:100svh;background:linear-gradient(180deg,#ffffffdb,#f5fafcf0),#f4f8fb}.sidebar{position:sticky;top:0;display:flex;flex-direction:column;gap:18px;height:100svh;min-width:0;padding:18px 14px;border-right:1px solid #dce6eb;background:#ffffffeb;box-shadow:18px 0 50px #2a4a5a0d;overflow-y:auto}.brand-block{display:grid;gap:4px;padding:10px 10px 16px;border-bottom:1px solid #e1ebef}.brand-title{color:#1e4d55;font-size:1.5rem;font-weight:800}.brand-subtitle{color:#6d7f89;font-size:.78rem;font-weight:700;text-transform:uppercase}.user-line{margin-top:10px;font-weight:700}.email-line,.subject-meta,.mode-label,.section-label,.question-meta,.admin-count{color:#697b85;font-size:.84rem}.admin-badge,.lock-badge,.kind-pill{display:inline-flex;align-items:center;width:fit-content;min-height:24px;padding:0 8px;border-radius:999px;font-size:.78rem;font-weight:800}.admin-badge{margin-top:4px;border:1px solid #f1c971;color:#7b5611;background:#fff8df}.role-picker{display:grid;gap:4px;margin-top:12px}.role-picker span{color:#697b85;font-size:.78rem;font-weight:700}.role-picker select{min-height:36px}.role-hint{margin-top:6px;color:#2a7d72;font-size:.78rem}.side-actions{display:grid;grid-template-columns:1fr 1fr;gap:8px}.side-actions button,.logout-button,.composer button,.test-controls button,.question-panel>button,.gate-layout>button,.admin-filters button,.login-panel button{min-height:40px;padding:9px 12px;border-color:#2f8f83;background:#2f8f83;color:#fff;font-weight:700}.side-actions button{padding:9px 8px;white-space:nowrap;background:#eef9f7;color:#1e5d55}.side-actions button:hover:not(:disabled){background:#def2ef}.subject-list,.recent-list{display:flex;flex-direction:column;gap:8px}.section-label{margin:2px 10px;font-weight:800;text-transform:uppercase}.subject-row{display:flex;flex-direction:column;gap:6px}.subject-card{display:grid;gap:9px;width:100%;padding:12px;border-color:#d7e4e9;background:#fff;text-align:left;box-shadow:0 16px 38px #1e4d5514}.subject-card.active{border-color:#49a79c;background:#f2fbfa;box-shadow:0 0 0 1px #2f8f833d inset}.subject-card.locked{background:#f5f8fa;color:#6b7b84}.subject-top{display:flex;justify-content:space-between;gap:12px;font-weight:700}.lock-badge.open{border:1px solid #b7e3dc;color:#216d63;background:#e7f8f5}.lock-badge.closed{border:1px solid #d5dee3;color:#788891;background:#eef3f5}.lock-badge.elective{border:1px solid #cfe5f3;color:#285976;background:#f0f8ff}.subject-card.elective{border-color:#cfe5f3}.subject-recommendation{color:#5b6e78;font-size:.78rem;line-height:1.35}.subject-learning-note{color:#60727b;font-size:.76rem;line-height:1.35}.progress-track{width:100%;height:8px;overflow:hidden;border-radius:999px;background:#e6eef2}.progress-fill{height:100%;border-radius:999px;background:linear-gradient(90deg,#2f8f83,#4aaee8)}.gate-trigger{align-self:stretch;min-height:34px;padding:7px 10px;border:1px solid #f1cf79;background:#fff9e8;color:#80590e;font-size:.78rem;font-weight:700}.test-trigger{align-self:stretch;min-height:34px;padding:7px 10px;border:1px solid #cfe5f3;background:#f0f8ff;color:#285976;font-size:.78rem;font-weight:700}.recent-item{min-height:38px;padding:8px 10px;overflow:hidden;border-color:transparent;background:transparent;color:#42545d;text-align:left;text-overflow:ellipsis;white-space:nowrap}.recent-item:hover:not(:disabled){border-color:#d6e5eb;background:#f5fbfd}.logout-button{margin-top:auto;border-color:#d5e0e5;background:#fff;color:#42545d}.main-panel{display:flex;flex-direction:column;min-width:0;min-height:100svh}.topbar{position:sticky;top:0;z-index:4;display:flex;align-items:center;justify-content:space-between;gap:20px;min-height:82px;padding:18px 28px;border-bottom:1px solid #dce6eb;background:#ffffffe6;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px)}.topbar h1{margin:2px 0 0;font-size:1.45rem;line-height:1.2}.mode-label{font-weight:800;text-transform:uppercase}.status-pill{max-width:520px;padding:8px 12px;border:1px solid #f2d188;border-radius:12px;background:#fff9ea;color:#6f4f12;font-size:.9rem}.learn-layout{display:grid;grid-template-columns:minmax(0,1fr) 300px;grid-template-rows:auto minmax(0,1fr) auto auto;grid-template-areas:"hook concepts" "chat concepts" "quick concepts" "composer concepts";gap:14px;height:calc(100svh - 82px);min-height:0;padding:18px 22px 22px}.intro-hook{grid-area:hook;padding:12px 14px;border:1px solid #cfe5f3;border-radius:12px;background:#f0f8ff;color:#285976;font-size:.9rem}.learning-side{grid-area:concepts;display:grid;grid-template-rows:minmax(120px,.55fr) minmax(180px,.95fr) minmax(136px,.8fr) auto minmax(220px,1fr);gap:12px;min-height:0;overflow-y:auto;padding-right:2px}.concept-strip{display:flex;flex-direction:column;gap:8px;min-height:0;overflow-y:auto;padding:12px;border:1px solid #dce6eb;border-radius:12px;background:#ffffffc2}.concept-strip:before{content:"개념";margin:2px 2px 4px;color:#697b85;font-size:.78rem;font-weight:800;text-transform:uppercase}.concept-chip{display:grid;grid-template-columns:auto 1fr;align-items:center;gap:8px;min-height:42px;padding:9px 10px;border-color:#d7e4e9;background:#fff;text-align:left}.concept-chip span{min-width:38px;color:#6f7f88;font-size:.78rem;font-weight:800}.concept-chip.active{border-color:#49a79c;background:#edf9f7}.panel-label{color:#697b85;font-size:.78rem;font-weight:800;text-transform:uppercase}.check-card,.milestone-panel,.point-panel,.context-panel,.test-hero{border:1px solid #dce6eb;border-radius:12px;background:#ffffffd1;box-shadow:0 16px 38px #24485714}.check-card,.milestone-panel,.point-panel,.context-panel{display:grid;gap:9px;min-width:0;padding:13px}.check-card h2,.milestone-panel h2,.point-panel h2,.context-panel h2,.test-hero h2{margin:0;color:#182126;font-size:1rem;line-height:1.3}.check-card p,.milestone-panel p,.context-panel p,.test-hero p{margin:0;color:#5b6e78;font-size:.84rem}.milestone-heading{display:flex;align-items:baseline;justify-content:space-between;gap:12px}.milestone-heading span{color:#1e4d55;font-size:.86rem;font-weight:800}.learning-point-list{display:grid;gap:7px;max-height:190px;margin:0;padding:0;overflow-y:auto;list-style:none}.learning-point-list.compact{max-height:none;gap:6px}.learning-point{display:grid;grid-template-columns:20px minmax(0,1fr);gap:8px;padding:8px;border:1px solid #e0eaee;border-radius:10px;background:#fff}.learning-point.covered{border-color:#cdebe6;background:#f2fbfa}.point-marker{color:#2f8f83;font-weight:900;line-height:1.35}.learning-point.pending .point-marker{color:#83939b}.point-body{display:grid;gap:3px;min-width:0}.point-text{color:#21333a;font-size:.82rem;line-height:1.42}.point-meta{color:#73858d;font-size:.74rem;font-weight:700}.point-summary{display:flex;justify-content:space-between;gap:10px;color:#1e4d55;font-size:.82rem;font-weight:800}.point-group{display:grid;gap:6px}.point-group strong{color:#526770;font-size:.78rem}.progress-notice{display:grid;gap:8px;max-width:760px;margin:0 0 16px;padding:12px 14px;border:1px solid #bfe2dc;border-radius:12px;background:#effaf8;color:#214f49;box-shadow:0 12px 28px #24485714}.progress-notice>div{display:flex;justify-content:space-between;gap:12px}.progress-notice strong{font-size:.9rem}.progress-notice span{font-size:.82rem;font-weight:800}.progress-notice ul{display:grid;gap:4px;margin:0;padding-left:18px;color:#315f59;font-size:.84rem;line-height:1.45}.check-card button,.context-composer button{min-height:36px;padding:8px 10px;border-color:#2f8f83;background:#2f8f83;color:#fff;font-weight:700}.check-card button.secondary{border-color:#cfe5f3;background:#f0f8ff;color:#285976}.chat-window{grid-area:chat;min-height:0;overflow-y:auto;padding:18px;border:1px solid #dce6eb;border-radius:12px;background:#ffffffb8}.message-row{display:flex;margin-bottom:18px}.message-row.user{justify-content:flex-end}.message-bubble{width:min(820px,88%);padding:14px 16px;border:1px solid #dce6eb;border-radius:12px;background:#fff;box-shadow:0 16px 38px #24485714}.message-row.user .message-bubble{width:min(680px,82%);border-color:#c6e7e2;background:#ecfaf7}.message-row.starter{margin-top:7vh}.starter-card{width:min(760px,100%);padding:22px 24px;border-color:#bfe2dc;background:linear-gradient(180deg,#fffffffa,#f0faf8f0),#fff}.starter-intro{margin-bottom:16px;padding:12px 14px;border:1px solid #cfe5f3;border-radius:12px;background:#f3f9ff}.starter-intro-label{display:inline-block;margin-bottom:4px;color:#285976;font-size:.78rem;font-weight:800}.starter-intro p{margin:0;color:#34495a;font-size:.95rem;line-height:1.5}.starter-intro strong{color:#1e4d55}.starter-focus{display:inline-flex;width:fit-content;margin-bottom:12px;padding:6px 9px;border:1px solid #cdebe6;border-radius:12px;background:#effaf8;color:#25675f;font-size:.84rem;font-weight:800}.starter-card h2{margin:0;color:#142126;font-size:1.35rem;line-height:1.38}.starter-card p{margin:12px 0 0;color:#5c6f79}.message-role{margin-bottom:6px;color:#637781;font-size:.84rem;font-weight:800}.message-content{white-space:pre-wrap;overflow-wrap:anywhere}.message-content.markdown{white-space:normal}.message-content.markdown>:first-child{margin-top:0}.message-content.markdown>:last-child{margin-bottom:0}.message-content.markdown p{margin:0 0 8px}.message-content.markdown ul,.message-content.markdown ol{margin:4px 0 8px;padding-left:20px}.message-content.markdown li{margin:2px 0}.message-content.markdown strong{font-weight:700}.message-content.markdown h1,.message-content.markdown h2,.message-content.markdown h3{margin:10px 0 6px;font-size:1rem;font-weight:700}.message-content.markdown code{padding:1px 5px;border-radius:6px;background:#eef3f5;font-size:.92em}.message-content.markdown pre{overflow-x:auto;padding:10px 12px;border-radius:10px;background:#f2f6f8}.message-content.markdown pre code{padding:0;background:transparent}.message-content.markdown blockquote{margin:6px 0;padding:2px 12px;border-left:3px solid #cbd8df;color:#4b5d66}.message-content.markdown a{color:#2a7d72;text-decoration:underline}.quick-actions{grid-area:quick;display:flex;gap:8px;min-width:0}.starter-help{grid-area:quick;min-height:36px;padding:8px 2px;color:#667983;font-size:.9rem}.quick-actions button{min-height:36px;padding:8px 12px;border-color:#d3e4eb;background:#fff;color:#2a5d6a;font-weight:600}.context-panel{min-height:0}.context-suggestions{display:flex;flex-wrap:wrap;gap:6px}.context-suggestions button{min-height:30px;padding:6px 8px;border-color:#d3e4eb;background:#fff;color:#2a5d6a;font-size:.78rem;font-weight:600}.context-messages{display:grid;align-content:start;gap:8px;min-height:100px;max-height:250px;overflow-y:auto;padding:8px;border:1px solid #e2ecef;border-radius:12px;background:#f8fbfc}.context-empty{color:#71828b;font-size:.84rem}.context-message{padding:8px 9px;border-radius:12px;background:#fff;color:#31444d;font-size:.84rem;white-space:pre-wrap;overflow-wrap:anywhere}.context-message.user{background:#ecfaf7}.context-composer{display:grid;gap:8px}.context-composer textarea{min-height:70px;font-size:.9rem}.composer{grid-area:composer;display:grid;grid-template-columns:minmax(0,1fr) 108px;gap:10px;align-items:end}.composer textarea{min-height:64px;max-height:180px;background:#fff;box-shadow:0 16px 38px #24485714}.composer button{min-height:52px}.test-layout,.admin-layout,.gate-layout{display:grid;gap:16px;align-content:start;padding:22px 28px}.test-hero{display:flex;justify-content:space-between;gap:18px;max-width:980px;padding:18px}.test-hero-stat{display:grid;align-content:center;justify-items:end;min-width:126px}.test-hero-stat strong{color:#1e4d55;font-size:1.8rem;line-height:1}.test-hero-stat span{color:#697b85;font-size:.84rem}.test-progress-note{width:fit-content;margin-top:10px;padding:7px 9px;border:1px solid #cfe5f3;border-radius:10px;background:#f0f8ff;color:#285976;font-size:.82rem;font-weight:700}.test-controls{display:grid;grid-template-columns:minmax(180px,260px) minmax(260px,560px) 144px;gap:10px;max-width:980px}.question-panel,.feedback-panel,.result-panel,.gate-item,.admin-table-wrap,.login-panel{border:1px solid #dce6eb;border-radius:12px;background:#fff;box-shadow:0 18px 42px #24485717}.question-panel,.feedback-panel,.result-panel{max-width:920px;padding:18px}.question-panel h2,.result-panel h2{margin:8px 0 16px;font-size:1.15rem}.choice-list{display:grid;gap:8px;margin-bottom:14px}.choice-list button{display:grid;grid-template-columns:34px 1fr;gap:10px;align-items:start;padding:12px;text-align:left}.choice-list button strong{display:inline-flex;align-items:center;justify-content:center;width:26px;height:26px;border-radius:999px;background:#eef5f8;color:#45616d}.choice-list button.selected{border-color:#49a79c;background:#edf9f7}.question-panel textarea{margin-bottom:12px}.result-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.result-grid>div,.answer-feedback-list{padding:12px;border:1px solid #e2ecef;border-radius:12px;background:#f8fbfc}.result-grid p,.answer-feedback-list p{margin:6px 0 0;color:#4b5d66}.answer-feedback-list{display:grid;gap:8px;margin-top:12px}.answer-feedback-item{display:grid;gap:4px;padding:9px;border-radius:12px;background:#fff;color:#42545d;font-size:.9rem}.answer-feedback-item strong{color:#9b2c2c}.admin-filters{display:grid;grid-template-columns:140px minmax(180px,260px) minmax(220px,1fr) 150px 150px 96px;gap:10px;align-items:center}.admin-table-wrap{overflow-x:auto}.admin-table{width:100%;min-width:1160px;border-collapse:collapse;table-layout:fixed}.admin-table th,.admin-table td{padding:12px;border-bottom:1px solid #e7eef2;text-align:left;vertical-align:top;word-break:keep-all;overflow-wrap:anywhere}.admin-table th{color:#637781;background:#f7fbfd;font-size:.84rem;font-weight:800}.admin-table th:nth-child(1),.admin-table td:nth-child(1){width:120px}.admin-table th:nth-child(2),.admin-table td:nth-child(2){width:190px}.admin-table th:nth-child(3),.admin-table td:nth-child(3){width:180px}.admin-table th:nth-child(4),.admin-table td:nth-child(4){width:140px}.admin-table th:nth-child(7),.admin-table td:nth-child(7){width:170px}.admin-table small{display:block;margin-top:4px;color:#697b85;font-size:.78rem}.kind-pill{border:1px solid #b7e3dc;color:#216d63;background:#e7f8f5}.kind-pill.gate{border-color:#f1cf79;color:#80590e;background:#fff9e8}.empty-cell{color:#697b85;text-align:center}.login-page{display:grid;min-height:100svh;place-items:center;padding:24px;background:linear-gradient(180deg,#ffffffb8,#ecf8f7eb),#f4f8fb}.login-panel{width:min(420px,100%);padding:28px}.login-panel .brand-title{font-size:1.8rem}.login-panel h1{margin:10px 0 8px;font-size:1.45rem}.login-panel p{margin:0 0 18px;color:#566a74}.gate-layout{overflow-y:auto}.auth-tabs{display:grid;grid-template-columns:1fr 1fr;gap:6px;margin-bottom:12px}.login-panel .auth-tabs button{border-color:#cbd8df;background:#fff;color:#5b6e78;font-weight:600}.login-panel .auth-tabs button.active{border-color:#49a79c;background:#eef9f7;color:#1e5d55;font-weight:800}.auth-form{display:grid;gap:10px}.auth-notice,.auth-error{margin-top:12px;padding:10px 12px;border-radius:12px;font-size:.9rem}.auth-notice{border:1px solid #b7e3dc;background:#e7f8f5;color:#216d63}.auth-error{border:1px solid #f3c6c6;background:#fff0f0;color:#9b2c2c}.auth-divider{margin:16px 0 12px;color:#8a98a2;font-size:.84rem;text-align:center;text-transform:uppercase}.login-panel .dev-login{margin-top:14px;border-color:#d5e0e5;background:#fff;color:#42545d}.admin-tabs{display:flex;gap:8px}.admin-tabs button.active{border-color:#49a79c;background:#eef9f7;color:#1e5d55;font-weight:800}.admin-refresh{min-height:30px;margin-left:8px;padding:4px 10px;font-size:.84rem}.admin-table.users{min-width:720px}.status-badge{display:inline-flex;align-items:center;min-height:24px;padding:0 8px;border-radius:999px;font-size:.78rem;font-weight:800}.status-badge.active{border:1px solid #b7e3dc;color:#216d63;background:#e7f8f5}.status-badge.pending{border:1px solid #f1cf79;color:#80590e;background:#fff9e8}.status-badge.rejected{border:1px solid #f3c6c6;color:#9b2c2c;background:#fff0f0}.user-actions{display:flex;gap:6px}.user-actions .approve{border-color:#2f8f83;background:#2f8f83;color:#fff;font-weight:700}.user-actions .reject{border-color:#f3c6c6;background:#fff0f0;color:#9b2c2c;font-weight:700}.nav-toggle,.nav-overlay{display:none}.gate-intro{max-width:920px;margin:0;color:#4b5d66;font-size:.95rem}.gate-item{display:grid;gap:8px;max-width:920px;padding:16px}.gate-concept{color:#1e4d55;font-size:.84rem;font-weight:800}.gate-prompt{margin:0}.gate-feedback,.gate-result{padding:9px 10px;border-radius:12px;font-size:.84rem}.gate-feedback.pass,.gate-result.pass{background:#e7f8f5;color:#216d63}.gate-feedback.retry,.gate-result.retry{background:#fff0f0;color:#9b2c2c}@media (max-width: 1080px){.app-shell{grid-template-columns:312px minmax(0,1fr)}.learn-layout{grid-template-columns:minmax(0,1fr);grid-template-rows:auto auto minmax(0,1fr) auto auto;grid-template-areas:"hook" "concepts" "chat" "quick" "composer"}.concept-strip{flex-direction:row;overflow-x:auto}.learning-side{grid-template-rows:auto auto auto auto auto}.concept-strip:before{display:none}.concept-chip{flex:0 0 auto;min-width:190px}}@media (max-width: 860px){textarea,select,input{font-size:16px}.app-shell{grid-template-columns:1fr}.sidebar{position:fixed;top:0;bottom:0;left:0;z-index:20;width:min(320px,86vw);height:100svh;border-right:1px solid #dce6eb;background:#fff;transform:translate(-105%);transition:transform .2s ease,visibility .2s;visibility:hidden}.app-shell button,.login-page button{min-height:42px}.sidebar.open{transform:translate(0);visibility:visible;box-shadow:24px 0 60px #142d3847}.nav-overlay{display:block;position:fixed;top:0;right:0;bottom:0;left:0;z-index:19;background:#0f232a6b}.nav-toggle{display:inline-flex;align-items:center;flex:0 0 auto;min-height:40px;padding:8px 12px;font-size:.9rem;font-weight:700}.topbar{gap:12px;min-height:64px;padding:10px 14px}.topbar h1{font-size:1.1rem}.status-pill{max-width:100%;font-size:.84rem}.learn-layout{height:auto;min-height:calc(100svh - 64px);padding:12px;gap:10px;grid-template-columns:minmax(0,1fr);grid-template-rows:auto auto auto auto auto auto auto auto auto;grid-template-areas:"hook" "strip" "milestones" "points" "chat" "quick" "composer" "check" "context"}.learning-side{display:contents}.concept-strip{grid-area:strip;flex-direction:row;overflow-x:auto;padding:8px;-webkit-overflow-scrolling:touch}.concept-chip{flex:0 0 auto;min-width:170px}.check-card{grid-area:check}.milestone-panel{grid-area:milestones}.point-panel{grid-area:points}.context-panel{grid-area:context}.learning-point-list{max-height:none}.chat-window{min-height:45svh;overflow-y:visible;padding:12px}.composer{position:sticky;bottom:0;z-index:5;padding:8px 0 10px;background:linear-gradient(180deg,#f4f8fb00,#f4f8fb 30%)}.composer textarea{min-height:52px}.composer button{min-height:46px}.composer,.test-controls,.admin-filters{grid-template-columns:minmax(0,1fr) 86px}.test-controls,.admin-filters{grid-template-columns:1fr}.test-layout,.admin-layout,.gate-layout{padding:14px}.test-hero,.result-grid{grid-template-columns:1fr}.test-hero{flex-direction:column}.test-hero-stat{justify-items:start}.quick-actions{flex-wrap:wrap}.message-bubble,.message-row.user .message-bubble{width:100%}.context-messages{max-height:200px}.admin-table.users{min-width:0}.admin-table.users thead{display:none}.admin-table.users tbody tr{display:grid;grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"name status" "email email" "meta actions";gap:4px 10px;padding:12px 14px;border-bottom:1px solid #e7eef2}.admin-table.users td{width:auto;padding:0;border-bottom:0}.admin-table.users td:nth-child(1){grid-area:meta;align-self:center;color:#697b85;font-size:.84rem}.admin-table.users td:nth-child(2){grid-area:name;font-weight:700}.admin-table.users td:nth-child(3){grid-area:email;color:#42545d;font-size:.9rem}.admin-table.users td:nth-child(4){display:none}.admin-table.users td:nth-child(5){grid-area:status;justify-self:end}.admin-table.users td:nth-child(6){grid-area:actions;justify-self:end}.admin-table.users .empty-cell{grid-area:auto / 1 / auto / -1}}
