/* 학생 뷰어: 세로 스크롤 없는 한 화면 · 슬라이드 최대 */
body.vmode{overflow:hidden}
body.vmode main{padding:0!important}
body.vmode .linkbar{display:none}
body.vmode #top{padding:3px 10px}
body.vmode #top .btn,body.vmode #top select{min-height:38px}
body.focus #top,body.focus #tabbar,body.focus .vov,body.focus #previewband{display:none!important}
.vwrap{position:relative;grid-template-columns:minmax(0,1fr);min-height:0;overflow:hidden}
.vwrap.dock:not(.collapsed){grid-template-columns:272px minmax(0,1fr)}
.vwrap .lside{position:absolute;left:0;top:0;bottom:0;width:min(86vw,300px);height:auto;z-index:40;box-shadow:8px 0 24px rgba(0,0,0,.25);transform:none;animation:none}
.vwrap.dock .lside{position:relative;width:auto;box-shadow:none}
.vwrap .vmain{position:relative;min-width:0;min-height:0;padding:0;background:var(--stage);overflow:hidden}
#stgbox{position:absolute;inset:0;display:grid;place-items:center;overflow:hidden}
#stgbox .stack{position:absolute;inset:0;overflow:auto;padding:12px;display:grid;gap:12px;align-content:start;justify-items:center}
#stgbox .scard{width:min(100%,900px)}
.vov{position:absolute;left:0;right:0;z-index:20;display:flex;gap:6px;align-items:center;padding:6px 10px;color:#fff;transition:opacity .25s;min-width:0}
.vov.top{top:0;background:linear-gradient(rgba(0,0,0,.62),transparent)}
.vov.bot{bottom:3px;background:linear-gradient(transparent,rgba(0,0,0,.62))}
.vov .btn.ghost,.vov .follow{background:rgba(20,20,20,.55);color:#fff;border-color:rgba(255,255,255,.25)}
.vov .btn.on{background:var(--accent);border-color:var(--accent)}
.vov kbd{background:#222;color:#eee;border-color:#555}
.vov .ttl{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:36vw;text-shadow:0 1px 3px #000}
.vmain.idle .vov{opacity:0;pointer-events:none}
.progress.thin{position:absolute;left:0;right:0;bottom:0;height:3px;z-index:21;background:rgba(255,255,255,.15)}
#vaway{position:absolute;right:10px;bottom:56px;z-index:22}
.vmain.pt{display:flex;flex-direction:column}
.vmain.pt>#stgbox,.vmain.pt>.vov{position:relative;inset:auto}
.vmain.pt>.vov.top{order:1}.vmain.pt>#stgbox{order:2;flex:none}.vmain.pt>.vov.bot{order:3}
.vmain.pt>#stgbox:has(.stack){flex:1;min-height:0}
.vmain.pt .vov{opacity:1!important;pointer-events:auto!important;background:var(--panel);color:var(--ink);flex-wrap:wrap}
.vmain.pt .vov .btn.ghost,.vmain.pt .vov .follow{background:var(--panel);color:var(--ink);border-color:var(--line)}
.vmain.pt .vov .ttl{text-shadow:none;max-width:60vw}
.stchip{border-color:var(--warn);color:var(--warn);min-height:32px;cursor:pointer}.stchip.bad{border-color:var(--bad);color:var(--bad)}
.stpop{position:fixed;z-index:400;width:280px;background:var(--panel);border:1px solid var(--line);box-shadow:0 8px 24px rgba(0,0,0,.18);padding:12px 14px;font-size:14px}
.nb{font-size:var(--nfs,16px)}
#pnotes .nb.ro{overflow:auto}
.nfsg{display:inline-flex;align-items:center;gap:2px}
@media(max-width:640px){body.vmode #top .logo{display:none}body.vmode #top .cursw{max-width:120px}body.vmode #top .toprow{gap:4px}body.vmode #top .btn.icon{min-width:38px;padding:4px}}
@media (orientation:landscape) and (max-height:500px){body.stu #tabbar{display:none!important}body.vmode #top{padding:2px 8px}body.vmode #top .btn,body.vmode #top select{min-height:34px}}
@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}

/* M2-F22-T03 빠른 수정 */
#quickedit-btn{position:fixed;right:18px;bottom:84px;z-index:590}
#quickedit{max-width:min(92vw,560px)}#quickedit label{display:block;margin:8px 0}#quickedit .qe-field{display:block;width:100%;box-sizing:border-box}
