@import "https://fonts.googleapis.com/earlyaccess/nanumsquare.css";:root{--ink:#17211f;--navy:#173f3a;--navy-deep:#102d2a;--mint:#bfe7d7;--mint-soft:#eaf6f1;--cream:#f7f4ed;--paper:#fffdf8;--coral:#d9674f;--coral-soft:#fff0eb;--gold:#bd8b36;--gold-soft:#fff8e6;--green:#2f7659;--line:#ddd9cf;--line-strong:#c8c3b8;--muted:#67716e;--shadow:0 18px 50px #173f3a14;--focus-ring:0 0 0 4px #44977b3d;color:var(--ink);background:var(--cream);font-synthesis:none;font-family:NanumSquare,Noto Sans KR,system-ui,-apple-system,sans-serif}*{box-sizing:border-box}html{scroll-behavior:smooth}[hidden]{display:none!important}body{background:var(--cream);min-width:320px;margin:0;line-height:1.55}body:before{content:"";background:var(--navy-deep);z-index:0;height:320px;position:fixed;inset:0 0 auto}body:after{content:"";z-index:0;pointer-events:none;background-image:radial-gradient(#ffffff14 1px,#0000 1px);background-size:20px 20px;position:fixed;inset:0;-webkit-mask-image:linear-gradient(#000,#0000 360px);mask-image:linear-gradient(#000,#0000 360px)}button,input,select,textarea{font:inherit}button,a,input,select,textarea{-webkit-tap-highlight-color:transparent}button{background:var(--navy);color:#fff;cursor:pointer;border:0;border-radius:10px;min-height:44px;padding:11px 17px;font-weight:800;transition:transform .15s,background .15s,border-color .15s,box-shadow .15s}button:hover:not(:disabled){background:var(--navy-deep);transform:translateY(-1px)}button:disabled{opacity:.48;cursor:not-allowed;transform:none}button.secondary{background:var(--paper);color:var(--navy);border:1px solid var(--line-strong)}button.secondary:hover:not(:disabled){background:var(--mint-soft);border-color:var(--navy)}button.small{min-height:36px;padding:7px 11px;font-size:.86rem}a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:2px solid var(--navy);outline-offset:2px;box-shadow:var(--focus-ring)}input,select,textarea{border:1px solid var(--line-strong);width:100%;min-height:46px;color:var(--ink);background:#fff;border-radius:9px;padding:11px 13px;transition:border-color .15s,box-shadow .15s}input::placeholder,textarea::placeholder{color:#999f9c}input:focus,select:focus,textarea:focus{border-color:var(--green);box-shadow:var(--focus-ring);outline:none}textarea{resize:vertical;min-height:96px}input[type=password]{letter-spacing:.12em;font-family:system-ui,sans-serif}label{gap:7px;font-size:.92rem;font-weight:800;display:grid}form{gap:16px;display:grid}h1,h2,h3,h4,p{margin-top:0}h1,h2,h3{letter-spacing:-.035em;line-height:1.22}.portal{z-index:1;width:min(100%,1040px);margin:auto;padding:24px 28px 72px;position:relative}.portal-wide{width:min(100%,1500px)}.portal-header{color:#fff;justify-content:space-between;align-items:center;min-height:72px;margin-bottom:40px;display:flex}.brand{color:inherit;letter-spacing:-.02em;align-items:center;gap:11px;font-size:1rem;font-weight:900;text-decoration:none;display:flex}.brand small{color:#ffffff94;letter-spacing:.15em;margin-top:1px;font-size:.61rem;font-weight:700;display:block}.brand-mark{width:36px;height:36px;color:var(--mint);border:1px solid #ffffff59;border-radius:50%;place-items:center;font-family:Georgia,serif;font-size:1.2rem;display:grid}.header-action{color:#fff!important;background:0 0!important;border-color:#ffffff59!important}.portal-kicker,.eyebrow{color:var(--green);letter-spacing:.14em;margin:0 0 9px;font-size:.72rem;font-weight:900}.optional{color:var(--muted);font-size:.82em;font-weight:700}.meta{color:var(--muted)}.error{color:#a33c2c;min-height:1em;margin-bottom:0;font-weight:700}.panel,.card{background:var(--paper);border:1px solid var(--line);border-radius:16px;box-shadow:0 8px 30px #173f3a0d}.panel{padding:26px}.card{padding:22px;transition:border-color .15s,transform .15s,box-shadow .15s}.card:hover{border-color:#b8c9c2;transform:translateY(-1px);box-shadow:0 14px 32px #173f3a14}.card h2,.card h3{margin-bottom:8px;font-size:1.08rem}.cards{grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;display:grid}a.file{color:var(--navy);margin:8px 0;font-weight:800;display:block}.auth-card{box-shadow:var(--shadow);grid-template-columns:minmax(0,1.05fr) minmax(320px,.95fr);padding:0;display:grid;overflow:hidden}.auth-intro{isolation:isolate;background:var(--navy);color:#fff;flex-direction:column;justify-content:center;min-height:510px;padding:58px;display:flex;position:relative;overflow:hidden}.auth-intro>:not(.auth-illustration){z-index:1;position:relative}.auth-illustration{z-index:0;opacity:.14;pointer-events:none;width:720px;max-width:none;position:absolute;bottom:-72px;right:-250px}.auth-intro .portal-kicker{color:var(--mint)}.auth-intro h1{letter-spacing:-.055em;margin-bottom:22px;font-size:clamp(2.1rem,3.4vw,3rem)}.auth-intro>p:not(.portal-kicker){color:#ffffffb8;max-width:520px;font-size:1.02rem}.auth-principle{border-top:1px solid #ffffff29;align-items:center;gap:10px;margin-top:40px;padding-top:22px;font-size:.9rem;display:flex}.auth-principle span{background:var(--mint);width:24px;height:24px;color:var(--navy);border-radius:50%;place-items:center;display:grid}.auth-form{flex-direction:column;justify-content:center;padding:52px;display:flex}.auth-form h2{margin-bottom:8px;font-size:1.65rem}.auth-form form{margin-top:24px}.auth-form form button{margin-top:4px}.auth-card-compact .auth-intro{min-height:420px}.student-hero{background:var(--navy);color:#fff;box-shadow:var(--shadow);border-radius:20px;grid-template-columns:minmax(0,1.4fr) minmax(250px,.6fr);align-items:end;gap:32px;padding:44px 48px;display:grid}.student-hero .portal-kicker{color:var(--mint)}.student-hero h1{letter-spacing:-.055em;margin-bottom:16px;font-size:clamp(2rem,4.5vw,3.4rem)}.student-hero p:not(.portal-kicker){color:#ffffffb3;max-width:640px;margin-bottom:0}.summary{color:#fff;white-space:pre-line;background:#ffffff14;border:1px solid #ffffff2e;border-radius:14px;align-items:center;min-height:116px;padding:20px;font-size:1rem;font-weight:800;display:flex}.student-status-nav{border:1px solid var(--line);background:var(--paper);border-radius:14px;grid-template-columns:repeat(4,1fr);margin:18px 0 36px;display:grid;overflow:hidden}.student-status-nav a{border-right:1px solid var(--line);min-height:56px;color:var(--ink);justify-content:center;align-items:center;gap:8px;padding:10px;font-size:.9rem;font-weight:800;text-decoration:none;display:flex}.student-status-nav a:last-child{border-right:0}.student-status-nav a:hover{background:var(--mint-soft)}.status-dot{border-radius:50%;width:9px;height:9px}.dot-redo{background:var(--coral)}.dot-open{background:var(--green)}.dot-review{background:var(--gold)}.dot-done{background:#7a9289}.group{margin:38px 0;scroll-margin-top:18px}.group-heading{align-items:center;gap:14px;margin-bottom:15px;display:flex}.group-heading p{margin-bottom:2px}.group-heading h2{margin:0;font-size:1.35rem}.group-icon{border-radius:12px;place-items:center;width:42px;height:42px;font-size:1.2rem;font-weight:900;display:grid}.icon-redo{background:var(--coral-soft);color:var(--coral)}.icon-open{background:var(--mint-soft);color:var(--green)}.icon-review{background:var(--gold-soft);color:var(--gold)}.icon-done{color:#60746c;background:#edf1ef}.group-priority{background:#fff0eb94;border:1px solid #efc7bd;border-radius:18px;padding:24px}.group-done .cards{opacity:.82}.next-action{color:var(--navy);margin-top:12px;font-weight:900}.redo{color:#9d402f;font-weight:900}.feedback{border-left:3px solid var(--coral);background:var(--coral-soft);border-radius:0 10px 10px 0;margin:14px 0;padding:14px 16px}.feedback-title{margin-bottom:6px;font-weight:900}.attempt{border-top:1px solid var(--line);margin-top:17px;padding-top:17px}.attempt form{margin-top:14px}.attempt button+button,.card button+button{margin-left:8px}.badge{border:1px solid;border-radius:999px;align-items:center;padding:5px 10px;font-size:.78rem;font-weight:900;display:inline-flex}.badge-needs_revision{background:var(--coral-soft);color:#8f392b;border-color:#e5a896}.badge-open,.badge-overdue{background:var(--mint-soft);color:#245c49;border-color:#9fcbb9}.badge-submitted{background:var(--gold-soft);color:#785718;border-color:#e1c27e}.badge-completed{color:#315e4b;background:#edf5f1;border-color:#bfd2ca}.empty-state{border:1px dashed var(--line-strong);text-align:center;color:var(--muted);background:#fffdf8a6;border-radius:16px;padding:46px 24px}.empty-illustration{width:118px;height:118px;margin:0 auto 14px;display:block}.queue-pane .empty-illustration{width:88px;height:88px}.empty-state h2,.empty-state h3{color:var(--ink);margin:13px 0 7px}.empty-state p{margin-bottom:0}.empty-symbol{background:var(--mint);width:44px;height:44px;color:var(--navy);border-radius:50%;place-items:center;margin:auto;font-weight:900;display:grid}.mobile-action-bar{display:none}.thumbs{flex-wrap:wrap;gap:12px;display:flex}.thumb{width:104px;margin:0;position:relative}.thumb img,.thumb-doc{border:1px solid var(--line-strong);object-fit:cover;background:#fff;border-radius:10px;width:104px;height:104px}.thumb-doc{word-break:break-all;justify-content:center;align-items:center;padding:7px;font-size:.74rem;display:flex}.thumb-remove{border-radius:50%;width:26px;height:26px;min-height:0;padding:0;font-size:.78rem;line-height:1;position:absolute;top:-7px;right:-7px}.warn{color:#825c13;margin-top:4px;font-size:.78rem}.submit-form textarea{min-height:76px}.viewer-overlay{z-index:30;-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);background:#0b1917d1;justify-content:center;align-items:center;padding:18px;display:flex;position:fixed;inset:0}.viewer-box{background:var(--paper);border-radius:16px;width:min(820px,100%);max-height:92vh;padding:16px;overflow:auto;box-shadow:0 30px 80px #0000004d}.viewer-box img{border-radius:8px;max-width:100%;margin:auto;display:block}.viewer-box iframe{background:#fff;border:0;border-radius:8px;width:min(780px,86vw);height:74vh}.modal-heading{justify-content:space-between;align-items:center;gap:12px;margin-bottom:12px;display:flex}.modal-heading h2{margin:0;font-size:1.1rem}.workspace-header{color:#fff;justify-content:space-between;align-items:flex-end;gap:30px;margin-bottom:24px;display:flex}.workspace-header .portal-kicker{color:var(--mint)}.workspace-header h1{margin-bottom:9px;font-size:clamp(2rem,3.7vw,3.2rem)}.workspace-header>div:first-child>p:last-child{color:#ffffffad;margin-bottom:0}.admin-stats{background:#ffffff0f;border:1px solid #ffffff2e;border-radius:14px;grid-template-columns:repeat(3,minmax(100px,1fr));min-width:min(540px,50vw);display:grid;overflow:hidden}.admin-stats article{border-right:1px solid #ffffff26;gap:2px;padding:16px 18px;display:grid}.admin-stats article:last-child{border-right:0}.admin-stats span{font-size:1.25rem;font-weight:900}.admin-stats small{color:#ffffff94;font-size:.7rem;font-weight:800}.tabs{border:1px solid var(--line);background:var(--paper);border-radius:13px;gap:6px;width:max-content;margin:28px 0 18px;padding:5px;display:flex}.tab{color:var(--muted);background:0 0;border:0;align-items:center;gap:9px;display:flex}.tab span{letter-spacing:.08em;font-size:.7rem}.tab[aria-pressed=true]{background:var(--navy);color:#fff;box-shadow:0 5px 14px #173f3a33}.review-layout{grid-template-columns:310px minmax(0,1fr);align-items:start;gap:16px;display:grid}.queue-pane,.review-workbench{border:1px solid var(--line);background:var(--paper);border-radius:16px;min-height:650px;box-shadow:0 8px 30px #173f3a0d}.queue-pane{padding:20px;position:sticky;top:16px}.queue-toolbar{justify-content:space-between;align-items:center;gap:10px;display:flex}.queue-toolbar h2{margin:0;font-size:1.25rem}.queue-order{background:var(--mint-soft);color:var(--green);border-radius:999px;padding:5px 9px;font-size:.7rem;font-weight:900}.queue-pane>.meta{font-size:.8rem}.queue{gap:8px;max-height:66vh;padding-right:3px;display:grid;overflow:auto}.queue-row{text-align:left;border:1px solid var(--line);min-height:auto;color:var(--ink);background:#fff;border-radius:11px;gap:3px;padding:13px;display:grid}.queue-row:hover{background:var(--mint-soft);border-color:#9bbeb0;transform:none}.queue-row.active{border-color:var(--navy);background:var(--mint-soft);box-shadow:inset 3px 0 var(--navy)}.queue-row strong{font-size:.92rem}.queue-row small{color:var(--muted)}.queue-pane .empty-state{margin-top:18px;padding:34px 14px}.review-workbench{overflow:hidden}.detail-pane{grid-template-rows:auto auto auto;grid-template-columns:minmax(0,1.18fr) minmax(320px,.82fr);gap:16px;padding:20px;display:grid}.review-head{border-bottom:1px solid var(--line);word-break:keep-all;grid-column:1/-1;padding-bottom:15px;font-size:1rem;font-weight:900}.viewer-pane{text-align:center;background:#15211f;border-radius:12px;grid-area:2/1;min-height:420px;max-height:66vh;padding:10px;overflow:auto}.viewer-pane img{transform-origin:50%;max-width:100%;transition:transform .15s}.viewer-pane iframe{background:#fff;border:0;border-radius:6px;width:100%;height:55vh}.viewer-pane #noImage{color:#fff;padding:60px 20px}.viewer-controls{background:#fffffff0;border-radius:9px;flex-wrap:wrap;justify-content:center;gap:6px;margin-top:10px;padding:8px;display:flex;position:sticky;bottom:0}.viewer-controls button{min-height:36px;padding:6px 10px;font-size:.78rem}.attempt-body{white-space:pre-wrap;background:#f1f2ed;border-radius:10px;grid-area:3/1;margin:0;padding:13px}.feedback-pane{border:1px solid var(--line);background:#fff;border-radius:13px;grid-area:2/2/4;align-self:start;padding:20px}.feedback-heading h3{margin-bottom:6px;font-size:1.3rem}.feedback-heading>p:last-child{color:var(--muted);font-size:.84rem}.item-builder{border:1px solid var(--line);background:var(--cream);border-radius:11px;gap:12px;margin:18px 0;padding:15px;display:grid}.chips{flex-wrap:wrap;gap:7px;display:flex}.chip{border:1px solid var(--line-strong);min-height:38px;color:var(--ink);background:#fff;border-radius:999px;padding:7px 11px;font-size:.8rem}.chip[aria-checked=true]{border-color:var(--navy);background:var(--navy);color:#fff}.check{grid-template-columns:auto 1fr;align-items:center;gap:8px;display:flex}.check input{width:18px;min-height:18px}.item-list{gap:7px;padding:0;list-style:none;display:grid}.item-list li{background:var(--mint-soft);border-radius:9px;justify-content:space-between;align-items:center;gap:8px;padding:10px;display:flex}.item-list .thumb-remove{flex:none;position:static}.decision-guide{color:var(--muted);text-align:right;margin:14px 0 7px;font-size:.78rem}.decide{gap:8px;display:flex}.decide button{flex:1}.revision-action{background:var(--coral)}.revision-action:hover:not(:disabled){background:#b84c37}#decideComplete{background:var(--green)}.no-selection{text-align:center;min-height:650px;color:var(--muted);flex-direction:column;justify-content:center;align-items:center;padding:30px;display:flex}.no-selection>span{background:var(--mint-soft);width:48px;height:48px;color:var(--green);border-radius:14px;place-items:center;margin-bottom:18px;font-size:1.4rem;display:grid}.no-selection h2{color:var(--ink);margin-bottom:8px}.section-heading{margin:38px 0 14px}.section-heading h2,.section-heading h3{margin-bottom:6px;font-size:1.55rem}.section-heading>p:last-child{color:var(--muted)}.manage-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:18px;display:grid}.manage-grid>section>h3{margin-bottom:10px}.manage-grid .panel{height:calc(100% - 42px);margin:0}.pager{justify-content:center;align-items:center;gap:12px;margin:22px 0;display:flex}.sr-only{clip:rect(0,0,0,0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}@media (width<=1180px){.detail-pane{grid-template-columns:1fr}.review-head,.viewer-pane,.attempt-body,.feedback-pane{grid-area:auto/1}.viewer-pane{max-height:none}.feedback-pane{align-self:stretch}}@media (width<=900px){.portal{padding-inline:20px}.auth-card{grid-template-columns:1fr}.auth-intro{min-height:0;padding:38px}.auth-intro h1{font-size:2.35rem}.auth-form{padding:38px}.workspace-header{display:block}.admin-stats{min-width:0;margin-top:22px}.review-layout{grid-template-columns:1fr}.queue-pane{min-height:0;position:static}.queue{max-height:260px}.review-workbench,.no-selection{min-height:500px}.manage-grid,.student-hero{grid-template-columns:1fr}.summary{min-height:80px}}@media (width<=640px){body:before{height:250px}.portal{padding:12px 14px 92px}.portal-header{min-height:64px;margin-bottom:18px}.brand small{font-size:.56rem}.brand-mark{width:32px;height:32px}.header-action{min-height:38px;padding:7px 10px;font-size:.78rem}.auth-card{border-radius:14px}.auth-intro{padding:28px 24px}.auth-illustration{display:none}.auth-intro h1{font-size:1.9rem}.auth-intro>p:not(.portal-kicker){font-size:.9rem}.auth-principle{margin-top:24px}.auth-form{padding:28px 24px}.auth-form h2{font-size:1.35rem}.student-hero{border-radius:16px;gap:20px;padding:30px 24px}.student-hero h1{font-size:1.78rem}.student-status-nav{grid-template-columns:repeat(2,1fr);margin-bottom:28px}.student-status-nav a:nth-child(2){border-right:0}.student-status-nav a:nth-child(-n+2){border-bottom:1px solid var(--line)}.group{margin:30px 0;scroll-margin-top:70px}.group-priority{padding:18px 14px}.cards{grid-template-columns:1fr}.card{padding:18px}.mobile-action-bar{z-index:15;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#102d2af5;border:1px solid #fff3;border-radius:14px;grid-template-columns:repeat(3,1fr);padding:5px;display:grid;position:fixed;bottom:10px;left:10px;right:10px;box-shadow:0 12px 34px #0000003d}.mobile-action-bar a{color:#fff;border-right:1px solid #ffffff24;place-items:center;min-height:44px;font-size:.78rem;font-weight:900;text-decoration:none;display:grid}.mobile-action-bar a:last-child{border-right:0}.workspace-header h1{font-size:2rem}.workspace-header>div:first-child>p:last-child{font-size:.88rem}.admin-stats{background:var(--navy);border-color:#fff3;grid-template-columns:1fr 1fr}.admin-stats article{padding:12px}.admin-stats article:nth-child(2){border-right:0}.admin-stats article:last-child{display:none}.tabs{width:100%}.tab{flex:1;justify-content:center;padding-inline:8px;font-size:.78rem}.queue-pane,.review-workbench{border-radius:13px}.detail-pane{padding:12px}.viewer-pane{min-height:280px}.feedback-pane{padding:15px}.decide{z-index:2;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#ffffffeb;border-radius:12px;padding:6px;position:sticky;bottom:4px;box-shadow:0 -5px 20px #173f3a14}.no-selection{min-height:360px}.panel{padding:20px}.viewer-box iframe{width:100%;height:70vh}}@media (prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important;animation:none!important}}
