/* 佈置你的家 (v3). Playground only.
 * This file is loaded on every page of the site (mkdocs extra_css), so every rule below
 * is gated on the playground root or on the body class the playground script sets, and
 * nothing is declared on a bare :root. */

/* ── full viewport: hide the mkdocs chrome while the board is mounted ─────────── */
body.dex-playground-page,
html:has(body.dex-playground-page){overflow:hidden}
body.dex-playground-page .md-header,
body.dex-playground-page .md-tabs,
body.dex-playground-page .md-sidebar,
body.dex-playground-page .md-footer,
body.dex-playground-page .vx-feedback,
body.dex-playground-page .md-content__inner>*:not(.dex-playground-app),
body.dex-playground-page .md-typeset>*:not(.dex-playground-app){display:none!important}
body.dex-playground-page .md-main,
body.dex-playground-page .md-main__inner,
body.dex-playground-page .md-content,
body.dex-playground-page .md-content__inner{margin:0;padding:0;max-width:none}
/* Same result before the script runs, so the chrome never flashes into view. */
body:has(.dex-playground-app) .md-header,
body:has(.dex-playground-app) .md-tabs,
body:has(.dex-playground-app) .md-sidebar,
body:has(.dex-playground-app) .md-footer{display:none}

.dex-playground-app{
 --pg-ink:var(--md-default-fg-color,#1d2b27);
 --pg-dim:var(--md-default-fg-color--light,#5b6e68);
 --pg-panel:#fbfdfcf2;
 --pg-panel-solid:#fbfdfc;
 --pg-panel-edge:#cad6d1;
 --pg-accent:#2f6d58;
 --pg-accent-ink:#fff;
 --pg-bar:#f2f6f4;
 --pg-warn:#a32323;
 --pg-ok:#1f6b4f;
 --pg-shadow:0 8px 28px rgba(18,32,28,.2);
 --pg-radius:12px;
 position:fixed;inset:0;z-index:6;margin:0!important;padding:0!important;
 color:var(--pg-ink);font-size:.8rem;line-height:1.45;
 background:var(--md-default-bg-color,#e8eeec);
 overscroll-behavior:contain;
}
@media (prefers-color-scheme:dark){
 .dex-playground-app{--pg-panel:#182027f2;--pg-panel-solid:#182027;--pg-panel-edge:#31414a;--pg-bar:#131a20;
  --pg-accent:#5fbf9c;--pg-accent-ink:#0c1512;--pg-warn:#ff8f8f;--pg-ok:#7fd8b4;
  --pg-shadow:0 8px 28px rgba(0,0,0,.55)}
}
body[data-md-color-scheme=voxel-dark] .dex-playground-app{
 --pg-panel:#182027f2;--pg-panel-solid:#182027;--pg-panel-edge:#31414a;--pg-bar:#131a20;
 --pg-accent:#5fbf9c;--pg-accent-ink:#0c1512;--pg-warn:#ff8f8f;--pg-ok:#7fd8b4;
 --pg-shadow:0 8px 28px rgba(0,0,0,.55)}
body[data-md-color-scheme=voxel-light] .dex-playground-app{
 --pg-panel:#fbfdfcf2;--pg-panel-solid:#fbfdfc;--pg-panel-edge:#cad6d1;--pg-bar:#f2f6f4;
 --pg-accent:#2f6d58;--pg-accent-ink:#fff;--pg-warn:#a32323;--pg-ok:#1f6b4f;
 --pg-shadow:0 8px 28px rgba(18,32,28,.2)}

.dex-playground-app .pg-boot{padding:2rem;text-align:center}
.dex-playground-app .pg-canvas{position:absolute;inset:0;width:100%;height:100%;display:block;touch-action:none;outline:none}

/* ── HUD: one column — tools / read-outs / tray — so nothing can overlap ──────── */
.dex-playground-app .pg-hud{position:absolute;inset:0;pointer-events:none;
 display:flex;flex-direction:column;min-height:0}
.dex-playground-app .pg-hud button,
.dex-playground-app .pg-hud a,
.dex-playground-app .pg-hud input,
.dex-playground-app .pg-hud select,
.dex-playground-app .pg-hud label,
.dex-playground-app .pg-toolbar,
.dex-playground-app .pg-viewtools,
.dex-playground-app .pg-props,
.dex-playground-app .pg-export,
.dex-playground-app .pg-toast,
.dex-playground-app .pg-tray,
.dex-playground-app .pg-picker{pointer-events:auto}
.dex-playground-app .pg-top{display:flex;align-items:flex-start;justify-content:space-between;
 gap:10px;padding:12px 14px 0}
.dex-playground-app .pg-middle{flex:1;min-height:0;position:relative;display:flex;
 justify-content:flex-end;padding:8px 14px 0;pointer-events:none}
.dex-playground-app .pg-bottom{display:flex;flex-direction:column;align-items:center;gap:8px;
 pointer-events:none}
.dex-playground-app [hidden]{display:none!important}

.dex-playground-app button,.dex-playground-app select,.dex-playground-app input{font:inherit}
.dex-playground-app .pg-ghost{padding:7px 12px;border-radius:999px;background:var(--pg-panel);
 border:1px solid var(--pg-panel-edge);color:var(--pg-ink)!important;text-decoration:none;
 white-space:nowrap;cursor:pointer;box-shadow:var(--pg-shadow)}
.dex-playground-app .pg-ghost:disabled{opacity:.45;cursor:default}

/* Toolbar: only three tools, top-left, always in the same place. */
.dex-playground-app .pg-toolbar{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.dex-playground-app .pg-tools{display:flex;background:var(--pg-panel);border:1px solid var(--pg-panel-edge);
 border-radius:999px;overflow:hidden;box-shadow:var(--pg-shadow)}
.dex-playground-app .pg-tool{padding:8px 18px;border:0;background:transparent;color:var(--pg-dim);cursor:pointer}
.dex-playground-app .pg-tool[aria-pressed=true]{background:var(--pg-accent);color:var(--pg-accent-ink);font-weight:700}
.dex-playground-app .pg-tool:disabled{opacity:.45;cursor:default}

.dex-playground-app .pg-viewtools{display:flex;align-items:center;gap:8px;
 flex-wrap:wrap;justify-content:flex-end;
 background:var(--pg-panel);border:1px solid var(--pg-panel-edge);border-radius:999px;
 padding:5px 10px;box-shadow:var(--pg-shadow);font-size:.7rem;color:var(--pg-dim)}
.dex-playground-app .pg-viewtools .pg-ghost{box-shadow:none;padding:5px 10px}
.dex-playground-app .pg-cut{display:flex;align-items:center;gap:6px;white-space:nowrap}
.dex-playground-app .pg-cut input{width:110px}
.dex-playground-app .pg-check{display:flex;align-items:center;gap:5px;white-space:nowrap}
.dex-playground-app .pg-check input{width:auto}

/* Properties: only ever visible while a slot is selected. */
.dex-playground-app .pg-props,
.dex-playground-app .pg-export{align-self:flex-start;width:282px;max-height:100%;
 overflow:auto;background:var(--pg-panel);border:1px solid var(--pg-panel-edge);
 border-radius:var(--pg-radius);box-shadow:var(--pg-shadow);padding:12px 14px}
.dex-playground-app .pg-props h2,.dex-playground-app .pg-export h2{margin:0 0 8px!important;font-size:.82rem;
 font-weight:700;border:0!important;padding:0!important}
.dex-playground-app .pg-proprow{display:flex;align-items:baseline;justify-content:space-between;gap:10px;
 padding:4px 0;border-bottom:1px dashed var(--pg-panel-edge)}
.dex-playground-app .pg-proprow span{font-size:.68rem;color:var(--pg-dim);white-space:nowrap}
.dex-playground-app .pg-proprow strong,.dex-playground-app .pg-proprow a{font-size:.72rem;text-align:right}
.dex-playground-app .pg-proptools{display:flex;flex-wrap:wrap;gap:6px;margin-top:10px}
.dex-playground-app .pg-proptools button{padding:6px 10px;border-radius:6px;cursor:pointer;
 border:1px solid var(--pg-panel-edge);background:var(--pg-bar);color:var(--pg-ink)}
.dex-playground-app .pg-ok{margin:8px 0 0;font-size:.7rem;color:var(--pg-ok);font-weight:600}
.dex-playground-app .pg-error{margin:8px 0 0;font-size:.7rem;color:var(--pg-warn);font-weight:600}
.dex-playground-app .pg-fine{margin:8px 0 0;font-size:.62rem;color:var(--pg-dim)}
.dex-playground-app .pg-hint{margin:.3em 0;font-size:.7rem;color:var(--pg-dim)}
.dex-playground-app .pg-strong{margin:.2em 0;font-weight:700}
.dex-playground-app .pg-count{margin:.3em 0;font-size:.68rem;color:var(--pg-dim)}
.dex-playground-app .pg-dim{font-size:.68rem;color:var(--pg-dim)}
.dex-playground-app .pg-exportlist{margin:6px 0}

.dex-playground-app .pg-toast{
 margin:0;max-width:min(560px,86vw);padding:8px 16px;border-radius:999px;
 font-size:.72rem;text-align:center;background:var(--pg-panel);border:1px solid var(--pg-panel-edge);
 box-shadow:var(--pg-shadow)}
.dex-playground-app .pg-toast[data-kind=error]{color:var(--pg-warn);font-weight:600}

/* ── tray: what fits the clicked slot, and nothing else ──────────────────────── */
.dex-playground-app .pg-tray{align-self:stretch;
 padding:10px 14px calc(10px + env(safe-area-inset-bottom,0px));
 background:var(--pg-panel);border-top:1px solid var(--pg-panel-edge);box-shadow:var(--pg-shadow)}
.dex-playground-app .pg-tray header{display:flex;align-items:center;gap:10px;margin-bottom:8px}
.dex-playground-app .pg-tray header strong{font-size:.8rem}
.dex-playground-app .pg-tray header .pg-ghost{margin-left:auto;box-shadow:none;padding:5px 10px}
.dex-playground-app .pg-traystrip{display:flex;gap:8px;overflow-x:auto;padding-bottom:4px;scrollbar-width:thin}
.dex-playground-app .pg-tile{flex:0 0 118px;padding:0 0 6px;text-align:left;cursor:pointer;border-radius:8px;
 overflow:hidden;background:var(--pg-panel-solid);border:1px solid var(--pg-panel-edge);color:var(--pg-ink)}
.dex-playground-app .pg-tile[data-current=true]{outline:2px solid var(--pg-accent);outline-offset:1px}
.dex-playground-app .pg-tile[data-exact=true] strong{color:var(--pg-accent)}
.dex-playground-app .pg-tile[data-kind=empty],
.dex-playground-app .pg-tile[data-kind=restore]{flex-basis:104px;background:var(--pg-bar)}
.dex-playground-app .pg-tile img{width:100%;aspect-ratio:1.2;object-fit:contain;background:#eef1f4;display:block}
.dex-playground-app .pg-tileart{height:62px;display:flex;align-items:center;justify-content:center;
 font-size:.82rem;font-weight:700;color:var(--pg-dim);
 background:repeating-linear-gradient(45deg,var(--pg-bar),var(--pg-bar) 6px,transparent 6px,transparent 12px)}
.dex-playground-app .pg-tile strong,.dex-playground-app .pg-tile small{display:block;padding:2px 8px}
.dex-playground-app .pg-tile strong{font-size:.7rem}
.dex-playground-app .pg-tile small{font-size:.62rem;color:var(--pg-dim)}
.dex-playground-app .pg-badge{color:var(--pg-accent)!important;font-weight:700}
.dex-playground-app .pg-empty{padding:10px;border:1px dashed var(--pg-panel-edge);border-radius:8px;font-size:.7rem}

/* ── step 0: the base picker, the only modal on the board ────────────────────── */
.dex-playground-app .pg-picker{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;
 padding:16px;background:rgba(12,20,18,.45)}
.dex-playground-app .pg-picker-body{width:min(880px,100%);max-height:min(82vh,780px);overflow:auto;
 background:var(--pg-panel-solid);border:1px solid var(--pg-panel-edge);border-radius:var(--pg-radius);
 box-shadow:var(--pg-shadow);padding:16px}
.dex-playground-app .pg-picker header{display:flex;align-items:center;gap:10px;margin-bottom:10px}
.dex-playground-app .pg-picker h2{margin:0!important;font-size:.95rem;font-weight:700;border:0!important;padding:0!important}
.dex-playground-app .pg-picker header .pg-ghost{margin-left:auto}
.dex-playground-app .pg-search,
.dex-playground-app .pg-field select{width:100%;padding:7px 8px;border-radius:6px;
 border:1px solid var(--pg-panel-edge);background:var(--md-default-bg-color,#fff);color:var(--pg-ink)}
.dex-playground-app .pg-filters{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:8px 0}
.dex-playground-app .pg-field{display:block}
.dex-playground-app .pg-field span{display:block;font-size:.65rem;color:var(--pg-dim);margin-bottom:2px}
.dex-playground-app .pg-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px}
.dex-playground-app .pg-card{padding:0 0 6px;text-align:left;cursor:pointer;border-radius:8px;overflow:hidden;
 background:var(--md-default-bg-color,#fff);border:1px solid var(--pg-panel-edge);color:var(--pg-ink)}
.dex-playground-app .pg-card img{width:100%;aspect-ratio:1.2;object-fit:contain;background:#eef1f4;display:block}
.dex-playground-app .pg-card strong,.dex-playground-app .pg-card small{display:block;padding:2px 8px}
.dex-playground-app .pg-card strong{font-size:.72rem}
.dex-playground-app .pg-card small{font-size:.62rem;color:var(--pg-dim)}
.dex-playground-app .pg-lotart{aspect-ratio:1.2;display:flex;align-items:center;justify-content:center;
 font-size:.9rem;font-weight:700;color:var(--pg-dim);
 background:repeating-conic-gradient(var(--pg-bar) 0 25%,transparent 0 50%) 0 0/24px 24px}

.dex-playground-app button:focus-visible,.dex-playground-app input:focus-visible,
.dex-playground-app select:focus-visible,.dex-playground-app a:focus-visible{outline:3px solid #527cab;outline-offset:2px}

/* ── phone (~400px): tray stays a horizontal scroller, properties become a sheet ─ */
@media (max-width:860px){
 .dex-playground-app .pg-top{flex-direction:column;align-items:stretch;gap:6px;padding:8px 8px 0}
 .dex-playground-app .pg-toolbar{gap:6px}
 .dex-playground-app .pg-tool{padding:7px 12px}
 .dex-playground-app .pg-viewtools{padding:4px 8px;gap:6px;font-size:.66rem;align-self:flex-end}
 .dex-playground-app .pg-cut{display:none}
 /* The right rail becomes a bottom sheet that stacks with the toast and the tray. */
 .dex-playground-app .pg-middle{padding:6px 8px 0;align-items:flex-end;justify-content:stretch}
 .dex-playground-app .pg-props,
 .dex-playground-app .pg-export{align-self:flex-end;width:100%;max-height:34vh}
 .dex-playground-app .pg-toast{max-width:calc(100% - 24px)}
 .dex-playground-app .pg-tray{padding:8px 10px calc(8px + env(safe-area-inset-bottom,0px))}
 .dex-playground-app .pg-tile{flex-basis:104px}
 .dex-playground-app .pg-picker{padding:8px}
 .dex-playground-app .pg-picker-body{padding:12px;max-height:90vh}
 .dex-playground-app .pg-cards{grid-template-columns:repeat(auto-fill,minmax(118px,1fr));gap:8px}
}
