/* Unified lecture deck viewer. Generated decks share this one viewer. */
:root{--deck-rail-w:188px;--deck-nav-h:44px;--deck-mobile-rail-h:112px;--deck-bg:#000;--deck-ui:#0b1220;--deck-text:#cfe0f2;--deck-active:#5b9dff;--deck-safe:10px}
*{box-sizing:border-box;-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;text-size-adjust:100%}html,body{margin:0;width:100%;height:100%;overflow:hidden;background:var(--deck-bg);font-family:'Pretendard',-apple-system,"Apple SD Gothic Neo","Noto Sans KR",sans-serif;-webkit-text-size-adjust:100%;text-size-adjust:100%}.deck-page{background:#000}.deck-root{position:fixed;inset:0;background:#000;color:#111}.deck-view-stage{position:fixed;left:var(--deck-rail-w);right:0;top:0;bottom:var(--deck-nav-h);display:block;overflow:hidden;background:#000}.deck-canvas{position:absolute;left:0;top:0;width:1280px;height:720px;transform-origin:top left;background:#fff;flex:none;container-type:size}.deck-slides{display:none}.deck-canvas>.slide{position:absolute!important;inset:0!important;width:1280px!important;height:720px!important;margin:0!important;box-sizing:border-box!important;overflow:hidden!important;display:none!important;opacity:1!important;visibility:visible!important;pointer-events:auto!important;transform:none!important}.deck-canvas>.slide.deck-active{display:flex!important}.deck-canvas>.slide.deck-active.full{display:block!important}.deck-canvas>.slide.deck-active.split{display:grid!important}.deck-canvas>.slide.deck-active>section{width:100%;height:100%}.deck-rail{position:fixed;left:0;top:0;bottom:0;width:var(--deck-rail-w);padding:12px 0;background:var(--deck-ui);overflow-y:auto;overflow-x:hidden;z-index:20}.deck-rail::-webkit-scrollbar{width:7px;height:7px}.deck-rail::-webkit-scrollbar-thumb{background:#2a3a52;border-radius:4px}.deck-thumb{position:relative;width:160px;height:90px;margin:7px auto;border:2px solid transparent;border-radius:5px;background:#fff;overflow:hidden;cursor:pointer;flex:none;text-align:start;font:inherit;letter-spacing:normal;word-spacing:normal;text-transform:none;text-indent:0;color:inherit}.deck-thumb.deck-active{border-color:var(--deck-active)}.deck-thumb-num{position:absolute;left:5px;top:3px;z-index:3;font-size:11px;font-weight:800;color:#fff;text-shadow:0 1px 2px rgba(0,0,0,.8)}.deck-thumb-frame{position:absolute;left:0;top:0;width:1280px;height:720px;transform:scale(.125);transform-origin:top left;pointer-events:none;background:#fff;container-type:size}.deck-thumb-frame .slide{display:flex!important;position:absolute!important;inset:0!important;width:1280px!important;height:720px!important;margin:0!important;box-sizing:border-box!important;transform:none!important;overflow:hidden!important;opacity:1!important;visibility:visible!important}.deck-thumb-frame .slide>section{width:100%;height:100%}.deck-thumb-frame .slide.full{display:block!important}.deck-thumb-frame .slide.split{display:grid!important}.deck-nav{position:fixed;left:var(--deck-rail-w);right:0;bottom:0;height:var(--deck-nav-h);display:flex;align-items:center;justify-content:center;gap:16px;background:var(--deck-ui);color:var(--deck-text);z-index:20}.deck-nav button{background:transparent;border:0;color:var(--deck-text);font-size:20px;line-height:1;padding:2px 12px;cursor:pointer}.deck-nav .deck-count{font-weight:800;min-width:76px;text-align:center}.deck-nav .deck-full{position:fixed;right:16px;bottom:12px;font-size:12px;color:#8197af;cursor:pointer}.deck-root.deck-full .deck-rail,.deck-root.deck-full .deck-nav{display:none}.deck-root.deck-full .deck-view-stage{left:0;bottom:0}@media screen and (max-width:900px), screen and (max-aspect-ratio:4/5){:root{--deck-mobile-rail-h:112px}.deck-view-stage{left:0;right:0;top:0;bottom:calc(var(--deck-mobile-rail-h) + var(--deck-nav-h));display:block;padding-top:0}.deck-rail{left:0;right:0;top:auto;bottom:var(--deck-nav-h);width:100%;height:var(--deck-mobile-rail-h);display:flex;gap:8px;align-items:center;overflow-x:auto;overflow-y:hidden;padding:8px 10px}.deck-thumb{width:144px;height:81px;margin:0}.deck-thumb-frame{transform:scale(.1125)}.deck-nav{left:0;height:var(--deck-nav-h)}.deck-nav .deck-full{right:10px;bottom:12px}}

/* PDF export button + print layout (added 2026-07-13) */
.deck-nav .deck-pdf{position:fixed;left:calc(var(--deck-rail-w) + 16px);bottom:11px;font-size:12px;font-weight:700;color:#8197af;background:transparent;border:1px solid #33465f;border-radius:6px;padding:4px 10px;cursor:pointer;line-height:1;z-index:21}
.deck-nav .deck-pdf:hover{color:#cfe0f2;border-color:#5b9dff}
.deck-root.deck-full .deck-pdf{display:none}
.deck-print{display:none}
@media screen and (max-width:900px), screen and (max-aspect-ratio:4/5){.deck-nav .deck-pdf{left:10px}}
/* Print straight from the LIVE slides — every .slide becomes one 1280x720 page.
   No JS clone step, so headless Chrome --print-to-pdf produces the exact same
   pages as the screen (and the P key just calls window.print()). */
@media print{
  html,body{width:auto!important;height:auto!important;overflow:visible!important;background:#fff!important}
  .deck-rail,.deck-nav{display:none!important}
  .deck-root{position:static!important;inset:auto!important}
  .deck-view-stage{position:static!important;left:0!important;top:0!important;right:auto!important;bottom:auto!important;display:block!important;overflow:visible!important;background:#fff!important;place-items:stretch!important}
  .deck-canvas{position:static!important;transform:none!important;width:1280px!important;height:auto!important;display:block!important;background:#fff!important}
  @page{size:1280px 720px;margin:0}
  .deck-canvas>.slide{position:relative!important;inset:auto!important;left:auto!important;top:auto!important;width:1280px!important;height:720px!important;margin:0!important;display:flex!important;overflow:hidden!important;transform:none!important;opacity:1!important;visibility:visible!important;-webkit-print-color-adjust:exact;print-color-adjust:exact}
  /* break BEFORE each slide except the first — avoids the trailing blank page a
     page-break-after on the last slide would create (content == exact page multiple). */
  .deck-canvas>.slide + .slide{page-break-before:always;break-before:page}
  .deck-canvas>.slide.full{display:block!important}
  .deck-canvas>.slide.split{display:grid!important}
  .deck-canvas>.slide:last-child{break-after:avoid-page}
  .deck-canvas>.slide>section{width:100%!important;height:100%!important}
  .deck-canvas .slide *{ -webkit-print-color-adjust:exact;print-color-adjust:exact }
  .deck-print{display:none!important}
  /* Chrome의 print-to-PDF는 box-shadow를 부드러운 그림자가 아니라
     딱딱한 회색 테두리로 그린다. 인쇄에서만 끄고 화면은 그대로 둔다. */
  .deck-canvas .slide *{box-shadow:none!important}
}
