/* css/course-shop.css — THE COURSE SHOP PAGE (G64, approved 15 Oct 2026).
   js/course-shop.js draws it. The board's `cx-` rules (claude.ai/artifact/
   A49jWi3D7yC3vvCyFmUx1r) on the product's own tokens (design-tokens.css),
   scoped under `.csp`. */
.csp{display:flex;flex-direction:column;gap:16px;min-width:0;padding-bottom:40px}
.csp *{box-sizing:border-box}
.csp-head{display:flex;justify-content:space-between;align-items:flex-end;gap:14px;flex-wrap:wrap}
/* The canon's `.page-head > div:first-child{flex:1}` has a zero basis, so on a
   phone the buttons kept their line and squeezed the title and its sentence
   into a one-word column with Preview drawn over it (round 3, m-shop.png). A
   real basis lets the buttons wrap under the words instead. */
.page-head.csp-head>div:first-child{flex:1 1 18rem;min-width:0}
.csp-crumb{color:var(--text-3);text-decoration:none}
.csp-crumb:hover{color:var(--accent-deep);text-decoration:underline}
.csp-acts{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.csp-btn{display:inline-flex;align-items:center;gap:6px;border-radius:10px;padding:9px 14px;font-weight:600;font-size:13.5px;line-height:1.2;font-family:inherit;border:1px solid var(--border-strong);background:var(--surface);color:var(--text);white-space:nowrap;min-height:40px;cursor:pointer;text-decoration:none}
.csp-btn:hover{border-color:var(--text-3)}
.csp-btn[disabled]{opacity:.5;cursor:default}
.csp-btn.pri{background:var(--accent);border-color:var(--accent);color:#fff;box-shadow:0 10px 24px -10px rgba(106,76,241,.6)}
.csp-btn.sm{padding:5px 10px;font-size:12.5px;min-height:32px;border-radius:8px}
.csp-btn.ghost{border-color:transparent;background:transparent;color:var(--accent-deep)}
.csp-btn svg{width:15px;height:15px;flex:none}
.csp-msg{min-height:0;font-size:13px;color:var(--text-2)}
.csp-msg:empty{display:none}
.csp-msg.ok{color:var(--good)}
.csp-msg.bad{color:var(--danger)}
.csp-sub{color:var(--text-2);margin:0;font-size:13.5px}
.csp-card{background:var(--surface);border:1px solid var(--border);border-radius:14px;min-width:0}
.csp-card.hl{box-shadow:0 0 0 3px var(--accent);border-color:var(--accent)}
.csp-ch{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:12px 16px;border-bottom:1px solid var(--border);flex-wrap:wrap}
.csp-ch h3{font-family:"Bricolage Grotesque",Inter,sans-serif;font-size:16px;margin:0}
.csp-ch small{color:var(--text-3);font-size:12.5px}
.csp-cb{padding:14px 16px;display:flex;flex-direction:column;gap:12px}
.csp-where{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,1fr);gap:16px;align-items:center}
.csp-where-l{display:flex;flex-direction:column;gap:10px;min-width:0}
.csp-addr{display:inline-flex;align-items:center;gap:6px;font-family:"JetBrains Mono",ui-monospace,monospace;font-size:12.5px;color:var(--text-2);background:var(--surface-3);border:1px solid var(--border);border-radius:9px;padding:4px 4px 4px 10px;max-width:100%;min-width:0;flex-wrap:wrap}
.csp-addr span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0;flex:1 1 auto}
.csp-addr button,.csp-addr a{font-family:Inter,sans-serif;background:var(--surface);border:0;border-radius:6px;padding:4px 9px;font-size:12px;font-weight:600;color:var(--accent-deep);white-space:nowrap;cursor:pointer;text-decoration:none;min-height:28px;display:inline-flex;align-items:center}
.csp-good{background:var(--good-soft);color:#14583a;border-radius:10px;padding:9px 12px;font-size:13px}
.csp-note{background:var(--warn-soft);color:#6b420a;border-radius:10px;padding:9px 12px;font-size:13px}
.csp-door{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;border-radius:10px;padding:9px 12px;font-size:13px}
.csp-door.warn{background:var(--warn-soft);color:#6b420a}
.csp-door.warn b{color:#4f3006}
.csp-door.ok{background:var(--surface-2);color:var(--text-2);border:1px solid var(--border)}
.csp-door span{flex:1 1 260px;min-width:0}
/* The pictures: the real page in a browser frame and a phone frame. */
.csp-pic{position:relative;padding:0 24px 16px 0;min-width:0}
.csp-pic.sm{max-width:620px}
.csp-pic.empty iframe{visibility:hidden}
.csp-brow{border:1px solid var(--border-strong);border-radius:10px;overflow:hidden;background:#fff;box-shadow:0 10px 30px rgba(21,23,43,.14)}
.csp-brow .bar{display:flex;align-items:center;gap:5px;padding:6px 8px;background:var(--surface-3);border-bottom:1px solid var(--border)}
.csp-brow .bar i{width:7px;height:7px;border-radius:50%;background:var(--border-strong)}
.csp-brow .bar span{flex:1;margin-left:6px;background:#fff;border-radius:6px;font-family:"JetBrains Mono",monospace;font-size:10px;color:var(--text-2);padding:2px 8px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.csp-ph{position:absolute;right:0;bottom:0;width:24%;min-width:70px;border:3px solid #15172b;border-radius:14px;overflow:hidden;background:#fff;box-shadow:0 10px 24px rgba(21,23,43,.25)}
.csp-fr{position:relative;width:100%;overflow:hidden;background:#fff}
.csp-fr iframe{position:absolute;top:0;left:0;border:0;transform-origin:0 0;pointer-events:none;background:#fff}
.csp-pvtabs{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-bottom:12px}
.csp-pvbox.desktop{border:1px solid var(--border-strong);border-radius:10px;overflow:hidden}
.csp-pvbox.phone{max-width:390px;margin:0 auto;border:10px solid #15172b;border-radius:34px;overflow:hidden}
.csp-pvbox .csp-fr{max-height:70vh;overflow-y:auto}
.csp-pvbox iframe{pointer-events:auto}
/* The address choices. */
.csp-opts{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:10px}
.csp-opt{border:1.5px solid var(--border);border-radius:12px;padding:11px 12px;background:var(--surface);display:flex;flex-direction:column;gap:3px;min-width:0;text-align:left;font-family:inherit;color:var(--text);cursor:pointer}
.csp-opt.on{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}
.csp-opt b{font-size:13.5px;overflow-wrap:anywhere}
.csp-opt small{color:var(--text-3);font-size:12px}
.csp-opt code{font-family:"JetBrains Mono",monospace;font-size:11.5px;color:var(--text-2);overflow-wrap:anywhere}
.csp-field{display:flex;flex-direction:column;gap:5px;font-size:13px;font-weight:600;color:var(--text-2);max-width:620px}
.csp-field input{font:400 14px/1.4 Inter,sans-serif;border:1px solid var(--border-strong);border-radius:10px;padding:9px 12px;min-height:42px;color:var(--text);background:var(--surface)}
.csp-field input:focus{outline:2px solid var(--accent);outline-offset:1px}
/* Search and filters, past 8. */
.csp-tools{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.csp-search{flex:1 1 220px;display:flex;align-items:center;gap:8px;border:1px solid var(--border-strong);background:var(--surface);border-radius:10px;padding:0 12px;color:var(--text-3);min-width:0;min-height:42px}
.csp-search svg{width:15px;height:15px;flex:none}
.csp-search input{border:0;outline:0;background:transparent;font:400 13.5px Inter,sans-serif;color:var(--text);flex:1;min-width:0;min-height:40px}
.csp-chips{display:flex;gap:6px;flex-wrap:wrap}
.csp-chip{font:600 12.5px Inter,sans-serif;border-radius:999px;padding:5px 11px;background:var(--surface);border:1px solid var(--border);color:var(--text-2);white-space:nowrap;cursor:pointer;min-height:32px}
.csp-chip.on{background:var(--text);border-color:var(--text);color:#fff}
.csp-chip em{font-style:normal;opacity:.65;margin-left:4px}
/* The community tab's own switch, on top of the table. */
.csp-bar{display:flex;align-items:center;gap:12px;justify-content:space-between;flex-wrap:wrap;background:var(--accent-soft);border-radius:12px;padding:10px 14px;font-size:13px;margin:12px 16px 4px}
.csp-bar b{color:var(--accent-deep)}
/* The rows. */
.csp-list{display:flex;flex-direction:column}
.csp-row{display:grid;grid-template-columns:20px 128px minmax(0,1fr) auto;gap:14px;align-items:center;padding:12px 16px;border-top:1px solid var(--border);background:var(--surface)}
.csp-row:first-child{border-top:0}
.csp-row.off .csp-th img{filter:grayscale(.7);opacity:.7}
.csp-row.off .csp-info b{color:var(--text-2)}
.csp-row.feat{background:linear-gradient(90deg,#fff8e6,var(--surface) 60%)}
.csp-row.dragging{box-shadow:0 10px 30px rgba(21,23,43,.18);position:relative;z-index:2;opacity:.95}
body.csp-dragging{user-select:none;-webkit-user-select:none;cursor:grabbing}
.csp-grip{color:var(--text-3);font-size:15px;letter-spacing:-2px;cursor:grab;text-align:center;border:0;background:transparent;padding:6px 0;touch-action:none;min-height:44px;width:20px}
.csp-grip:focus-visible{outline:2px solid var(--accent);border-radius:6px}
.csp-th{width:128px;aspect-ratio:16/9;border-radius:9px;overflow:hidden;background:linear-gradient(135deg,var(--surface-2),var(--surface-3));position:relative}
.csp-th img{display:block;width:100%;height:100%;object-fit:cover}
.csp-th .ph{position:absolute;inset:0;display:grid;place-items:center;font-family:"Bricolage Grotesque",sans-serif;font-weight:700;color:var(--text-3);font-size:13px;text-align:center;padding:4px}
.csp-info{min-width:0;display:flex;flex-direction:column;gap:4px}
.csp-info b{font-weight:650;font-size:14.5px;line-height:1.3;overflow-wrap:anywhere}
.csp-pills{display:flex;gap:5px;flex-wrap:wrap}
.csp-pill{font-size:11px;font-weight:600;border-radius:999px;padding:2px 9px;display:inline-flex;align-items:center;gap:5px;background:var(--surface-3);color:var(--text-2)}
.csp-pill .d{width:6px;height:6px;border-radius:50%;background:currentColor}
.csp-pill.live{background:#dcefe2;color:#1c7a4a}
.csp-pill.draft{background:var(--accent-soft);color:var(--accent-deep)}
.csp-pill.space{background:#fde8f1;color:#a3125a}
.csp-pill.star{background:#fff1c9;color:#8a5a00}
.csp-meta{display:flex;gap:6px 14px;flex-wrap:wrap;color:var(--text-2);font-size:12.5px;align-items:center}
.csp-meta>span{display:inline-flex;align-items:center;gap:5px;white-space:nowrap}
.csp-meta>span.why{white-space:normal;color:var(--warn)}
.csp-meta svg{width:13px;height:13px;color:var(--text-3)}
.csp-meta .money{font-weight:650;color:var(--text)}
.csp-faces{display:inline-flex}
.csp-faces img{width:20px;height:20px;border-radius:50%;border:2px solid #fff;margin-left:-6px;object-fit:cover}
.csp-faces img:first-child{margin-left:0}
.csp-sw{display:flex;gap:14px;align-items:center;justify-content:flex-end;flex-wrap:wrap}
.csp-tg{display:inline-flex;align-items:center;gap:7px;font:600 12.5px Inter,sans-serif;color:var(--text-2);white-space:nowrap;background:transparent;border:0;padding:0;cursor:pointer;min-height:44px}
.csp-tg i{width:34px;height:20px;border-radius:999px;background:var(--border-strong);position:relative;flex:none;transition:background .15s}
.csp-tg i:after{content:"";position:absolute;top:2px;left:2px;width:16px;height:16px;border-radius:50%;background:#fff;box-shadow:0 1px 2px rgba(0,0,0,.25);transition:left .15s}
.csp-tg.on i{background:#1c7a4a}
.csp-tg.on i:after{left:16px}
.csp-tg[disabled]{opacity:.45;cursor:default}
.csp-tg:focus-visible,.csp-star:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:6px}
.csp-star{font-size:19px;color:var(--border-strong);line-height:1;background:transparent;border:0;cursor:pointer;min-width:32px;min-height:44px}
.csp-star.on{color:#e0a100}
.csp-star[disabled]{opacity:.45;cursor:default}
.csp-fold{display:flex;flex-direction:column;align-items:flex-start;gap:2px;width:100%;text-align:left;border:0;border-top:1px dashed var(--border-strong);background:var(--surface-2);padding:12px 16px;font:600 13.5px Inter,sans-serif;color:var(--accent-deep);cursor:pointer;min-height:44px}
.csp-fold span{font-weight:400;font-size:12.5px;color:var(--text-3)}
.csp-foot{display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap;padding:11px 16px;border-top:1px solid var(--border);font-size:12.5px;color:var(--text-3)}
.csp-foot b{color:var(--text)}
.csp-empty{align-items:flex-start}
.csp-empty b{font-size:15px}
.csp-empty span{color:var(--text-2);font-size:13.5px;max-width:60ch}
/* The Courses list's door and its one line (the board's item 2). */
.st-shop-door{border:2px solid var(--accent)!important;color:var(--accent-deep)!important;display:inline-flex;align-items:center;gap:6px}
.st-shop-door svg{width:16px;height:16px}
.st-shop-bar{display:flex;align-items:center;gap:12px;justify-content:space-between;flex-wrap:wrap;background:var(--accent-soft);border-radius:12px;padding:10px 14px;font-size:13px;margin:0 0 14px}
.st-shop-bar b{color:var(--accent-deep)}
.st-shop-bar.warn{background:var(--warn-soft);color:#6b420a}
.st-shop-bar.warn b{color:#4f3006}

/* ── Phone (the board's item 8): one column, cover kept, switches under each row. ── */
@media (max-width:760px){
  .csp-where{grid-template-columns:minmax(0,1fr)}
  .csp-row{grid-template-columns:84px minmax(0,1fr);gap:10px;padding:12px}
  .csp-grip{display:none}
  .csp-th{width:84px}
  .csp-row .csp-sw{grid-column:1 / -1;justify-content:flex-start;gap:18px}
  .csp-meta{gap:3px 10px;font-size:12px}
  .csp-meta>span{white-space:normal}
  .csp-addr span{flex:1 1 100%;padding:0 4px 4px}
  .csp-opts{grid-template-columns:minmax(0,1fr)}
  .csp-bar{margin:12px 12px 4px}
  .csp-acts .csp-btn{flex:0 1 auto}
}
