/* v2theme.css — Haeyo Korean v2 · the theme courses (2026-10-28, owner: "design it — like #/culture, in our own language").
   The poster-tile look of v2culture.css (ink borders, hard shadow, one big Hangeul sign per tile, small-caps captions, chips, arrows)
   for the theme hub (#/course?theme=all, themes_v2.js .th-*) and the course pages (#/course?theme=culture…, app.js themeCourse .th-*).
   Load after v2culture.css. Phone first: base = 375px; 720px and 1024px add on. Each course carries its own tint: --tc (deep) · --tl (light). */
.thpage{--tc:var(--sky-d);--tl:var(--sky-l);--th-r:16px;--th-sh:3px 4px 0 var(--ink);padding:16px 0 40px;color:var(--ink);font-family:var(--ui)}
.thpage .wrap{max-width:1100px}
.thpage[data-th=culture]{--tc:#2f6b4f;--tl:#f0f9f4}
.thpage[data-th=moms]{--tc:#b4476a;--tl:#fdf0f5}
.thpage[data-th=business]{--tc:#0f172a;--tl:#eef2f7}
.thpage[data-th=origins]{--tc:#8a6400;--tl:#fff8e3}
.thpage[data-th=fan]{--tc:#5b4a9e;--tl:#f3effd}
.th-c-culture{--tc:#2f6b4f;--tl:#f0f9f4}.th-c-moms{--tc:#b4476a;--tl:#fdf0f5}.th-c-business{--tc:#0f172a;--tl:#eef2f7}.th-c-origins{--tc:#8a6400;--tl:#fff8e3}.th-c-fan{--tc:#5b4a9e;--tl:#f3effd}

/* ---- head: rule · eyebrow · the big sign · title · lead ---- */
.th-back{display:inline-flex;align-items:center;gap:6px;margin:0 0 10px;font:600 13px/1.3 var(--ui);color:var(--mute);text-decoration:none}
.th-back:hover{color:var(--ink)}
.th-eye{display:flex;justify-content:space-between;gap:10px;margin:0 0 14px;padding:8px 0 10px;border-top:1.5px solid var(--ink);border-bottom:1px solid var(--ink);font:700 12px/1.3 var(--ui);letter-spacing:.12em;text-transform:uppercase;color:var(--ink)}
.th-eye span:last-child{color:var(--mute);text-align:right}
.th-head{display:grid;grid-template-columns:minmax(0,1fr);gap:18px;align-items:end}
.th-acts .btn{white-space:normal;line-height:1.25;text-align:center;padding-block:10px}   /* 2026-10-31: long CTA ("Book Business Korean 1:1 — first month $140") wraps at 375px instead of widening the page */
.th-sign{display:inline;margin:0;font:700 clamp(34px,9vw,76px)/1.25 var(--hand);letter-spacing:0;color:var(--ink);background:linear-gradient(transparent 60%,var(--tl) 60%,var(--tl) 92%,transparent 92%);-webkit-box-decoration-break:clone;box-decoration-break:clone;padding:0 .08em}
.th-sign+h1{margin-top:8px}
.th-h1{margin:0;font:900 clamp(30px,8vw,52px)/1.06 var(--ui);letter-spacing:-.035em;color:var(--ink);max-width:18ch}
.th-h1 .kr{display:block;margin-top:6px;font:700 clamp(15px,2.6vw,20px)/1.35 var(--kr);letter-spacing:0;color:var(--ink2)}
.th-lead{margin:12px 0 0;max-width:640px;font:400 16px/1.55 var(--ui);color:var(--ink2)}
.th-lead b{color:var(--ink);background:linear-gradient(transparent 55%,var(--tl) 55%,var(--tl) 92%,transparent 92%)}
.th-acts{display:flex;flex-wrap:wrap;gap:8px;margin-top:16px}
.th-btn{display:inline-flex;align-items:center;gap:8px;min-height:48px;padding:0 18px;border:1.5px solid var(--ink);border-radius:12px;background:var(--tl);color:var(--ink);font:700 15px/1 var(--ui);text-decoration:none;box-shadow:var(--th-sh);cursor:pointer}
.th-btn:hover{background:#fff;transform:translate(-1px,-2px);box-shadow:4px 6px 0 var(--ink)}
.th-btn.o{background:var(--ink);color:#fff}
.th-btn.o:hover{background:var(--ink2)}
/* the photo tile beside the head */
.th-photo{position:relative;border:1.5px solid var(--ink);border-radius:var(--th-r);overflow:hidden;background:var(--tl);box-shadow:var(--th-sh);aspect-ratio:4/3}
.th-photo img{width:100%;height:100%;object-fit:cover;display:block}
.th-photo .th-stamp{display:none;position:absolute;left:14px;bottom:12px;padding:4px 10px 6px;border:1.5px solid var(--ink);border-radius:8px;background:#fff;font:900 30px/1 var(--kr);letter-spacing:-.04em}
.th-facts{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin-top:12px}
.th-facts div{padding:10px 12px;border:1.5px solid var(--ink);border-radius:10px;background:#fff}
.th-facts b{display:block;font:900 20px/1.1 var(--ui);letter-spacing:-.02em;color:var(--tc)}
.th-facts span{display:block;margin-top:2px;font:600 12px/1.35 var(--ui);color:var(--mute)}

/* ---- bands ---- */
.th-band{margin-top:34px}
.th-bhd{margin:0 0 14px;padding-top:10px;border-top:1.5px solid var(--ink)}
.th-bhd h2{margin:0;font:800 clamp(24px,6vw,34px)/1.12 var(--ui);letter-spacing:-.03em;color:var(--ink)}
.th-bhd p{margin:4px 0 0;font:400 14px/1.5 var(--ui);color:var(--mute)}

/* ---- the "which one is you" rows ---- */
.th-you{display:grid;gap:10px}
.th-you a{display:grid;grid-template-columns:auto 1fr auto;gap:12px;align-items:center;padding:14px 16px;border:1.5px solid var(--ink);border-radius:14px;background:#fff;color:var(--ink);text-decoration:none;box-shadow:var(--th-sh)}
.th-you a:hover{transform:translate(-1px,-2px);box-shadow:4px 6px 0 var(--ink);background:var(--tl)}
.th-you .th-dot{width:14px;height:14px;border-radius:50%;border:1.5px solid var(--ink);background:var(--tc)}
.th-you b{font:700 15px/1.35 var(--ui)}
.th-you b .kr{font-family:var(--kr)}
.th-you span{font:700 13px/1.2 var(--ui);color:var(--tc);white-space:nowrap}

/* ---- course tiles ---- */
.th-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.th-tile{position:relative;display:flex;flex-direction:column;min-height:260px;padding:12px 12px 14px;border:1.5px solid var(--ink);border-radius:var(--th-r);background:var(--tl);color:var(--ink);text-decoration:none;box-shadow:var(--th-sh);overflow:hidden}
a.th-tile:hover{transform:translate(-1px,-2px);box-shadow:4px 6px 0 var(--ink)}
a.th-tile:active{transform:translate(2px,2px);box-shadow:1px 2px 0 var(--ink)}
.th-cap{display:flex;justify-content:space-between;align-items:center;gap:6px;font:700 12px/1.2 var(--ui);letter-spacing:.12em;text-transform:uppercase;color:var(--ink)}
.th-cap small{font:700 11px/1.2 var(--ui);letter-spacing:.08em;color:var(--tc)}
.th-big{display:block;margin:8px 0 0;font:700 clamp(24px,6.5vw,34px)/1.2 var(--hand);letter-spacing:0;color:var(--tc)}
.th-big.n{font-family:var(--ui);font-size:72px;letter-spacing:-.05em}
.th-img{display:block;margin:8px 0 0;aspect-ratio:16/10;border:1.5px solid var(--ink);border-radius:9px;background:var(--tl);overflow:hidden}
.th-img img{width:100%;height:100%;object-fit:cover;display:block}
.th-bd{position:relative;display:flex;flex-direction:column;flex:1 0 auto;justify-content:flex-end;gap:4px;margin-top:auto;padding:10px 22px 0 0}
.th-t{font:800 16px/1.18 var(--ui);letter-spacing:-.02em;color:var(--ink)}
.th-t .kr{display:block;font:700 13px/1.3 var(--kr);color:var(--ink2)}
.th-p{font:400 13px/1.4 var(--ui);color:var(--ink2)}
a.th-tile .th-bd:after{content:"→";position:absolute;right:0;bottom:2px;font:700 16px/1 var(--ui);color:var(--ink)}
.th-chips{display:flex;flex-wrap:wrap;gap:4px;padding-top:6px}
.th-chips span{font:700 12px/1.2 var(--ui);padding:4px 8px;border-radius:6px;letter-spacing:.02em}
.th-lv{background:#fff;color:var(--ink);border:1px solid var(--ink)}
.th-free{background:var(--green-l);color:#17693a}
.th-n{background:var(--tl);color:var(--tc);border:1px solid var(--tc)}
.th-tile.big .th-img{aspect-ratio:16/9}
.th-tile.big .th-big{font-size:34px}
.th-you a{grid-template-columns:auto 1fr;grid-template-areas:"dot text" "dot go"}
.th-you .th-dot{grid-area:dot}.th-you b{grid-area:text}.th-you span{grid-area:go;white-space:normal}

/* ---- the lesson cards of a course (the Level page's grid, in tile clothes) ---- */
.th-lessons{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.th-ls{position:relative;display:flex;flex-direction:column;min-height:150px;padding:12px 12px 12px;border:1.5px solid var(--ink);border-radius:14px;background:#fff;color:var(--ink);text-decoration:none;box-shadow:var(--th-sh)}
a.th-ls:hover{transform:translate(-1px,-2px);box-shadow:4px 6px 0 var(--ink);background:var(--tl)}
.th-ls .th-no{font:900 44px/.95 var(--ui);letter-spacing:-.05em;color:var(--tc)}
.th-ls.done .th-no{color:#17693a}
.th-ls b{margin-top:8px;font:800 15px/1.25 var(--kr);letter-spacing:-.01em}
.th-ls small{margin-top:4px;font:500 12px/1.35 var(--ui);color:var(--mute)}
.th-ls .th-st{display:flex;gap:6px;align-items:center;margin-top:auto;padding-top:10px}
.th-ls .th-st i{font-style:normal;width:22px;height:22px;border-radius:50%;border:1.5px solid var(--ink);display:grid;place-items:center;font-size:.68rem;font-weight:800;color:var(--mute);background:#fff}
.th-ls .th-st i.on{background:#1f8a4c;border-color:#1f8a4c;color:#fff}
.th-ls .th-st em{font-style:normal;font:800 .72rem/1 var(--ui);color:#17693a;background:var(--green-l);border-radius:999px;padding:4px 8px}
.th-ls .lkchip{margin-left:6px}
.th-ls.lk{background:var(--cream)}
.th-sum{display:flex;flex-wrap:wrap;gap:8px 14px;align-items:center;margin:14px 0 12px;font:600 14px/1.4 var(--ui);color:var(--ink2)}
.th-sum b{color:var(--ink)}
.th-sum .okfree{color:#17693a}
/* the course tabs */
.th-tabs{display:flex;gap:6px;margin:18px calc(-1*var(--gut)) 0;padding:2px var(--gut) 6px;overflow-x:auto;scrollbar-width:none}
.th-tabs::-webkit-scrollbar{display:none}
.th-tabs a{flex:none;display:inline-flex;align-items:center;gap:6px;min-height:44px;padding:0 13px;border:1px solid var(--line2);border-radius:9999px;background:#fff;font:600 14px/1 var(--ui);color:var(--ink);text-decoration:none;white-space:nowrap}
.th-tabs a:before{content:"";width:8px;height:8px;border-radius:50%;background:var(--tc)}
.th-tabs a i{font-style:normal;font-size:12px;color:var(--mute)}
.th-tabs a.on{background:var(--ink);border-color:var(--ink);color:#fff}
.th-tabs a.on i{color:#cbd5e1}
/* how to study: three small tiles */
.th-steps{display:grid;grid-template-columns:1fr;gap:10px}
.th-steps div{display:grid;grid-template-columns:auto 1fr;gap:12px;align-items:start;padding:12px 14px;border:1.5px solid var(--ink);border-radius:14px;background:#fff;box-shadow:var(--th-sh)}
.th-steps i{font-style:normal;width:38px;height:38px;border-radius:11px;border:1.5px solid var(--ink);background:var(--tl);color:var(--tc);display:grid;place-items:center;font:900 18px/1 var(--ui)}
.th-steps b{display:block;font:800 15px/1.25 var(--ui)}
.th-steps p{margin:3px 0 0;font:400 13.5px/1.5 var(--ui);color:var(--ink2)}
/* practice row (Fan Korean) */
.th-prac{margin-top:14px;padding:14px 16px;border:1.5px solid var(--ink);border-radius:14px;background:var(--tl);box-shadow:var(--th-sh)}
.th-prac b{display:block;font:800 14px/1.3 var(--ui);margin-bottom:8px}
.th-prac .row{gap:8px;flex-wrap:wrap}
/* the free line */
.th-freeln{margin-top:22px;padding:12px 14px;border-left:4px solid #1f8a4c;background:var(--green-l);border-radius:0 12px 12px 0;font:400 14px/1.55 var(--ui);color:var(--ink2)}
.th-freeln b{color:var(--ink)}
/* the introduction below the list keeps the site's landing sections; a rule and a caption lead into it */
.th-intro-hd{margin-top:38px;padding-top:10px;border-top:1.5px solid var(--ink);font:700 12px/1.3 var(--ui);letter-spacing:.12em;text-transform:uppercase;color:var(--ink)}

@media (min-width:720px){
  .th-head{grid-template-columns:minmax(0,1.2fr) minmax(0,.8fr);align-items:end}
  .th-grid{grid-template-columns:repeat(3,minmax(0,1fr))}
  .th-tile.big{grid-column:1/-1;display:grid;grid-template-columns:1.15fr .85fr;grid-template-areas:"cap cap" "img bd";column-gap:18px;min-height:0}
  .th-tile.big .th-cap{grid-area:cap}.th-tile.big .th-img{grid-area:img;aspect-ratio:16/10;margin-top:8px}.th-tile.big .th-bd{grid-area:bd;justify-content:center;padding-top:8px}.th-tile.big .th-bd .th-t{font-size:20px}.th-tile.big .th-bd .th-p{font-size:14px}
  .th-you a{grid-template-columns:auto 1fr auto;grid-template-areas:none}.th-you .th-dot,.th-you b,.th-you span{grid-area:auto}.th-you span{white-space:nowrap}
  .th-lessons{grid-template-columns:repeat(3,minmax(0,1fr))}
  .th-steps{grid-template-columns:repeat(3,minmax(0,1fr))}
  .th-steps div{grid-template-columns:1fr;gap:8px}
}
@media (min-width:1024px){
  .th-lessons{grid-template-columns:repeat(4,minmax(0,1fr))}
  .th-grid{grid-template-columns:repeat(3,minmax(0,1fr))}
}

/* ================= the chat bubble (2026-10-28, owner: "still dull") — a line someone actually says, as a Kakao-style bubble with its speaker; used on the home, the K-Culture hub and the theme tiles ================= */
.kbub{display:flex;flex-direction:column;align-items:flex-start;gap:5px;max-width:94%;transform:rotate(-1.5deg);transform-origin:left bottom}
.kbub em{display:inline-flex;align-items:center;gap:6px;font:700 12px/1 var(--ui);font-style:normal;color:var(--ink2);letter-spacing:.02em}
.kbub em i{width:22px;height:22px;border-radius:50%;border:1.5px solid var(--ink);background:#fff;display:grid;place-items:center;font:800 11px/1 var(--kr);font-style:normal;color:var(--ink)}
.kbub b{position:relative;display:inline-block;padding:8px 14px 10px;border:1.5px solid var(--ink);border-radius:18px 18px 18px 5px;background:#fff;box-shadow:2px 3px 0 var(--ink);font:700 clamp(19px,5vw,27px)/1.25 var(--hand);letter-spacing:0;color:var(--ink);word-break:keep-all;text-align:left}
.kbub.y b{background:#ffe9a8}
.kbub.me{align-items:flex-end;align-self:flex-end;transform:rotate(1.5deg)}
.kbub.me b{border-radius:18px 18px 5px 18px;background:#ffe9a8}
.kbub small{font:600 11px/1.2 var(--ui);color:var(--mute)}
/* ================= the K-Culture page head + cards (2026-10-30 mobile audit — one look for every tab, the hub's look) =================
   Markup: tiles.js HARU_KHEAD (header.kx-head). Cards and folds below are for the modules (nuance · pairs · lists · sets · how · life · fan · school · fanaz). */
.kx-head{--tl:#f0f9f4;--tc:#2f6b4f;--hl:var(--mint);position:relative;margin:0 0 22px;color:var(--ink);font-family:var(--ui)}
.kx-mint{--tl:#f0f9f4;--tc:#2f6b4f;--hl:var(--mint)}.kx-butter{--tl:#fff8e3;--tc:#8a6400;--hl:var(--butter)}.kx-sky{--tl:#eef7ff;--tc:#0b6fbd;--hl:#cfe8ff}.kx-lilac{--tl:#f3effd;--tc:#5b4a9e;--hl:#e2dafb}.kx-pink{--tl:#fdf0f5;--tc:#b4476a;--hl:#fadbe7}
.kx-back{display:inline-flex;align-items:center;gap:6px;min-height:44px;margin:0 0 6px;font:600 15px/1.2 var(--ui);color:var(--ink);text-decoration:none}
.kx-back:hover{text-decoration:underline}
.kx-sign{display:block;width:max-content;max-width:100%;margin:0 0 8px -.03em;font:900 clamp(52px,16vw,116px)/1.02 var(--kr);letter-spacing:-.06em;color:var(--ink);background:linear-gradient(transparent 60%,var(--hl) 60%,var(--hl) 88%,transparent 88%)}
.kx-cap{display:flex;justify-content:space-between;align-items:baseline;gap:12px;margin:0 0 14px;padding:8px 0 10px;border-top:1.5px solid var(--ink);border-bottom:1px solid var(--ink);font:700 13px/1.3 var(--ui);color:var(--ink)}
.kx-cap span:last-child{color:var(--mute);font-weight:600;text-align:right}
.kx-h1{margin:0;font:900 clamp(28px,7.6vw,48px)/1.08 var(--ui);letter-spacing:-.035em;color:var(--ink);max-width:20ch}
.kx-h1 .kr{display:block;margin-top:6px;font:700 clamp(16px,4.4vw,22px)/1.35 var(--kr);letter-spacing:0;color:var(--ink2)}
.kx-lead{margin:12px 0 0;max-width:640px;font:400 16px/1.55 var(--ui);color:var(--ink2)}
.kx-chips{display:flex;flex-wrap:wrap;gap:6px;margin:14px 0 0}
.kx-chips span{display:inline-flex;align-items:center;min-height:28px;padding:4px 10px;border-radius:8px;font:700 13px/1.2 var(--ui)}
.kx-chips .kx-lv{background:#fff;color:var(--ink);border:1px solid var(--ink)}
.kx-chips .kx-free{background:var(--green-l);color:#17693a}
.kx-chips .kx-n{background:var(--tl);color:var(--tc);border:1px solid var(--tc)}
.kx-chips .kx-mem{background:var(--cream);color:var(--ink2);border:1px solid var(--line2)}
@media (min-width:720px){.kx-head{margin-bottom:30px}}
/* the poster card for the modules' own cards (ink border, hard shadow, 16px) */
.kx-card{border:1.5px solid var(--ink)!important;border-radius:16px!important;background:#fff;box-shadow:3px 4px 0 var(--ink)!important}
/* the small heading that replaces the old capital eyebrows */
.kx-sub{margin:0 0 6px;font:700 14px/1.35 var(--ui);letter-spacing:0;text-transform:none;color:var(--ink2)}
/* long pages: one card open, the rest folded (details.kx-fold > summary) */
details.kx-fold{margin:0 0 12px;border:1.5px solid var(--ink);border-radius:16px;background:#fff;box-shadow:3px 4px 0 var(--ink)}
details.kx-fold>summary{display:flex;align-items:center;gap:10px;min-height:56px;padding:10px 46px 10px 16px;list-style:none;cursor:pointer;position:relative;font:800 16px/1.3 var(--ui);color:var(--ink)}
details.kx-fold>summary::-webkit-details-marker{display:none}
details.kx-fold>summary:after{content:"";position:absolute;right:18px;top:50%;width:10px;height:10px;margin-top:-7px;border-right:2px solid var(--ink);border-bottom:2px solid var(--ink);transform:rotate(45deg);transition:transform .15s}
details.kx-fold[open]>summary:after{transform:rotate(-135deg);margin-top:-2px}
details.kx-fold>summary .kr{font:700 14px/1.3 var(--kr);color:var(--ink2)}
details.kx-fold>.kx-fbd{padding:0 16px 16px}
details.kx-fold[open]>summary{border-bottom:1px solid var(--line2);margin-bottom:12px}
.kx-more{display:flex;justify-content:center;align-items:center;width:100%;min-height:48px;margin:6px 0 16px;border:1.5px solid var(--ink);border-radius:12px;background:#fff;font:700 15px/1 var(--ui);color:var(--ink);cursor:pointer;box-shadow:2px 3px 0 var(--ink)}
/* one quiet line to the shop (magazine issue / article → the PDF print edition) */
.kx-shopln{margin:18px 0 0;padding:12px 14px;border:1px dashed var(--line2);border-radius:12px;font:400 14px/1.5 var(--ui);color:var(--ink2)}
.kx-shopln a{display:inline-flex;align-items:center;min-height:44px;font-weight:700;color:var(--ink)}
@media (prefers-reduced-motion:reduce){details.kx-fold>summary:after{transition:none}}
/* culture.js sub-pages (school · honest): their cards in poster clothes; the speaking-check buttons (speak.js) 44px inside K-Culture pages */
section.kcpage .kc-cfor,section.kcpage .kc-scn,section.kcpage .kc-fin,section.kcpage .kc-hc,section.kcpage .kc-lvcard,section.kcpage .kc-ghead .kc-gbanner{border:1.5px solid var(--ink);border-radius:16px;box-shadow:3px 4px 0 var(--ink);background:#fff}
section.kcpage .kc-scn>summary{min-height:56px}
section.kcpage .ks-btn,section.kcf .ks-btn,section.nupage .ks-btn{min-height:44px}

/* tile tints — not everything mint */
.tint-butter{background:var(--butter-l)!important}.tint-sky{background:var(--sky-l)!important}.tint-lilac{background:#f3effd!important}.tint-pink{background:#fdf0f5!important}.tint-mint{background:var(--mint-l)!important}
.th-tile .kbub{margin:10px 0 2px}
.th-tile.big .kbub{grid-area:bd;align-self:start;margin-bottom:10px}
