/* Weekly class timetable as a vertical 3-column list (work/class-merge-20261017; phase 1 colours/rows: work/home-homework-timetable-20261017).
   Scoped to .vts / .vts-panel; the original grid is kept but hidden. No emoji, no beige. */
html body .student-service-panel .weekly-grid.vts-src[hidden]{display:none!important}
/* Student home: original panel stays in the narrow column (hidden); the list lives in a full-width card under both columns. */
html body #student-home .student-service-panel.vts-home-hidden{display:none!important}
#student-home .vts-card{grid-column:1/-1;flex:1 0 100%;width:100%;max-width:none;box-sizing:border-box;min-width:0;margin:0 0 28px;padding:20px 22px;
 background:var(--se-card,var(--vx-paper,#fff));border:1px solid var(--se-line,var(--vx-line,#dde2ea));border-radius:18px;color:var(--se-ink,var(--vx-ink,#1f2f45))}
#student-home .vts-card>h2{font-size:18px!important;line-height:1.35;margin:0 0 3px!important}
#student-home .vts-card>.vts-card-sub{font-size:12.5px!important;line-height:1.5;margin:0 0 12px!important;color:var(--se-muted,var(--vx-muted,#5b6879))}
#student-home .vts-card .vts{max-width:960px}
@media (max-width:480px){#student-home .vts-card{padding:14px 12px;border-radius:14px}}
.vts{
 --vts-card:var(--vx-paper,#fff);--vts-ink:var(--vx-ink,#1f2f45);--vts-muted:var(--vx-muted,#5b6879);--vts-line:var(--vx-line,#dde2ea);
 --vts-head:#f2f5fa;--vts-weekend:#e9f0fc;--vts-accent:#2f5fd0;--vts-accent-ink:#fff;--vts-zoom:#0f7a6e;--vts-gold:var(--ca-gold,#e0b45a);--vts-navy:#14213d;--vts-off-bg:#eef1f5;--vts-off-ink:#7c8899;
 max-width:none;margin:4px 0 2px;color:var(--vts-ink);font-variant-numeric:tabular-nums;container:vts/inline-size}
html[data-appearance=dark] .vts{--vts-off-bg:#2a3a52;--vts-off-ink:#9aa9bd;--vts-card:#1d2a3c;--vts-ink:#edf1f7;--vts-muted:#b3c0d2;--vts-line:#3d4d63;--vts-head:#23324a;--vts-weekend:#22385a;--vts-accent:#8fb0ff;--vts-accent-ink:#0f1a2b;--vts-zoom:#5fd0c0}
.vts-list{display:grid;grid-template-columns:minmax(64px,92px) minmax(0,1fr) minmax(128px,236px);border:1px solid var(--vts-line);border-radius:12px;overflow:hidden;background:var(--vts-card)}
.vts-dayrow{grid-column:1/-1;background:var(--vts-head);border-top:1px solid var(--vts-line)}
.vts-dayrow:first-child{border-top:0}
.vts-dayrow.is-weekend{background:var(--vts-weekend)}
.vts-dayname{display:flex;align-items:baseline;flex-wrap:wrap;gap:4px 10px;margin:0!important;padding:9px 14px!important;border:0!important;font-size:14.5px!important;font-weight:800;line-height:1.3}
.vts-date{font-size:12.5px;font-weight:600;color:var(--vts-muted)}
.vts-today{align-self:center;font-size:11px;font-weight:800;line-height:1;padding:4px 8px;border-radius:999px;background:var(--vts-accent);color:var(--vts-accent-ink)}
.vts-dayrow.is-today .vts-dayname>span:first-child{color:var(--vts-accent)}
.vts-row{display:contents}
.vts-row>*{border-top:1px solid var(--vts-line);min-width:0;box-sizing:border-box}
.vts-time{display:flex;flex-direction:column;justify-content:center;gap:1px;padding:12px 6px 12px 14px;font-size:12.5px;color:var(--vts-muted);line-height:1.3}
.vts-start{font-size:13.5px;font-weight:700;color:var(--vts-ink)}
.vts-info{display:flex;flex-direction:column;justify-content:center;gap:2px;padding:12px 10px;font-size:13px;line-height:1.4;word-break:keep-all;overflow-wrap:anywhere}
.vts-teacher{font-size:12.5px;font-weight:700;color:var(--vts-muted)}
.vts-title{font-size:13.5px;font-weight:600;color:var(--vts-ink)}
.vts-class{font-size:12px;color:var(--vts-muted)}
.vts-zoom{align-self:flex-start;font-size:12px;font-weight:600;color:var(--vts-zoom);text-decoration:underline;text-underline-offset:2px}
.vts-action{display:flex;flex-direction:column;align-items:stretch;justify-content:center;gap:6px;padding:10px 12px 10px 4px}
.vts-go{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;min-height:52px;width:100%;box-sizing:border-box;padding:8px 12px;border-radius:12px;border:0;
 background:var(--vts-accent);color:var(--vts-accent-ink);font:inherit;text-align:center;text-decoration:none;cursor:pointer;box-shadow:0 1px 2px rgba(20,40,80,.18)}
.vts-go b{font-size:16px;font-weight:800;line-height:1.25}
.vts-go small{font-size:11.5px;font-weight:600;line-height:1.3;opacity:.9;max-width:100%;overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;word-break:keep-all}
.vts-go:hover{filter:brightness(1.06)}
.vts-go:focus-visible{outline:3px solid color-mix(in srgb,var(--vts-accent) 45%,transparent);outline-offset:2px}
.vts-go.is-zoom{background:var(--vts-zoom)}
.vts-go.is-open{background:transparent;color:var(--vts-accent);border:2px solid var(--vts-accent);box-shadow:none}
.vts-go.is-wait,.vts-go:disabled{background:var(--vts-head);color:var(--vts-muted);box-shadow:none;cursor:default;filter:none}
.vts-main{display:flex;flex-wrap:wrap;align-items:center;gap:6px 8px;width:100%}
/* Labels never break inside a word; two buttons that do not fit side by side stack instead. */
.vts-main>.vts-go{flex:1 1 128px;min-width:0}
.vts-main>.vts-go b{white-space:nowrap}
.vts-del{flex:0 0 auto;align-self:center;font:inherit;font-size:12px;font-weight:600;padding:4px 4px;border:0;background:transparent;color:var(--vts-off-ink);cursor:pointer;min-height:28px;text-decoration:underline;text-underline-offset:2px}
/* Middle of the row (students): teacher/class text, then this row's assignments and homework. */
.vts-mid{display:flex;flex-wrap:wrap;align-items:center;gap:4px 14px;padding:8px 12px 8px 10px;min-width:0}
.vts-mid>.vts-info{flex:0 1 200px;min-width:120px;padding:4px 0}
.vts-tasklist{flex:1 1 280px;min-width:0;list-style:none;margin:0;padding:2px 0;display:flex;flex-direction:column;gap:5px}
.vts-task{display:flex;align-items:center;gap:10px;margin:0;padding:6px 8px 6px 11px;border:1px solid var(--vts-line);border-radius:10px;background:var(--vts-card);min-width:0}
.vts-task-text{flex:1 1 auto;min-width:0;display:flex;flex-direction:column;gap:2px}
.vts-task-name{font-size:12.5px;font-weight:700;line-height:1.35;color:var(--vts-ink);word-break:keep-all;overflow-wrap:break-word;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.vts-task-meta{display:flex;flex-wrap:wrap;align-items:center;gap:2px 8px;font-size:11.5px;line-height:1.3;color:var(--vts-muted)}
.vts-task-due{white-space:nowrap}
.vts-task-state{white-space:nowrap;font-weight:800}
.vts-task-state.is-todo{color:var(--vts-ink)}
.vts-task-state.is-done{color:#1f7a52}
.vts-task-state.is-done::before{content:"";display:inline-block;width:7px;height:4px;margin:0 5px 2px 0;border:solid currentColor;border-width:0 0 1.6px 1.6px;transform:rotate(-45deg)}
.vts-task.is-done .vts-task-name{color:var(--vts-muted)}
.vts-task-open{flex:0 0 auto;min-height:32px;padding:4px 12px;border-radius:9px;font:inherit;font-size:12.5px;font-weight:800;white-space:nowrap;cursor:pointer}
.vts-wait{margin:0!important;font-size:12px!important;color:var(--vts-off-ink);text-align:center}
.vts-next-day{margin:8px 0 0!important;text-align:center;font-size:13px;font-weight:700;color:var(--vts-ink)}
.vts-del:hover,.vts-del:focus-visible{color:#b42343;border-color:#e4a5b4}
.vts-empty{margin:0!important;padding:18px;border:1px dashed var(--vts-line);border-radius:12px;text-align:center;color:var(--vts-muted);font-size:13.5px}
/* Narrow card (any screen): never squeeze three columns. Row = small time + teacher/class on top, big button below. */
@container vts (max-width:479px){
 .vts-main{flex-wrap:wrap}
 .vts-list{display:block}
 .vts-row{display:grid;grid-template-columns:minmax(80px,auto) minmax(0,1fr);grid-template-areas:"time info" "act act";border-top:1px solid var(--vts-line)}
 .vts-row>*{border-top:0}
 .vts-time{grid-area:time;justify-content:flex-start;padding:11px 4px 4px 12px}
 .vts-mid{grid-area:info;padding:11px 12px 4px 4px;align-items:flex-start}
 .vts-mid>.vts-info{flex:1 1 100%;padding:0}
 .vts-tasklist{flex:1 1 100%}
 .vts-action{grid-area:act;padding:6px 12px 12px}
 .vts-go{min-height:48px;border-radius:10px}
 .vts-dayname{padding:8px 12px!important}
}
/* Teacher add form in the same visual language. */
.vts-panel #scheduleForm{display:flex;flex-wrap:wrap;align-items:end;gap:8px 10px;margin-top:14px;padding:12px;border:1px dashed var(--vx-line,#cfd6e1);border-radius:12px;max-width:820px;box-sizing:border-box}
.vts-panel #scheduleForm label{display:flex;flex-direction:column;gap:3px;font-size:12px;color:var(--vx-muted,#5b6879)}
.vts-panel #scheduleForm :is(input,select){min-height:36px;box-sizing:border-box}
.vts-panel #scheduleForm>button{min-height:36px}
@media (max-width:600px){.vts-panel #scheduleForm{display:grid;grid-template-columns:repeat(2,minmax(0,1fr))}.vts-panel #scheduleForm>select{grid-column:1/-1}.vts-panel #scheduleForm :is(input,select){width:100%;max-width:none}.vts-panel #scheduleForm>:is(input,button){grid-column:1/-1}}
/* Site-wide button skins (vt-ds, student home #ids) must not repaint the timetable buttons.
   :is(.vts,#vts-boost#vts-boost) matches .vts but carries two-id specificity. */
html body :is(.vts,#vts-boost#vts-boost) .vts-go{background:var(--vts-gold)!important;color:#14213d!important;border:2px solid var(--vts-gold)!important;box-shadow:0 1px 2px rgba(20,33,61,.18)!important;min-height:48px;filter:none!important}
html body :is(.vts,#vts-boost#vts-boost) .vts-go.is-zoom{background:var(--vts-gold)!important}
html body :is(.vts,#vts-boost#vts-boost) .vts-go:is(.is-open,.is-outline){background:transparent!important;color:var(--vts-ink)!important;border:2px solid var(--vts-gold)!important;box-shadow:none!important}
html body :is(.vts,#vts-boost#vts-boost) .vts-go:is(.is-wait,:disabled){background:var(--vts-off-bg)!important;color:var(--vts-off-ink)!important;border-color:transparent!important;box-shadow:none!important}
html body :is(.vts,#vts-boost#vts-boost) .vts-del{background:transparent!important;color:var(--vts-off-ink)!important;border:0!important;box-shadow:none!important;min-height:28px!important;padding:4px!important}
html body :is(.vts,#vts-boost#vts-boost) .vts-task-open{background:transparent!important;color:var(--vts-ink)!important;border:1.5px solid var(--vts-gold)!important;box-shadow:none!important;min-height:32px!important}
html body :is(.vts,#vts-boost#vts-boost) .vts-task:not(.is-done) .vts-task-open{background:var(--vts-gold)!important;color:#14213d!important}
/* ---------- Staff: today on a compact 09:00–22:00 time axis ---------- */
.vts-tl-box{--vts-tl-gutter:52px;--vts-live:#c0233f}
html[data-appearance=dark] .vts-tl-box{--vts-live:#ff8fa3}
.vts-tl{position:relative;margin:10px 0 6px}
.vts-tl-hour{position:absolute;left:0;right:0;height:0;border-top:1px solid var(--vts-line)}
.vts-tl-hour>span{position:absolute;left:0;top:-8px;width:44px;box-sizing:border-box;padding-right:6px;text-align:right;font-size:11px;font-weight:700;line-height:16px;color:var(--vts-muted);background:var(--vts-card)}
.vts-tl-item{position:absolute;box-sizing:border-box;display:flex;align-items:center;gap:8px;min-width:0;padding:0 5px 0 9px;border-radius:7px;border:1px solid color-mix(in srgb,var(--vts-gold) 45%,var(--vts-line));border-left:4px solid var(--vts-gold);background:color-mix(in srgb,var(--vts-gold) 8%,var(--vts-card));overflow:hidden;font-size:12.5px;line-height:1.2;color:var(--vts-ink);z-index:1}
.vts-tl-item.is-live{border-left-color:var(--vts-live);box-shadow:0 0 0 1px color-mix(in srgb,var(--vts-live) 35%,transparent)}
.vts-tl-item.is-ended{opacity:.6}
.vts-tl-text{flex:1 1 auto;min-width:0;display:flex;align-items:baseline;gap:7px;white-space:nowrap;overflow:hidden}
.vts-tl-time{flex:0 0 auto;font-weight:800;font-variant-numeric:tabular-nums}
.vts-tl-title{flex:0 1 auto;min-width:0;font-weight:700;overflow:hidden;text-overflow:ellipsis}
.vts-tl-class,.vts-tl-teacher{flex:0 1 auto;min-width:0;font-size:11.5px;color:var(--vts-muted);overflow:hidden;text-overflow:ellipsis}
.vts-tl-acts{flex:0 0 auto;display:flex;gap:4px}
.vts-tl-btn{display:inline-flex;align-items:center;min-height:20px;box-sizing:border-box;padding:0 8px;border-radius:6px;font:inherit;font-size:11.5px;font-weight:800;line-height:18px;white-space:nowrap;text-decoration:none;cursor:pointer}
.vts-tl-now{position:absolute;left:var(--vts-tl-gutter);right:0;height:0;border-top:2px solid var(--vts-live);z-index:3;pointer-events:none}
.vts-tl-now>span{position:absolute;left:-48px;top:-9px;padding:1px 4px;border-radius:4px;font-size:10.5px;font-weight:800;line-height:14px;color:#fff;background:var(--vts-live)}
@container vts (max-width:460px){.vts-tl-class,.vts-tl-teacher{display:none}}
@container vts (max-width:330px){.vts-tl-box{--vts-tl-gutter:42px}.vts-tl-hour>span{width:36px}.vts-tl-now>span{display:none}}
html body :is(.vts,#vts-boost#vts-boost) .vts-tl-btn.is-zoom{background:var(--vts-gold)!important;color:#14213d!important;border:1px solid var(--vts-gold)!important;box-shadow:none!important;min-height:20px!important}
html body :is(.vts,#vts-boost#vts-boost) .vts-tl-btn.is-open{background:transparent!important;color:var(--vts-navy)!important;border:1px solid var(--vts-navy)!important;box-shadow:none!important;min-height:20px!important}
html[data-appearance=dark] body :is(.vts,#vts-boost#vts-boost) .vts-tl-btn.is-open{color:#dbe6f7!important;border-color:#dbe6f7!important}
/* Staff first screen: the axis replaces the short list in staff-home's '오늘 내 수업' card (or sits in its own card). */
html body #staff-home .sh-classes.vts-has-tl>:not(header):not(.vts){display:none!important}
html body #staff-home .sh-classes.vts-has-tl>.vts{width:100%;margin:0}
@media print{.vts-del{display:none}}

/* Exact tasks remain inside their scheduled class row. */
.vts .vts-row{grid-template-columns:80px minmax(0,1fr) auto;align-items:start}.vts .vts-mid{display:flex;flex-direction:column;align-items:stretch;gap:12px;min-width:0}.vts .vts-info{min-width:0}.vts .vts-tasklist{display:flex;flex-wrap:wrap;gap:8px;width:100%;padding:0;margin:0;list-style:none}.vts .vts-task{display:block;flex:0 1 auto;min-width:0;max-width:100%;padding:0;border:0}.vts .vts-task-open{display:flex;align-items:center;gap:10px;width:auto;max-width:100%;padding:9px 12px;border:1px solid #d9e1ec;border-radius:9px;background:#fff;color:#20314b;text-align:left;font-size:13px;white-space:normal}.vts .vts-task-name{overflow-wrap:break-word}.vts .vts-task-state{white-space:nowrap;font-size:11px;color:#63748c}.vts .is-done .vts-task-open{background:#eff7f2}.vts .vts-main{gap:6px}.vts .vts-go{min-height:38px;padding:9px 12px;font-size:13px}.vts .vts-action{min-width:0}.vts .vts-dayrow{margin-top:16px}
@media(max-width:600px){.vts .vts-row{grid-template-columns:62px minmax(0,1fr)}.vts .vts-action{grid-column:2}.vts .vts-main{display:flex;flex-wrap:wrap}.vts .vts-tasklist{gap:6px}}

/* Compact schedule: flex basis describes width, never row height. */
html body .vts .vts-mid{display:flex;flex-direction:row;align-items:center;gap:6px 16px;padding:10px 12px;min-height:0;height:auto}
html body .vts .vts-mid>.vts-info{flex:0 1 190px;min-width:120px;padding:0}
html body .vts .vts-tasklist{flex:1 1 260px;display:flex;flex-direction:row;flex-wrap:wrap;align-items:center;justify-content:flex-start;gap:6px;width:auto;min-height:0}
html body .vts .vts-tasklist>button{flex:0 1 auto;width:auto;min-height:32px;padding:7px 10px;font-size:12px;line-height:1.4;margin:0}
html body .vts .vts-action{flex-direction:row;flex-wrap:wrap;align-items:center;gap:6px;padding:10px 12px;min-height:0}
html body #student-home .vts-card .vts{max-width:none}
@media(max-width:600px){html body .vts .vts-mid>.vts-info{flex-basis:100%}html body .vts .vts-tasklist{flex-basis:100%}}
