/* 메뉴 drawer (dist/student-menu.js, 2026-11-05): from the right, about two thirds of the screen (264-560 px: 2/3 on
   tablets too, capped only on wide desktops; at least 264 px so every label stays on one line beside 준비 중; review
   2026-11-05), over a
   dimmed page; the 화면 색 tokens (--t-*) colour it in every colour set, 밤 included. Its rows are 44 px+ targets; the
   status line keeps its height, so a 준비 중 note moves nothing. Reduced motion: no slide, no fade. */
.student-menu-layer{position:fixed;inset:0;z-index:60}
.student-menu-layer[hidden]{display:none}
.student-menu-scrim{position:absolute;inset:0;background:color-mix(in srgb,var(--t-ink) 42%,transparent);opacity:0;transition:opacity 260ms ease}
:root[data-theme="dark"] .student-menu-scrim{background:color-mix(in srgb,var(--t-bg) 72%,transparent)}
.student-menu{position:absolute;top:0;right:0;bottom:0;box-sizing:border-box;display:flex;flex-direction:column;gap:6px;width:clamp(264px,66.667vw,560px);max-width:100vw;padding:max(14px,env(safe-area-inset-top,0px)) max(16px,env(safe-area-inset-right,0px)) max(14px,env(safe-area-inset-bottom,0px)) 16px;overflow-y:auto;overscroll-behavior:contain;border-left:1px solid var(--t-line);border-radius:20px 0 0 20px;background:var(--t-card);color:var(--t-ink);box-shadow:-10px 0 28px color-mix(in srgb,var(--t-ink) 18%,transparent);transform:translateX(105%);transition:transform 260ms cubic-bezier(.2,.8,.2,1);touch-action:pan-y}
.student-menu-layer[data-open="true"] .student-menu-scrim{opacity:1}
.student-menu-layer[data-open="true"] .student-menu{transform:translateX(0)}
.student-menu-head{display:flex;align-items:center;gap:8px;min-height:44px}
.student-menu-title{flex:1 1 auto;margin:0;font-size:20px;line-height:28px;font-weight:800;letter-spacing:-.4px;color:var(--t-ink)}
.student-menu-close{display:grid;place-items:center;flex:0 0 44px;width:44px;height:44px;margin:0 -6px 0 0;padding:0;border:0;border-radius:12px;background:transparent;color:var(--t-muted);cursor:pointer}
.student-menu-close:hover{background:var(--t-accent-soft);filter:none}
.student-menu-lead{margin:0 0 6px;color:var(--t-muted);font-size:13px;line-height:1.5;word-break:keep-all}
.student-menu-list{display:flex;flex-direction:column;gap:8px;margin:0;padding:0;list-style:none}
.student-menu-item{display:flex;align-items:center;gap:8px;box-sizing:border-box;width:100%;min-height:56px;margin:0;padding:8px 10px 8px 12px;border:1px solid var(--t-line);border-radius:14px;background:var(--t-surface);color:var(--t-ink);font:inherit;text-align:left;cursor:pointer}
.student-menu-item:hover{filter:none}
.student-menu-item-icon{display:grid;place-items:center;flex:0 0 32px;width:32px;height:32px;border-radius:10px;background:var(--t-accent-soft);color:var(--t-primary)}
.student-menu-item-label{flex:1 1 auto;min-width:0;font-size:14px;line-height:1.35;font-weight:700;letter-spacing:-.3px;word-break:keep-all;overflow-wrap:anywhere}
.student-menu-item.is-soon .student-menu-item-icon{background:var(--t-bg);color:var(--t-muted)}
.student-menu-item.is-soon .student-menu-item-label{color:var(--t-muted)}
.student-menu-soon{flex:0 0 auto;padding:2px 6px;border-radius:999px;background:var(--t-bg);color:var(--t-muted);font-size:11px;line-height:16px;font-weight:700;white-space:nowrap;border:1px solid var(--t-line)}
.student-menu-status{min-height:20px;margin:6px 2px 0;color:var(--t-primary);font-size:13px;line-height:20px;font-weight:700;word-break:keep-all}
.student-menu-close:focus-visible,.student-menu-item:focus-visible{outline:3px solid var(--t-focus);outline-offset:2px}
@media(prefers-reduced-motion:reduce){.student-menu,.student-menu-scrim{transition:none}}
