/* 2027학년도 수능 디데이 계산기 전용 CSS (2026-10-12). 2패널(목표·기준일·공부 시간 | D-n·실시간·행) + 진행 막대(채워짐) + 일정 단계(선 채움) + D-100~D-1 + 시험 당일 시간표, 전체 화면 집중 보기. 공용 부품은 assets/v2.css */
.cs-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.1fr)}
.cs-in{padding:16px 18px 18px;min-width:0}
.cs-fields{display:grid;grid-template-columns:minmax(0,1fr);gap:14px}
.cs-fields .v2-f{min-width:0}
.cs-fields .v2-f > .v2-label{display:block}
.cs-seg{margin-top:6px;display:flex;flex-wrap:wrap}
.cs-seg button{height:auto;min-height:32px;padding:4px 10px;white-space:nowrap}
.cs-date{display:flex;gap:6px}
.cs-date input{flex:1 1 auto;min-width:0;height:var(--v2-ctl,42px);padding:0 10px;border:1px solid var(--line);border-radius:var(--radius);background:var(--paper);color:var(--ink);font-family:var(--sans);font-size:14px;font-weight:600}
.cs-date input:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.cs-date input[aria-invalid="true"]{border-color:var(--accent);color:var(--accent)}
.cs-date .v2-btn{flex:0 0 auto}
.cs-pair{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.cs-fields .v2-input:has(input[aria-invalid="true"]){border-color:var(--accent)}
.cs-help{margin:12px 0 0;font-family:var(--sans);font-size:12.5px;line-height:1.6;color:var(--muted)}
.cs-out{padding:16px 18px 18px;min-width:0;border-left:1px solid var(--soft);display:flex;flex-direction:column}
.cs-out > .v2-label{display:block;margin-bottom:6px}
.cs-out .v2-big.is-past span{color:var(--muted)}
.v2-big.is-empty span{font-size:18px;font-weight:600;color:var(--muted)}
.cs-live{display:flex;gap:8px;margin-top:10px;font-family:var(--sans)}
.cs-live[hidden]{display:none}
.cs-live span{display:flex;flex-direction:column;align-items:center;min-width:56px;padding:6px 8px;border:1px solid var(--soft);border-radius:var(--radius);background:var(--paper)}
.cs-live b{font-size:22px;font-weight:800;line-height:1.15;color:var(--ink);font-variant-numeric:tabular-nums}
.cs-live small{font-size:11px;font-weight:600;color:var(--muted)}
.cs-livenote{margin:6px 0 0;font-family:var(--sans);font-size:12px;color:var(--muted)}
.cs-livenote:empty{display:none}
.cs-rows{margin-top:12px}
.cs-rows li span{flex:0 0 auto;max-width:42%;word-break:keep-all}
.cs-out .v2-sub{word-break:keep-all}
.cs-rows li b{flex:1 1 auto;white-space:normal;text-align:right;word-break:keep-all}
.cs-foot{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-top:auto;padding-top:14px}
.cs-foot .v2-status{margin-left:auto}
/* 전체 화면 집중 보기(R46) */
.cs-out:fullscreen,.cs-out.is-full{justify-content:center;align-items:center;text-align:center;width:100%;height:100%;padding:24px;border:0;background:var(--paper)}
.cs-out.is-full{position:fixed;inset:0;z-index:1000;overflow:auto}
.cs-out:fullscreen .v2-big,.cs-out.is-full .v2-big{justify-content:center;font-size:clamp(64px,20vmin,200px)}
.cs-out:fullscreen .cs-live,.cs-out.is-full .cs-live{justify-content:center}
.cs-out:fullscreen .cs-live span,.cs-out.is-full .cs-live span{min-width:clamp(64px,12vmin,120px)}
.cs-out:fullscreen .cs-live b,.cs-out.is-full .cs-live b{font-size:clamp(24px,6vmin,56px)}
.cs-out:fullscreen .cs-rows,.cs-out.is-full .cs-rows{display:none}
.cs-out:fullscreen .cs-foot,.cs-out.is-full .cs-foot{margin-top:24px;justify-content:center}
.cs-out:fullscreen .cs-foot > :not(#csFull),.cs-out.is-full .cs-foot > :not(#csFull){display:none}
html.cs-noscroll{overflow:hidden}
/* 아래 상자들 */
.cs-box{padding:14px 18px 16px;border-top:1px solid var(--soft);min-width:0}
.cs-box > .v2-label{display:block;margin-bottom:8px}
.cs-note{margin:8px 0 0;font-family:var(--sans);font-size:12px;line-height:1.55;color:var(--muted)}
.cs-split{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr)}
.cs-split > .cs-box + .cs-box{border-left:1px solid var(--soft)}
/* 진행 막대: 기준일까지 채워짐(R45) */
.cs-track{position:relative;height:14px;margin-top:22px;border-radius:7px;background:var(--soft)}
.cs-fill{position:absolute;left:0;top:0;bottom:0;width:0;border-radius:7px;background:var(--accent);transition:width 1s cubic-bezier(.3,.7,.3,1)}
.cs-now{position:absolute;top:-8px;width:3px;height:30px;margin-left:-1.5px;border-radius:2px;background:var(--ink);box-shadow:0 0 0 2px var(--paper);transition:left 1s cubic-bezier(.3,.7,.3,1)}
.cs-tick{position:absolute;top:3px;width:8px;height:8px;margin-left:-4px;border-radius:50%;background:var(--paper);border:2px solid var(--ink);box-sizing:border-box}
.cs-ends{display:flex;justify-content:space-between;gap:8px;margin-top:8px;font-family:var(--sans);font-size:11.5px;color:var(--muted)}
/* 일정 단계: 지난 단계까지 세로선이 채워짐 */
.cs-steps{position:relative;list-style:none;margin:0;padding:0 0 0 22px;font-family:var(--sans)}
.cs-steps::before,.cs-steps::after{content:"";position:absolute;left:6px;top:10px;width:2px;bottom:10px;background:var(--soft)}
.cs-steps::after{background:var(--accent);bottom:auto;height:calc((100% - 20px) * var(--cs-done,0));transition:height .9s cubic-bezier(.3,.7,.3,1)}
.cs-steps li{position:relative;display:grid;grid-template-columns:minmax(0,1fr) auto;column-gap:10px;padding:5px 0;font-size:13px}
.cs-steps li i{position:absolute;left:-21px;top:9px;z-index:1;width:12px;height:12px;border-radius:50%;background:var(--paper);border:2px solid var(--line);box-sizing:border-box}
.cs-steps li b{grid-column:1;font-weight:600;color:var(--ink);word-break:keep-all}
.cs-steps li span{grid-column:1;font-size:12px;color:var(--muted);font-variant-numeric:tabular-nums}
.cs-steps li em{grid-column:2;grid-row:1 / span 2;align-self:center;font-style:normal;font-weight:700;font-size:12.5px;color:var(--ink);font-variant-numeric:tabular-nums;white-space:nowrap}
.cs-steps li.is-done b,.cs-steps li.is-done em{color:var(--muted);font-weight:500}
.cs-steps li.is-done i{background:var(--accent);border-color:var(--accent)}
.cs-steps li.is-now i,.cs-steps li.is-next i{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-wash)}
.cs-steps li.is-next b,.cs-steps li.is-now b{color:var(--ink);font-weight:700}
.cs-steps li.is-key b::after{content:"";display:inline-block;width:6px;height:6px;margin-left:6px;border-radius:50%;background:var(--ink);vertical-align:2px}
/* D-100~D-1 */
.cs-miles{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:6px;font-family:var(--sans)}
.cs-miles li{display:flex;flex-direction:column;align-items:center;gap:2px;padding:7px 4px;border:1px solid var(--soft);border-radius:var(--radius);background:var(--paper);text-align:center}
.cs-miles b{font-size:13px;font-weight:800;color:var(--ink);font-variant-numeric:tabular-nums}
.cs-miles span{font-size:11.5px;color:var(--ink);word-break:keep-all}
.cs-miles em{font-style:normal;font-size:11px;color:var(--muted)}
.cs-miles li.is-past{background:var(--wash)}
.cs-miles li.is-past b,.cs-miles li.is-past span{color:var(--muted)}
.cs-miles li.is-today{border-color:var(--accent);background:var(--accent-wash)}
/* 시험 당일 시간표 */
.cs-ttlabel{display:block;margin:18px 0 8px}
.cs-ttwrap{position:relative;padding-bottom:18px}
.cs-ttbar{position:relative;list-style:none;margin:0;padding:0;height:22px;border-radius:5px;background:var(--soft)}
.cs-ttbar li{position:absolute;top:0;bottom:0;border-radius:4px;background:var(--ink);opacity:.85}
.cs-ttbar li.is-in{background:var(--muted);opacity:.5}
.cs-ttbar li.is-cur{background:var(--accent);opacity:1}
.cs-ttnow{position:absolute;top:-5px;height:32px;width:2px;margin-left:-1px;background:var(--accent)}
.cs-ttnow[hidden]{display:none}
.cs-tthours{position:absolute;left:0;right:0;bottom:0;list-style:none;margin:0;padding:0;height:14px;font-family:var(--sans);font-size:10.5px;color:var(--muted)}
.cs-tthours li{position:absolute;transform:translateX(-50%);white-space:nowrap}
.cs-tthours li:first-child{transform:none}
.cs-tthours li:last-child{transform:translateX(-100%)}
.cs-ttlist{list-style:none;margin:8px 0 0;padding:0;font-family:var(--sans);font-size:12.5px}
.cs-ttlist li{display:grid;grid-template-columns:44px minmax(0,1fr) auto;gap:8px;padding:4px 0;border-top:1px solid var(--soft)}
.cs-ttlist li b{font-weight:700;color:var(--ink)}
.cs-ttlist li span{color:var(--ink);word-break:keep-all}
.cs-ttlist li em{font-style:normal;color:var(--muted);font-variant-numeric:tabular-nums;white-space:nowrap}
.cs-ttlist li.is-in span,.cs-ttlist li.is-in b{color:var(--muted)}
.cs-ttlist li.is-cur{background:var(--accent-wash)}
@media (prefers-reduced-motion:reduce){.cs-fill,.cs-now,.cs-steps::after{transition:none}}
@container v2in (max-width:300px){ .cs-pair{grid-template-columns:minmax(0,1fr)} }
@media (max-width:860px){
  .cs-split{grid-template-columns:minmax(0,1fr)}
  .cs-split > .cs-box + .cs-box{border-left:0}
}
@media (max-width:720px){
  .cs-grid{grid-template-columns:minmax(0,1fr)}
  .cs-out{order:-1;border-left:0;border-bottom:1px solid var(--soft)}
}
@media (max-width:420px){
  .cs-in,.cs-out,.cs-box{padding-left:12px;padding-right:12px}
  .cs-live{gap:5px}
  .cs-live span{min-width:0;flex:1 1 0;padding:5px 4px}
  .cs-live b{font-size:19px}
  .cs-miles{grid-template-columns:repeat(5,minmax(0,1fr));gap:4px}
  .cs-miles span{font-size:10.5px}
}
