:root{--navy:#1d4f2c;--teal:#38964e;--teal-d:#2a7a3d;--mint:#dcefe0;--soft:#eef7f0;--ink:#1d2831;--muted:#5f7079;--line:#d8e2e4;--paper:#fff;--canvas:#f5f6f4;
--amber:#a65f00;--amber-bg:#fff4dc;--amber-line:#e6b85c;--lab:#fff3e6;--lab-line:#f0b77c;--lab-ink:#8a4a12;--lab-tag:#e07a2e;
--head:52px;--seg:0px;--side:264px;--zoom:1}
*{box-sizing:border-box}
html{font-size:14px}
body{margin:0;background:var(--canvas);color:var(--ink);font-family:"Pretendard","Noto Sans KR","Malgun Gothic",sans-serif;line-height:1.7;word-break:keep-all}
button,input,textarea{font:inherit;color:inherit}
button{cursor:pointer}
:focus-visible{outline:3px solid #f0a83a;outline-offset:2px}
mark.ph{background:#fff1b8;color:#5a4300;padding:0 3px;border-radius:3px}

/* ---------- top bar ---------- */
.top{position:fixed;z-index:30;inset:0 0 auto;height:var(--head);display:flex;align-items:center;gap:10px;padding:0 12px;background:#fff;border-bottom:1px solid var(--line)}
.brand{display:flex;align-items:center;gap:9px;min-width:0}
.mark{display:flex;align-items:center;justify-content:center;width:32px;height:32px;padding:3px;border-radius:9px;flex:0 0 auto;overflow:hidden;background:#fff;border:1.5px solid #38964e}
.mark img{display:block;max-width:100%;max-height:100%;width:auto;height:auto;object-fit:contain}
.brand b{display:block;font-size:13.5px;line-height:1.3;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.brand small{display:block;color:var(--muted);font-size:11px;line-height:1.3}
.actions{margin-left:auto;display:flex;align-items:center;gap:6px}
.tool{border:1px solid var(--line);background:#f4f6f5;color:#31454f;border-radius:8px;padding:5px 10px;font-size:12.5px;white-space:nowrap;line-height:1.5}
.tool{display:inline-flex;align-items:center;justify-content:center;height:32px}
.tool.ic{gap:4px;min-width:34px;padding:0 8px}
.tool .ico{width:18px;height:18px;flex:0 0 auto}
.tool .tv{font-size:12px;font-variant-numeric:tabular-nums}.tool .tv:empty{display:none}
.tool.txt{min-width:46px;padding:0 10px;font-weight:700}
.zoomset{height:32px}.zoomset button{height:100%}
.tool[aria-pressed="true"]{background:var(--amber-bg);border-color:var(--amber-line);color:var(--amber);font-weight:700}
.tool[aria-expanded="true"]{background:var(--mint);border-color:#93c79f;color:#1b4426;font-weight:700}
.zoomset{display:flex;align-items:center;border:1px solid var(--line);border-radius:8px;overflow:hidden}
.zoomset button{border:0;background:#f4f6f5;padding:5px 9px;font-size:13px;line-height:1.4}
.zoomset button svg{width:16px;height:16px;vertical-align:-3px}
.zoomset span{min-width:42px;text-align:center;font-size:11.5px;color:var(--muted);cursor:pointer}

/* ---------- sidebar ---------- */
.side{position:fixed;z-index:20;top:calc(var(--head) + var(--seg));bottom:0;left:0;width:var(--side);overflow:auto;background:#fff;border-right:1px solid var(--line);padding:12px 10px 26px;transition:transform .2s}
body.side-off .side{transform:translateX(-105%)}
.search{width:100%;padding:8px 10px;border:1px solid var(--line);border-radius:9px;background:#fafcfb;font-size:12.5px}
.me{margin:10px 0 0;padding:9px 10px;border-radius:9px;background:var(--lab);border:1px solid var(--lab-line);font-size:12px;color:var(--lab-ink)}
.me b{color:#6a3608}.me button{float:right;border:0;background:none;color:var(--lab-tag);font-size:12px;text-decoration:underline;padding:0}
.progress{margin:10px 0;padding:9px;border-radius:9px;background:#f5f8f7}
.progress-row{display:flex;justify-content:space-between;font-size:11.5px;color:var(--muted)}
.track{height:4px;margin-top:6px;background:#dfe8e7;border-radius:8px;overflow:hidden}
.bar{height:100%;width:0;background:linear-gradient(90deg,var(--teal),#65c3b3)}
.group{margin:12px 0}
.group-title{padding:0 6px 5px;color:#4d636c;font-size:11.5px;font-weight:800}
.nav{display:grid;grid-template-columns:24px 1fr auto;gap:5px;align-items:start;width:100%;padding:6px 8px;border:1px solid transparent;border-radius:8px;background:transparent;color:#42545d;text-align:left}
.nav:hover{background:var(--soft)}
.nav.active{border-color:#93c79f;background:var(--mint);color:#1b4426;font-weight:700}
.nav-num{font-size:11.5px;color:#5d7b79}
.nav-text{font-size:12.5px;line-height:1.45}
.nav-min{font-size:10.5px;color:#6b8180;padding-top:2px;white-space:nowrap}
.nav-min.lab{color:var(--lab-tag);font-weight:700}
.nav.seen .nav-num{color:var(--teal)}
.nav[hidden]{display:none}
.scrim{display:none;position:fixed;z-index:19;inset:var(--head) 0 0 0;background:#0a1a2299}

/* ---------- portrait layout ---------- */
.workspace{margin-left:var(--side);padding:calc(var(--head) + 18px) 22px 40px;transition:margin .2s}
body.side-off .workspace{margin-left:0}
.shell{max-width:860px;margin:auto;zoom:var(--zoom)}
.page{display:none}
.page.on{display:block}
.frame{background:var(--paper);border:1px solid #e1e7e7;border-radius:14px;margin:0 0 16px;overflow:hidden}
.fi{padding:22px 26px 24px}
.frame h2{margin:0 0 12px;color:var(--navy);font-size:1.42em;line-height:1.35;scroll-margin-top:70px}
.frame h3{margin:16px 0 8px;color:var(--teal-d);font-size:1.12em}
.frame p{margin:0 0 10px}
.frame ul,.frame ol{margin:0 0 10px;padding-left:1.5em}
.frame li{margin:2px 0}
.lead{font-size:1.08em;color:#2c4450}
.kd{display:inline-block;margin-right:7px;padding:1px 8px;border-radius:99px;font-size:.62em;font-weight:800;vertical-align:.25em;letter-spacing:.02em}
.kd.k-lec{background:#e3f1e6;color:#2a6b39}
.kd.k-lab{background:var(--lab-tag);color:#fff}
.kd.k-info{background:#38964e;color:#fff}
.adv{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:1.4em;align-items:center}
.adv-link{display:inline-flex;align-items:center;gap:.4em;margin:.5em 0 .3em;padding:.65em 1.2em;border-radius:12px;background:#38964e;color:#fff!important;font-weight:800;font-size:1.12em;text-decoration:none;box-shadow:0 4px 14px #38964e33;word-break:break-all}
.adv-link:hover{background:#2a7a3d}
.adv-note{margin-top:.6em;color:var(--muted)}
.adv-qr{display:flex;flex-direction:column;align-items:center;gap:.4em;padding:.8em;border:2px solid #38964e;border-radius:14px;background:#fff}
.adv-qr svg{display:block;width:11em;height:11em}
.adv-qr span{font-size:.82em;font-weight:700;color:#38964e}
body.land .adv{font-size:1.12em}
@media screen and (max-width:560px){.adv{grid-template-columns:1fr}.adv-qr{display:none}}

/* divider (chapter opener) */
.frame.div{background:repeating-linear-gradient(0deg,rgba(255,255,255,.028) 0 1px,transparent 1px 3px),linear-gradient(180deg,rgba(255,255,255,.035),rgba(0,0,0,.035)),linear-gradient(90deg,#0b2213 0%,#0d2817 20%,#10301b 30%,#143a21 40%,#194628 50%,#1f5530 60%,#256438 70%,#2b7340 80%,#318447 90%,#38964e 100%)}
.frame.div{border:0;color:#fff}
.frame.div .fi{display:grid;grid-template-columns:auto 1fr;gap:4px 22px;align-items:center;padding:22px 28px}
.div-num{grid-row:span 3;font-size:4.2em;font-weight:900;line-height:1;opacity:.95;font-variant-numeric:tabular-nums}
.div-kick{font-size:.86em;font-weight:700;color:#ffffffc8}
.div-title{margin:0;font-size:1.7em;font-weight:900;line-height:1.25}
.div-sum{margin:2px 0 0;color:#ffffffd9;font-size:.98em}

/* split (image + text) */
.split{display:block}
.split>.txt{margin-top:4px}

/* practice box */
.prac{position:relative;margin:1em 0 .3em;padding:2.1em 1.3em 1.1em;border:1.5px solid var(--lab-line);border-radius:12px;background:var(--lab)}
.lab-tag{position:absolute;left:14px;top:-1px;transform:translateY(-50%);padding:2px 11px;border-radius:99px;background:var(--lab-tag);color:#fff;font-size:.82em;font-weight:800;white-space:nowrap}
.prac>.lab-goal{margin:0 0 10px;color:var(--lab-ink);font-weight:700}
.steps{margin:0 0 10px;padding-left:1.5em}
.steps li{margin:4px 0}
.ck{display:grid;grid-template-columns:22px 1fr;gap:6px;align-items:start;margin:8px 0 0;padding:7px 10px;border-radius:8px;background:#ffffffb0;font-size:.93em;cursor:pointer}
.ck input{width:16px;height:16px;margin-top:3px;accent-color:var(--lab-tag)}

/* small cards */
.cards{display:grid;grid-template-columns:repeat(var(--n,3),1fr);gap:10px;margin:6px 0 12px}
.card{padding:11px 13px;border:1px solid var(--line);border-radius:11px;background:#fafcfb}
.card>b{display:block;margin-bottom:2px;color:var(--navy)}
.card p,.card ul{margin:0;font-size:.95em}
.card .ic{font-size:1.4em;line-height:1.2;display:block;margin-bottom:2px}
.note{margin:10px 0 0;padding:9px 12px;border-radius:9px;background:#eef8f5;border-left:4px solid var(--teal);color:#294c51;font-size:.95em}
.note.warn{background:var(--amber-bg);border-left-color:var(--amber);color:#5b3a00}
.flow{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin:6px 0 10px;font-weight:700}
.flow span{padding:4px 11px;border-radius:99px;background:var(--mint);color:#1b4426}
.flow i{font-style:normal;color:var(--muted)}
table.t{width:100%;margin:6px 0 12px;border-collapse:collapse;font-size:.94em}
table.t th,table.t td{padding:7px 9px;border:1px solid #cfdcdf;text-align:left;vertical-align:top}
table.t th{background:#e8f5f2;color:#194c58}
table.t .lab-row td{background:#fff8ef}
details.more{margin:10px 0 0;border:1px dashed #c9d7d9;border-radius:9px}
details.more>summary{list-style:none;cursor:pointer;padding:7px 12px;color:var(--muted);font-size:.92em}
details.more>div{padding:0 12px 10px;font-size:.95em}
.code-wrap{position:relative;margin:8px 0 10px}
.code-wrap pre{margin:0;overflow:auto;padding:34px 14px 14px;background:#16301e;color:#eaf4ec;border-radius:10px;white-space:pre-wrap;word-break:break-word;font-size:.92em;line-height:1.65;font-family:"Pretendard",sans-serif}
.code-cap{position:absolute;left:14px;top:8px;color:#a9d2b2;font-size:.8em}
.card .code-wrap pre{padding-top:44px}
.copy{position:absolute;right:8px;top:7px;border:1px solid #4f7a5a;background:#1f4a2a;color:#e7f3f5;border-radius:6px;padding:3px 10px;font-size:.8em}
.copy.done{background:#1f7a57;border-color:#1f7a57}
.code-wrap pre mark.ph{background:#4a3e12;color:#ffe8a3}
.pager{display:flex;justify-content:space-between;gap:12px;margin-top:8px}
.pager button{flex:1;max-width:48%;padding:10px 14px;border:1px solid var(--line);border-radius:10px;background:#fff;color:#34505c;font-size:13px}
.pager button:last-child{text-align:right}
.pager button:disabled{visibility:hidden}
.btn{border:1px solid #93c79f;background:var(--mint);color:#1b4426;border-radius:8px;padding:6px 12px;font-size:.92em;font-weight:700}
.btn.ghost{background:#fff;border-color:var(--line);font-weight:500}
.btn.main{background:var(--teal-d);border-color:var(--teal-d);color:#fff}
.row-btn{display:flex;flex-wrap:wrap;gap:6px;margin-top:10px}

/* done list */
.done-list{margin:4px 0 16px;padding:12px 16px;border:1px solid #cfe3de;border-radius:12px;background:#f3faf8}
.done-list h3{margin:0 0 4px;font-size:1em;color:var(--teal-d)}
.done-list label{display:grid;grid-template-columns:22px 1fr;gap:6px;align-items:start;padding:3px 0;cursor:pointer;font-size:.95em}
.done-list input{width:16px;height:16px;margin-top:3px;accent-color:var(--teal)}
.dl-n{margin:4px 0 0;font-size:.85em;color:var(--muted)}
.dl-n.all{color:#1f7a57;font-weight:800}

/* ---------- visuals ---------- */
.lesson-visual{margin:0 0 12px}
.lesson-visual img{display:block;width:100%;height:auto;border-radius:11px;border:1px solid #e3e3dc;cursor:zoom-in}
.lesson-visual img[hidden]{display:none}
.lesson-visual figcaption{margin-top:5px;color:#637780;font-size:.84em;text-align:center}
.vis-frame{display:grid;place-items:center;aspect-ratio:16/9;text-align:center;padding:14px;border:2px dashed #e0b07a;border-radius:11px;background:repeating-linear-gradient(135deg,#fff8ee 0 14px,#fdf1e0 14px 28px);color:#8a5a22}
.vis-frame b{display:block;font-size:1.05em;color:#6a3f10}
.vis-frame span{display:block;font-size:.82em}
.lesson-visual.has-img .vis-frame{display:none}
.visual-prompt{display:none;margin:8px 0 0;padding:10px 12px;border:1px dashed #e0b07a;border-radius:10px;background:#fffaf2;font-size:.9em}
.inst-on .lesson-visual:not(.has-img) .visual-prompt,.lesson-visual.show-prompt .visual-prompt{display:block}
.toggle-prompt{display:none;margin:5px auto 0;border:1px solid var(--line);background:#fff;border-radius:7px;padding:2px 9px;font-size:.78em;color:#5b707a}
.inst-on .lesson-visual.has-img .toggle-prompt{display:block}

/* ---------- prompt builder ---------- */
.bld{margin:10px 0 6px;border:1px solid #d6dfe2;border-radius:12px;overflow:hidden;background:#fff}
.bsel{padding:12px 14px 10px;background:#f7fafb}
.bsel-h{margin:0 0 8px;font-weight:800;color:var(--navy);font-size:.95em}
.brow{display:grid;grid-template-columns:8.5em 1fr;gap:4px 10px;align-items:start;padding:6px 0;border-top:1px solid #e6eced}
.brow:first-of-type{border-top:0}
.blab{padding-top:4px;font-size:.88em;font-weight:700;color:#3b5560}
.chips{display:flex;flex-wrap:wrap;gap:5px}
.chip{border:1px solid #c9d6da;background:#fff;border-radius:99px;padding:3px 11px;font-size:.88em;line-height:1.5;color:#2b4651}
.chip:hover{border-color:var(--teal)}
.chip.on{background:var(--teal-d);border-color:var(--teal-d);color:#fff;font-weight:700}
.chip-in{flex:1 1 11em;min-width:9em;padding:3px 10px;border:1px dashed #b9c8cc;border-radius:99px;background:#fff;font-size:.88em}
.chip-in.on{border-style:solid;border-color:var(--teal-d);box-shadow:0 0 0 1px var(--teal-d)}
.bmake{display:flex;align-items:center;gap:10px;margin-top:10px}
.bmake .btn{padding:7px 16px}
.bstale{font-size:.84em;color:var(--lab-tag);font-weight:700;display:none}
.bld.stale .bstale{display:inline}
.bld.stale .bout pre{opacity:.55}
.bout{position:relative;background:#16301e;margin:8px !important;border-radius:12px;overflow:hidden}
.bld[data-part="out"] .bout{margin-top:0 !important}
.bout .code-cap{position:static;display:block;padding:9px 78px 0 14px;line-height:1.45}
.bout pre{margin:0;max-height:24em;overflow:auto;padding:38px 14px 14px;border-radius:0;background:#16301e;color:#eaf4ec;white-space:pre-wrap;word-break:break-word;font-size:.9em;line-height:1.65}
.bout pre mark.ph{background:#4a3e12;color:#ffe8a3}
.bout pre b.v{color:#9ff0d8;font-weight:700}
.bld.lite .bsel{display:none}
.bld.lite .bgo{display:block;padding:6px 12px;font-size:.84em;background:#f7fafb}
.bgo{display:none}
.bld.who .bout{display:none}
.who-sum{margin:8px 0 0;font-size:.92em;color:var(--lab-ink)}

/* ---------- demo game ---------- */
.demo-q{margin:0 0 8px;font-size:.95em;color:#4b3a16}
.ai-bubble{padding:12px 15px;border-radius:4px 14px 14px 14px;background:#fff;border:1px solid #ead9b3;font-size:1.06em;line-height:2}
.hl{border:0;padding:0 2px;background:none;font:inherit;border-bottom:2px dotted var(--amber-line);cursor:pointer;border-radius:2px}
.hl:hover{background:#ffeec6}
.hl.on{background:#ffd98a;border-bottom-color:var(--amber);font-weight:700}
.demo-panel{min-height:4.6em;margin-top:10px;padding:10px 12px;border-radius:9px;background:#fff;border:1px solid #ead9b3;font-size:.94em}
.demo-panel .k{display:inline-block;margin-right:6px;padding:0 8px;border-radius:99px;background:var(--amber);color:#fff;font-size:.86em;font-weight:800}
.demo-count{margin-top:8px;font-size:.92em;color:#6a5524;font-weight:700}
.demo-count.win{color:#1f7a57}

/* ---------- 5-second card ---------- */
.card5{margin:6px 0 4px;padding:16px 18px;border:2px solid var(--navy);border-radius:14px;background:#fff;max-width:560px}
.card5 h3{margin:0 0 2px;color:var(--navy);font-size:1.2em}
.card5 .sub{margin:0 0 8px;color:var(--muted);font-size:.9em}
.chk{display:grid;grid-template-columns:26px 1fr;gap:8px;align-items:start;padding:7px 0;border-top:1px solid var(--line);cursor:pointer}
.chk input{width:18px;height:18px;margin-top:3px;accent-color:var(--teal)}
.chk b{display:block;color:var(--navy)}
.chk small{display:block;color:#50646d;font-size:.88em;line-height:1.5}
.card5 .risk{margin:10px 0 0;padding:7px 10px;border-radius:8px;background:var(--amber-bg);color:#5b3a00;font-size:.88em}
.card5 .fix{margin:8px 0 0;font-size:.88em}
.card5 textarea{width:100%;min-height:58px;margin-top:4px;padding:8px 10px;border:1px solid #bfd0d3;border-radius:8px;background:#fcfefd;resize:vertical;font-size:.92em}
.score{margin:6px 0 0;font-size:.82em;color:var(--muted)}

/* ---------- speed quiz ---------- */
.quiz{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin:4px 0}
.qcard{display:flex;flex-direction:column;gap:6px;padding:11px 12px;border:1px solid #ecd2b2;border-radius:12px;background:#fff}
.qscene{font-weight:800;color:var(--lab-ink);font-size:.92em}
.qtext{flex:1;padding:8px 10px;border-radius:8px;background:#f4f6f8;font-size:.92em;filter:blur(5px);user-select:none;transition:filter .1s}
.qcard.open .qtext{filter:none;user-select:auto}
.qbar{display:flex;align-items:center;gap:8px}
.qgo{border:0;background:var(--lab-tag);color:#fff;border-radius:8px;padding:4px 12px;font-weight:800;font-size:.9em}
.qsec{font-weight:900;font-size:1.25em;color:var(--lab-tag);font-variant-numeric:tabular-nums;min-width:2.2em}
.qopts{display:flex;flex-wrap:wrap;gap:4px}
.qopts button{border:1px solid #d6c3ad;background:#fff;border-radius:99px;padding:1px 9px;font-size:.85em}
.qopts button.ok{background:#1f7a57;border-color:#1f7a57;color:#fff}
.qopts button.no{background:#f3d9d4;border-color:#d99a8e;color:#7a2c1d}
.qans{display:none;font-size:.86em;color:#3d4f57;padding-top:4px;border-top:1px dashed #e2cdb3}
.qcard.done .qans{display:block}
.qscore{margin:8px 0 0;font-weight:800;color:var(--lab-ink)}

/* ---------- timer ---------- */
.pop{position:fixed;z-index:40;right:12px;top:calc(var(--head) + 8px);width:240px;padding:12px;border:1px solid var(--line);border-radius:12px;background:#fff;box-shadow:0 10px 30px #1d4f2c26;display:none;font-size:13px}
.pop.open{display:block}
.pop-head{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:4px}
.pop-head b{font-size:14px;color:var(--navy)}
.pop-x{border:1px solid var(--line);background:#f4f6f5;border-radius:7px;padding:2px 9px;font-size:12px}
.timer .t{font-size:38px;font-weight:800;text-align:center;color:var(--navy);font-variant-numeric:tabular-nums;line-height:1.2}
.timer.end .t{color:#c0392b}
.timer .tr{display:flex;gap:5px;margin-top:7px}
.timer .tr button{flex:1;padding:5px;border:1px solid var(--line);border-radius:7px;background:#f4f6f5;font-size:12.5px}
.timer input{width:54px;padding:2px 6px;border:1px solid var(--line);border-radius:6px}
.tnote{margin-top:6px;font-size:11.5px;color:var(--muted)}
.ttoast{position:fixed;z-index:60;right:12px;top:calc(var(--head) + 8px);padding:10px 20px;border-radius:12px;background:#1d4f2c;color:#fff;font-size:34px;font-weight:900;font-variant-numeric:tabular-nums;box-shadow:0 10px 30px #0005;display:none}
.ttoast small{display:block;font-size:12px;font-weight:700;opacity:.8;text-align:center}
.ttoast.show{display:block}
.files button.f{display:block;width:100%;margin:5px 0;padding:7px 10px;border:1px solid var(--line);border-radius:8px;background:#f4f6f5;text-align:left;font-size:13px}
.files button.f small{display:block;color:var(--muted);font-size:11.5px}
.files p{margin:0 0 6px;font-size:12px;color:var(--muted);line-height:1.5}

/* ---------- toc + modal ---------- */
.page-toc{position:fixed;z-index:15;top:calc(var(--head) + 18px);right:14px;width:190px;max-height:calc(100vh - var(--head) - 40px);overflow:auto;padding:10px;background:#fffffff5;border:1px solid var(--line);border-radius:11px}
.page-toc-title{margin-bottom:5px;color:#41565f;font-size:11.5px;font-weight:800}
.page-toc a{display:block;margin:1px 0;padding:4px 7px;border-left:2px solid #dbe5e5;color:#5d6e75;font-size:12px;line-height:1.4;text-decoration:none}
.page-toc a.lab{color:var(--lab-tag)}
.page-toc a:hover{background:var(--soft)}
.image-modal{position:fixed;z-index:100;inset:0;display:none;align-items:center;justify-content:center;padding:24px;background:#071923e8}
.image-modal.open{display:flex}
.image-modal img{max-width:96vw;max-height:90vh;object-fit:contain;border-radius:10px;background:#fff}
.modal-close{position:absolute;top:14px;right:18px;border:1px solid #ffffff66;border-radius:8px;background:#163c50;color:#fff;padding:7px 12px}

/* ---------- instructor ---------- */
.inst{display:none;margin:12px 0 0;padding:10px 13px;border:1px solid #c9b6e6;border-left:5px solid #7a55b8;border-radius:8px;background:#f5f0fc;color:#3d2a63;font-size:.92em}
body.inst-on .inst{display:block}
.inst .it{display:block;margin-bottom:2px;color:#5d3b9a;font-weight:800;font-size:.92em}
.inst.cue{border-left-color:var(--amber)}
.cue-row{margin:3px 0 !important;line-height:1.6}
.cue-k{display:inline-block;min-width:4.6em;margin-right:6px;padding:0 6px;border-radius:5px;background:#fff4dc;color:#7a4b00;font-size:.85em;text-align:center}
.cue-say b:not(.cue-k){color:#b03a00;text-decoration:underline;text-underline-offset:3px}
.cue-say .ps{color:#7a55b8;font-weight:900;padding:0 2px}
.cue-table td:first-child{white-space:nowrap}
.cue-table td:nth-child(2){width:26%}

/* ---------- segmented progress (landscape) ---------- */
.segbar{display:none;position:fixed;z-index:29;left:0;right:0;top:var(--head);height:8px;padding:2px 10px;gap:4px;background:#fff;border-bottom:1px solid var(--line)}
.seg{flex:1;border:0;padding:0;height:4px;border-radius:4px;background:#dfe6e6;overflow:hidden;position:relative}
.seg i{position:absolute;inset:0 auto 0 0;width:0;background:var(--teal)}
.seg.lab i{background:var(--lab-tag)}
.fnav{display:none}

/* ================= LANDSCAPE ================= */
body.land{--seg:9px;overflow:hidden;background:#e9edec}
body.land .segbar{display:flex}
body.land .page-toc,body.land .pager{display:none}
body.land .workspace{position:fixed;inset:calc(var(--head) + var(--seg)) 0 0 var(--side);margin:0;padding:0;display:grid;place-items:center;container-type:size}
body.land.side-off .workspace{left:0}
body.land .shell{zoom:1;max-width:none;width:100%;height:100%;display:grid;place-items:center}
body.land .page.on{display:contents}
body.land .page.on>:not(.frame){display:none}
body.land .shell{position:relative;--fw:min(calc(100cqw - 130px),calc(90cqh * 16 / 9))}
body.land .frame{display:none;margin:0;width:var(--fw);aspect-ratio:16/9;font-size:calc(var(--fw) / 62);border-radius:1em;box-shadow:0 .6em 2em #1d4f2c1f;overflow:auto}
body.land .frame.cur{display:block}
body.land .fi{zoom:var(--zoom);padding:2.2em 3em 2.4em;min-height:100%}
body.land .frame h2{font-size:1.75em;margin-bottom:.7em}
body.land .frame.div .fi{display:flex;flex-direction:column;justify-content:center;align-items:flex-start;gap:.5em;padding:0 8%}
body.land .div-num{font-size:9em;line-height:.9}
body.land .div-kick{font-size:1.1em;order:-1}
body.land .div-title{font-size:3.4em}
body.land .div-sum{font-size:1.3em;max-width:34em}
body.land .split{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(0,1fr);gap:1.6em;align-items:center}
body.land .split>.lesson-visual{margin:0}
body.land .lesson-visual img,body.land .vis-frame{max-height:26em;object-fit:contain}
body.land .split .lesson-visual img,body.land .split .vis-frame{max-height:28em}
body.land .split>.txt{margin:0;font-size:1.08em}
body.land .fnav{display:flex;position:fixed;z-index:25;right:14px;bottom:10px;align-items:center;gap:6px;padding:4px;border-radius:99px;background:#ffffffe6;border:1px solid var(--line);box-shadow:0 4px 14px #0001}
.fnav button{width:34px;height:34px;border:0;border-radius:50%;background:#f1f4f4;font-size:16px;line-height:1}
.fnav span{min-width:46px;text-align:center;font-size:12px;color:var(--muted);font-variant-numeric:tabular-nums}

/* landscape: 한 쪽에 들어가게 */
.bback{margin:0;padding:.55em 1em;background:#f7fafb;font-size:.88em;color:var(--muted)}
.cks{display:block}
.card5 .c5R{margin-top:6px}
body.land .bld:not(.who):not(.lite):not([data-part]){display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.2fr)}
body.land .bld:not([data-part]) .bout{display:flex;flex-direction:column}
body.land .bld:not([data-part]) .bout pre{flex:1;max-height:13.5em}
body.land .bld[data-part="out"] .bout pre{max-height:17em}
body.land .bld{margin:.5em 0 .4em}
body.land .bsel{padding:.8em 1em .7em}
body.land .brow{padding:.35em 0;grid-template-columns:6.5em 1fr}
body.land .bmake{margin-top:.6em}
body.land .cks{display:grid;grid-template-columns:1fr 1fr;gap:0 .6em}
body.land .ck{margin-top:.45em;padding:.4em .7em}
body.land .note{margin-top:.55em;padding:.5em .8em}
body.land .steps{margin-bottom:.5em}
body.land .steps li{margin:.15em 0}
body.land .prac>.lab-goal{margin-bottom:.5em}
body.land .done-list{display:flex;flex-wrap:wrap;align-items:center;gap:.2em 1.2em;margin:.7em 0 0;padding:.5em 1em}
body.land .done-list h3{margin:0;font-size:.92em}
body.land .done-list label{display:flex;gap:.35em;padding:0;font-size:.88em}
body.land .done-list .dl-n{margin:0}
body.land .card5{max-width:none;display:grid;grid-template-columns:1.1fr 1fr;gap:0 1.6em;padding:1.1em 1.4em}
body.land .card5 .c5R{margin:0;display:flex;flex-direction:column;justify-content:center}
body.land .card5 textarea{min-height:3.5em}
body.land .quiz{grid-template-columns:1fr;gap:.55em}
body.land .qcard{display:grid;grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"s b" "t o" "a a";gap:.35em 1em;padding:.7em 1em;align-items:center}
body.land .qscene{grid-area:s}.body.land .qtext{grid-area:t}
body.land .qtext{grid-area:t;padding:.45em .8em}
body.land .qbar{grid-area:b;justify-content:flex-end}
body.land .qopts{grid-area:o;justify-content:flex-end;flex-wrap:nowrap}
body.land .qans{grid-area:a;padding-top:.3em}
body.land .qscore{margin:.4em 0 0}

/* 가로 모드 좌우 이동 버튼 */
.side-nav{display:none}
body.land .side-nav{display:grid;place-items:center;position:absolute;top:50%;z-index:5;width:44px;height:44px;margin-top:-22px;padding:0;border:0;border-radius:50%;background:var(--teal-d);color:#fff;box-shadow:0 4px 14px #1d4f2c33;cursor:pointer;transition:background .15s,transform .15s}
body.land .side-nav svg{width:22px;height:22px}
body.land .side-nav:hover:not(:disabled){background:var(--teal);transform:scale(1.06)}
body.land .side-nav:disabled{background:#cfd3d5;color:#8d9396;box-shadow:none;cursor:default}
body.land .side-nav.prev{left:calc(50% - var(--fw) / 2 - 56px)}
body.land .side-nav.next{right:calc(50% - var(--fw) / 2 - 56px)}
.dark body.land .side-nav:disabled,body.land.dark .side-nav:disabled{background:#3a4448;color:#77807f}

/* ---------- dark ---------- */
.dark{--ink:#e5eeef;--muted:#9fb0b7;--line:#344850;--paper:#16252c;--canvas:#101a20;--mint:#244b4b;--soft:#1c3537;--navy:#cfe6ee;--teal-d:#6fd0c6;--lab:#2c2216;--lab-line:#7a5530;--lab-ink:#f3cfa3}
.dark body,body.dark{background:#101a20}
.dark .top,.dark .side,.dark .page-toc,.dark .pop,.dark .segbar,.dark .fnav{background:#15242b}
.dark .tool,.dark .zoomset button,.dark .search,.dark .pop-x,.dark .timer .tr button,.dark .files button.f,.dark .fnav button{background:#1c2f37;color:#dce8e9}
.dark .frame{border-color:#2b3f46}
.dark .progress,.dark .bsel,.dark .bld.lite .bgo{background:#1a2b32}
.dark .bld{background:#16252c;border-color:#395259}
.dark .chip,.dark .chip-in{background:#16252c;border-color:#466069;color:#dce8e9}
.dark .card,.dark .done-list,.dark .card5{background:#192c33;border-color:#395259}
.dark .note{background:#1b3539;color:#d4e8e6}.dark .note.warn{background:#3a2d12;color:#f5dfb2}
.dark table.t th{background:#21444a;color:#e4f2f2}.dark table.t td,.dark table.t th{border-color:#35505a}
.dark .ai-bubble,.dark .demo-panel,.dark .qcard{background:#1d2a2e;border-color:#5a4c28;color:#eef3f3}
.dark .qtext{background:#24363d}
.dark .ck{background:#00000030}
.dark .inst{background:#2a2142;border-color:#5b4690;color:#e3d9f7}
.dark .pager button{background:#16252c;color:#dce8e9}
.dark .vis-frame{background:repeating-linear-gradient(135deg,#2a2216 0 14px,#251d12 14px 28px);color:#f0cf9f}
.dark .card5 textarea{background:#16252c;border-color:#395259}
body.land.dark{background:#0c1418}

/* ---------- responsive ---------- */
@media(min-width:1260px){body:not(.land) .workspace{margin-right:200px}}
@media(max-width:1259px){.page-toc{display:none}}
@media screen and (max-width:900px){
 .side{transform:translateX(-105%)}.side.open{transform:none;box-shadow:8px 0 30px #0003}
 body .workspace{margin-left:0}.scrim.on{display:block}
 body.land .workspace{left:0}
 .brand small,.tool .lbl{display:none}
 .workspace{padding:calc(var(--head) + 12px) 10px 30px}
 .fi{padding:16px 15px 18px}
 .cards,.quiz{grid-template-columns:1fr}
 .brow{grid-template-columns:1fr}
 table.t{display:block;overflow-x:auto}
 .pop{right:8px;left:8px;width:auto}
}
@media screen and (max-width:560px){
 .top{gap:6px;padding:0 8px}.brand{flex:0 0 auto}.brand>div:last-child{display:none}
 .actions{gap:4px;min-width:0;overflow-x:auto;scrollbar-width:none}.actions::-webkit-scrollbar{display:none}
 .actions>*{flex:0 0 auto}
 .tool.ic{min-width:32px;padding:0 6px}.tool.txt{min-width:42px;padding:0 8px}
 #darkToggle,#zoomVal{display:none}.zoomset button{padding:0 7px}
 #timerToggle:has(.tv:not(:empty)) .ico{display:none}
}
@media screen and (max-width:340px){.zoomset{display:none}}
@media screen and (max-width:430px){.actions:has(#instToggle) .zoomset{display:none}}
@media screen and (max-width:560px){
 body:not(.land) .workspace{padding:calc(var(--head) + var(--seg) + 8px) 8px 28px}
 body:not(.land) .fi{padding:14px 12px 16px}
 body:not(.land) .prac{padding:1.9em .75em .8em}
 body:not(.land) .bsel{padding:10px 10px 8px}
 body:not(.land) .card{padding:10px 11px}
 body:not(.land) .code-wrap pre,body:not(.land) .bout pre{padding-left:11px;padding-right:11px}
 body:not(.land) .frame.div .fi{gap:4px 14px;padding:18px 16px}
 body:not(.land) .div-num{font-size:3.2em}
 .chip{padding:5px 12px}
 .chip-in,.fi input[type=text],.fi textarea,.pop input{font-size:16px}
}
/* 작은 화면(휴대폰)의 가로 보기: 16:9 고정 대신 화면을 꽉 채우고, 쪽 안에서 스크롤 */
@media screen and (max-height:560px),screen and (max-width:760px){
 body.land{--head:46px;--seg:7px}
 body.land .shell{--fw:calc(100cqw - 16px)}
 body.land .frame{width:var(--fw);height:calc(100cqh - 16px);aspect-ratio:auto;font-size:14.5px;overflow:auto;-webkit-overflow-scrolling:touch;border-radius:12px}
 body.land .fi{padding:16px 16px 64px;min-height:100%}
 body.land .frame h2{font-size:1.35em;margin-bottom:.6em}
 body.land .frame.div .fi{padding:16px 7% 56px}
 body.land .div-num{font-size:4.2em}
 body.land .div-title{font-size:2em}
 body.land .div-sum{font-size:1.05em}
 body.land .side-nav{display:none}
 body.land .fnav{right:10px;bottom:10px}
 body.land .lesson-visual img,body.land .vis-frame,body.land .split .lesson-visual img,body.land .split .vis-frame{max-height:62vh}
 body.land .bld[data-part="out"] .bout pre,body.land .bld:not([data-part]) .bout pre{max-height:none}
}
@media screen and (max-width:760px){
 body.land .split,body.land .bld:not(.who):not(.lite):not([data-part]),body.land .cks,body.land .card5{grid-template-columns:1fr}
 body.land .cards{grid-template-columns:1fr}
 body.land .frame{font-size:15px}
}
#pdfStage{position:fixed;left:0;top:0;z-index:200;width:1600px}
#pdfBusy{position:fixed;inset:0;z-index:400;display:grid;place-items:center;background:#0b1822e6;color:#fff;font-size:18px;font-weight:800;text-align:center;padding:20px}
@media print{
 *{-webkit-print-color-adjust:exact;print-color-adjust:exact}
 .top,.side,.page-toc,.pager,.image-modal,.pop,.ttoast,.segbar,.fnav,.inst,.no-print,.copy,.qbar,.bmake,.bback,.scrim,#pdfStage,#pdfBusy{display:none!important}
 html,body{background:#fff!important}
 .page{display:none!important}
 .qtext{filter:none!important}
 body.print-port .page:not([data-inst]){display:block!important}
 body.print-port .workspace{margin:0!important;padding:0!important}
 body.print-port .shell{zoom:1!important;max-width:none!important}
 body.print-port .frame{break-inside:avoid;margin:0 0 4mm}
 body.print-port .frame.div{break-before:page}
 body.print-land{overflow:visible!important}
 body.print-land .workspace{position:static!important;display:block!important;padding:0!important;margin:0!important;container-type:normal!important}
 body.print-land .shell{display:block!important;width:auto!important;height:auto!important}
 body.print-land .page:not([data-inst]){display:block!important}
 body.print-land .page>:not(.frame){display:none!important}
 body.print-land .frame{display:block!important;width:297mm!important;height:167.06mm!important;aspect-ratio:auto!important;margin:0!important;border:0!important;border-radius:0!important;box-shadow:none!important;overflow:hidden!important;font-size:var(--pfs,18px)!important;break-after:page;break-inside:avoid}
 body.print-land .fi{zoom:1!important}
 body.print-land .page[data-scroll] .frame{height:auto!important;min-height:167.06mm;overflow:visible!important;break-inside:auto}
 body.print-card #p6{display:block!important}
 body.print-card .workspace{margin:0!important;padding:0!important;position:static!important;display:block!important}
 body.print-card .shell{zoom:1!important;display:block!important}
 body.print-card #p6 .frame:not(.has5){display:none!important}
 body.print-card #p6 .frame.has5{display:block!important;width:auto!important;height:auto!important;aspect-ratio:auto!important;border:0}
 body.print-card #p6 .frame.has5 .fi>*:not(.card5){display:none!important}
}
details>summary::-webkit-details-marker{display:none}
details.more>summary::before{content:"▸ "}
details.more[open]>summary::before{content:"▾ "}
.use5{margin:6px 0 0;padding-left:1.2em}.use5 li{margin:4px 0}
.use5-lead{margin:0 0 8px}
body.land .use5-lead{font-size:1em;margin-bottom:.5em}
.kd.k-info{background:var(--teal-d);color:#fff}
.nav.seen .nav-num::after{content:none}
.nav.seen .nav-num{color:var(--teal);font-weight:800}
.mark{width:42px;height:42px;padding:0;border:0;border-radius:50%;background:transparent;overflow:visible}
.mark svg{display:block;width:100%;height:100%}
.go-btn{display:inline-flex;align-items:center;gap:.5em;min-height:2.9em;padding:.55em 1.15em;border-radius:10px;border:2px solid var(--teal-d);background:var(--teal-d);color:#fff!important;font-weight:800;font-size:1.06em;text-decoration:none;cursor:pointer}
.go-btn:hover{background:var(--navy);border-color:var(--navy)}
.go-btn.ghost{background:#fff;color:var(--teal-d)!important}
.go-btn.ghost:hover{background:var(--soft)}
.go-btn .nt{font-size:.72em;font-weight:700;padding:0 .6em;border-radius:99px;border:1px solid currentColor;white-space:nowrap;opacity:.9}
.go-btn .ext-ic{width:1em;height:1em;flex:0 0 auto}
.go-btn.off{opacity:.45;pointer-events:none}
.btn-row{display:flex;flex-wrap:wrap;gap:.6em;margin:.4em 0 .8em}
.code-row{display:flex;flex-wrap:wrap;align-items:center;gap:.6em;margin:.5em 0}
.pill{padding:.2em .8em;border-radius:8px;background:var(--mint);color:var(--navy);font-weight:800;font-size:1.12em;font-family:Consolas,"D2Coding",monospace}
.code-row .copy,.btn-copy{position:static}
.flow.big span{font-size:1.08em;font-weight:700;padding:.35em .95em}
.steps.big li{margin:.45em 0;font-size:1.06em}
.home-grid{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:1.4em;align-items:center;margin-top:.6em}
.qr-box{margin:0;padding:.7em;border:2px solid var(--teal);border-radius:14px;background:#fff;text-align:center}
.qr{width:9.5em;height:9.5em;margin:auto}.qr svg{display:block;width:100%;height:100%}
.qr-box figcaption{line-height:1.35;margin-top:.3em}
.qr-box figcaption span{display:block;font-size:.8em;color:var(--muted)}
.qr-box code{font-weight:800;color:var(--navy)}
.tools{display:grid;grid-template-columns:1fr 1fr;gap:1em}
.tool-box{padding:.9em 1em;border:1px solid var(--line);border-radius:12px;background:#fff}
.tool-box h3{margin:0 0 .5em}.tool-box h3 small{font-weight:400;color:var(--muted);margin-left:.4em}
.small{font-size:.9em;color:var(--muted)}
kbd{display:inline-block;padding:0 .45em;border:1px solid #b9c6cc;border-bottom-width:2px;border-radius:5px;background:#fff;font-size:.9em;font-family:inherit}
.brow{display:flex;flex-wrap:wrap;gap:.8em;margin:.4em 0 .6em}
.brow label{display:flex;align-items:center;gap:.5em;font-weight:700}
.brow input{width:10em;max-width:100%;min-height:2.6em;padding:.3em .7em;border:1.5px solid #b9c6cc;border-radius:8px;background:#fff}
.links-pop a{display:flex;justify-content:space-between;align-items:center;gap:8px;margin:5px 0;padding:8px 10px;border:1px solid var(--line);border-radius:8px;background:#f4f6f5;color:var(--ink);text-decoration:none;font-size:13px;font-weight:700}
.links-pop a small{font-weight:400;color:var(--muted)}
.links-pop a:hover{border-color:var(--teal)}
.ttoast{font-size:16px;font-weight:800;max-width:min(420px,calc(100vw - 24px))}
.ttoast.bad{background:#a3361f}
.code-row .copy{border:1.5px solid var(--teal-d);background:#fff;color:var(--teal-d);font-size:.88em;padding:.3em .9em;font-weight:700}
.code-row .copy.done{background:#1f7a57;border-color:#1f7a57;color:#fff}
.dark .code-row .copy{background:#18292f;color:#bfe3c7}
.side-note{margin:14px 4px 0;font-size:11.5px;color:var(--muted);line-height:1.5}.side-note button{border:0;background:none;padding:0;color:var(--teal-d);text-decoration:underline;font-size:inherit}
body.land .home-grid .qr{width:11em;height:11em}
@media screen and (max-width:700px){.tools,.home-grid{grid-template-columns:1fr}.qr-box{display:none}.go-btn{width:100%;justify-content:center}.chip-in,.brow input{font-size:16px}}

.duo{display:block}
.duo>.sub+.sub{margin-top:1.3em;padding-top:1.1em;border-top:1px dashed #c9d7d9}
.sub>h2{margin:0 0 12px;color:var(--navy);font-size:1.42em;line-height:1.35}
.chips{display:flex;flex-wrap:wrap;gap:.4em;margin:.3em 0 .6em}
.chips span{padding:.15em .8em;border-radius:99px;background:var(--mint);color:var(--navy);font-weight:700}
.tline{display:grid;grid-template-columns:repeat(3,1fr);gap:.7em;margin-top:.5em}
.tline>div{padding:.6em .8em;border-top:4px solid var(--teal);background:#fafcfb;border-radius:0 0 10px 10px}
.tline>div:nth-child(2){border-top-color:#7aa7c7}.tline>div:nth-child(3){border-top-color:#e07a6a}
.tline small{display:block;color:var(--muted);font-size:.8em}.tline b{display:block;font-size:1.1em;color:var(--navy);margin:.1em 0 .2em}.tline span{font-size:.88em;display:block;line-height:1.5}
.pr3{list-style:none;margin:.4em 0;padding:0;display:grid;gap:.5em}
.pr3 li{display:flex;align-items:baseline;gap:.8em;padding:.5em .9em;border:1px solid var(--line);border-radius:10px;background:#fafcfb}
.pr3 b{color:var(--teal-d);min-width:4em}.pr3 span{color:#2c4450}
table.vs th:first-child,table.vs td:first-child{white-space:nowrap;font-weight:700}
table.vs tr.hl td{background:#fff1ee;border-color:#e3a79b;font-weight:700}
.why .team{align-self:center}
.why .team.filled img{border-radius:.8em}
.why{display:grid;grid-template-columns:repeat(3,1fr);gap:.7em}
.why>div{padding:.7em .9em;border:1px solid var(--line);border-radius:12px;background:#fafcfb}
.why b{display:flex;align-items:center;gap:.5em;color:var(--navy);line-height:1.35}
.why b i{flex:0 0 auto;display:inline-grid;place-items:center;width:1.5em;height:1.5em;border-radius:50%;background:var(--teal-d);color:#fff;font-style:normal;font-size:.85em}
.why p{margin:.35em 0 .3em;font-size:.95em}.why em{display:block;font-style:normal;color:#8a5a00;font-size:.88em}
.gq{display:grid;grid-template-columns:repeat(5,1fr);gap:.6em;margin:.4em 0 .6em}
.gq>div{display:flex;flex-direction:column;align-items:center;gap:.15em;padding:.7em .4em;border:1.5px solid var(--teal);border-radius:12px;background:#fff;text-align:center}
.gq i{font-style:normal;font-weight:900;color:var(--teal-d);font-size:1.1em}.gq i::before{content:"문제 "}
.gq b{font-size:1.5em;color:var(--navy)}.gq span{font-size:.9em;color:#2c4450}
.descs{display:grid;gap:.5em;margin-top:.5em}
.desc{padding:.6em .9em;border:1px solid var(--line);border-radius:10px;background:#fafcfb}
.desc b{display:block;color:var(--navy)}.desc span{font-size:.95em;color:#2c4450}
.code-cap{color:#b5b5b5}
.copy{background:#2b2b2b;border-color:#666;color:#fff}
.timer .t{user-select:none;-webkit-user-select:none}
.timer .trow{display:flex;gap:5px;margin-top:8px}.timer .trow input{flex:1;min-width:0;width:auto;padding:6px 8px;font-size:15px}
.timer .trow button{padding:5px 12px;border:1px solid var(--line);border-radius:7px;background:#f4f6f5;font-size:12.5px;font-weight:700}
.pop-head .ph-r{display:flex;gap:5px}
.tkeys{margin-top:4px;font-size:11px;color:var(--muted);line-height:1.5}
.timer .t.timeover{color:#d62d20;font-size:26px;animation:tpulse 1s infinite alternate;text-shadow:2px 2px 8px rgba(0,0,0,.25)}
@keyframes tpulse{from{transform:scale(1);opacity:1}to{transform:scale(1.15);opacity:.65}}
.timer:fullscreen{position:fixed;inset:0;width:auto;max-width:none;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:18px;padding:24px;border:0;border-radius:0;background:#fff;font-size:18px}
.timer:fullscreen .t{font-size:min(24vw,40vh)}
.timer:fullscreen .t.timeover{font-size:min(14vw,26vh)}
.timer:fullscreen .tr,.timer:fullscreen .trow{width:min(520px,90vw)}
.timer:fullscreen .tr button,.timer:fullscreen .trow button,.timer:fullscreen .trow input{font-size:18px;padding:10px}
.dark .timer:fullscreen{background:#0c1418}.dark .timer:fullscreen .t{color:#e8f3ea}
body.land .duo{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:0 1.8em;align-items:start}
body.land .duo>.sub+.sub{margin:0;padding:0 0 0 1.8em;border-top:0;border-left:1px dashed #c9d7d9}
body.land .duo .sub>h2{font-size:1.3em;margin-bottom:.5em}
body.land .duo .cards{grid-template-columns:1fr;gap:.4em;margin:.3em 0 .5em}
body.land .duo .card{padding:.45em .8em}
body.land .duo .cks{grid-template-columns:1fr}
body.land .duo .steps.big li{margin:.25em 0}
body.land .duo .prac{margin-top:.8em;padding-top:1.6em}
body.land .duo .tool-box{margin-bottom:.5em;padding:.6em .8em}
body.land .duo .tline{grid-template-columns:1fr;gap:.45em}
body.land .duo .lead{margin-bottom:.4em}
body.land .duo .code-wrap{margin:.4em 0}
body.land .duo .code-wrap pre{font-size:.9em;line-height:1.55}
body.land .why{gap:.5em}
@media screen and (max-width:760px),screen and (max-height:560px){body.land .duo{grid-template-columns:1fr}body.land .duo>.sub+.sub{padding:1.1em 0 0;margin-top:1.1em;border-left:0;border-top:1px dashed #c9d7d9}body.land .duo .cards{grid-template-columns:1fr}}
@media screen and (max-width:700px){.grades{grid-template-columns:repeat(2,1fr)}.tline,.why{grid-template-columns:1fr}.gq{grid-template-columns:repeat(2,1fr)}.mark{width:34px;height:34px}}

.vids{display:grid;grid-template-columns:.563fr 1.774fr;gap:.9em;margin:.6em 0 .4em;max-width:44em}
.vid{display:flex;flex-direction:column;gap:.35em;min-width:0;text-decoration:none;color:var(--ink)}
.vid img{display:block;width:100%;height:auto;border-radius:.6em;box-shadow:0 0 0 2px var(--teal)}
.vid:hover img{box-shadow:0 0 0 3px var(--teal-d)}
.vid span{display:flex;flex-direction:column;line-height:1.3}.vid b{font-size:.95em;color:var(--navy)}.vid small{color:var(--muted);font-size:.8em}
.tools3{display:flex;gap:.6em;align-items:flex-start;margin:.3em 0 .5em;max-width:34em}
.tools3>div{min-width:0;display:flex;flex-direction:column;align-items:center;gap:.25em}
.tools3 img{display:block;width:100%;height:auto;border-radius:.6em;box-shadow:0 0 0 1px var(--line)}
.tools3 span{font-size:.8em;color:var(--muted)}
.grades{display:grid;grid-template-columns:repeat(4,1fr);gap:.5em;margin:.6em 0}
.grades span{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.15em;padding:.7em .3em;border-radius:12px;background:var(--mint);text-align:center;line-height:1.3}
.grades b{color:var(--navy);font-size:1.02em}.grades i{font-style:normal;font-size:1.25em;font-weight:800;color:var(--teal-d)}
.code-wrap pre{background:#000;color:#f2f2f2}
.code-wrap pre mark.ph{background:#ffe36b;color:#111;font-weight:800;padding:.05em .4em;border-radius:.3em}
.subtitle{display:flex;flex-wrap:wrap;align-items:center;gap:.4em .9em;margin:.5em 0 .2em;padding:.5em .9em;border:1.5px solid var(--teal);border-radius:12px;background:#fff}
.subtitle>span{font-weight:800;color:var(--navy)}.subtitle .code-row{margin:0}
.pic{margin:0}
.pic img{display:block;width:100%;height:auto;border-radius:.8em}
.pic figcaption{margin-top:.3em;font-size:.82em;color:var(--muted);text-align:center}
.pic.wide{margin:.3em 0 .5em}
.pic.shot{margin:.6em 0 .3em}.pic.shot img{border:1px solid #cfd6d6;border-radius:.6em}
.slot.empty{display:none}
body.show-slots .slot.empty{display:flex;align-items:center;justify-content:center;min-height:9em;border:2px dashed var(--teal);border-radius:.8em;background:repeating-linear-gradient(45deg,#f3faf4 0 10px,#e9f5ec 10px 20px);color:var(--teal-d);font-weight:800;text-align:center;padding:.5em}
body.show-slots .slot.empty::before{content:attr(data-label) "\A" attr(data-slot) ".png";white-space:pre;font-size:.9em}
body.show-slots .slot.empty.icon{min-height:3.2em;width:3.2em;float:right;margin:0 0 .3em .5em}
body.show-slots .slot.empty.icon::before{content:"icon";font-size:.7em}
.slot.icon.filled{float:right;width:3.4em;margin:0 0 .3em .6em}
.div-img{display:none}
.frame.div .div-img{display:block;grid-column:1/-1;width:min(100%,420px);justify-self:center;margin-top:12px;padding:5px;border-radius:16px;background:#fff;box-shadow:0 6px 22px #0004}
.frame.div .div-img .pic.slot.empty{display:none}
.frame.div .div-img:has(.slot.empty:only-child){display:none}
body.show-slots .frame.div .div-img:has(.slot.empty:only-child){display:block}
body.show-slots .frame.div .div-img .pic.slot.empty{display:flex}
body.land .frame.div.has-img .fi{position:relative;padding-right:46%}
body.land .frame.div .div-img{position:absolute;right:5%;top:50%;transform:translateY(-50%);width:34%;max-width:none;margin:0;grid-column:auto;padding:.35em;border-radius:1.1em}
body.land .frame.div .div-img img{max-height:25em;object-fit:contain;width:100%}
@media screen and (max-width:760px),screen and (max-height:560px){body.land .frame.div.has-img .fi{padding-right:7%;padding-bottom:64px}body.land .frame.div .div-img{position:static;transform:none;width:min(100%,360px);margin-top:12px;align-self:center}}
body.land .duo .pic.shot{margin:.3em 0 .2em}
body.land .duo .pic.shot img{max-height:7.5em;width:auto;margin:auto}
.dark .tool-box,.dark .qr-box{background:#18292f}.dark .go-btn.ghost{background:#18292f}.dark .pill{background:#1f3a29;color:#dff0e3}
.dark .links-pop a{background:#1c2f37;color:#dce8e9}
body.land #p0 .div-title{font-size:2.6em;white-space:nowrap}
body:not(.land) .div-title br{display:none}
body:not(.land) #p0 .div-title br{display:none}
