/* My Cabin (src/cabin.js): the user's painted room with the things in it, and only your cabin's name (top
   left, a pencil to rename) and Back to camp (top right) over it, after the user's second mock-up
   (design/camp/cabin/mockups/cabin-v2.webp). On a desk (.cb.stage) the painting is laid out in its own
   pixels (1536 x 1024, "design px") and scaled to cover the page; the corners are measured on the mock-up's
   16:9 frame (1536 x 864) and scaled with it. On a phone (.cb.stack) the painting is a backdrop, the
   things big tiles. */
.cb{--cb-serif:"Crimson Text","Gowun Batang",Georgia,serif;--cb-sans:"Hind","Gowun Dodum",system-ui,sans-serif;
  position:absolute;inset:0;overflow:hidden;background:#0b0806;color:#faeed9;font-family:var(--cb-sans);opacity:0;transition:opacity .6s ease}
.cb.on{opacity:1}
.cb button{font-family:var(--cb-sans);line-height:1}
.cb-stage{position:absolute;left:0;top:0;width:1536px;height:1024px;transform-origin:0 0}
.cb-room,.cb-day{position:absolute;left:0;top:0;width:1536px;height:1024px;display:block;pointer-events:none;user-select:none;-webkit-user-select:none}
.cb-day{opacity:0;transition:opacity 2s linear,filter .35s ease,transform .35s ease}
.cb-room{transition:filter .35s ease,transform .35s ease}
/* the stove's fire: the clip over the glass (scripts/cabin/build-fire.py: 92 x 77.5 design px at 1071, 344) */
.cb-fire{position:absolute;left:1071px;top:344px;width:92px;height:77.5px;display:block;pointer-events:none;user-select:none;-webkit-user-select:none}
/* and its light on the room, unsteady as firelight is (small, quick, never the same two steps) */
.cb-glow{position:absolute;left:953px;top:240px;width:330px;aspect-ratio:1;border-radius:50%;pointer-events:none;mix-blend-mode:screen;background:radial-gradient(closest-side,rgba(255,140,50,.26),rgba(255,120,40,.08) 55%,transparent);animation:cbFlicker 5.3s linear infinite}
@keyframes cbFlicker{0%{opacity:.8}7%{opacity:.92}13%{opacity:.76}22%{opacity:.98}29%{opacity:.84}36%{opacity:.9}44%{opacity:.7}51%{opacity:.95}58%{opacity:.82}66%{opacity:1}73%{opacity:.78}81%{opacity:.9}88%{opacity:.74}94%{opacity:.96}100%{opacity:.8}}

/* pointing at a thing darkens the rest of the room (the mock-up's second screen: the room at about half
   its light); the thing pointed at stays above, until the room is back */
.cb-dim{position:absolute;inset:0;z-index:1;background:rgba(10,6,3,.5);opacity:0;transition:opacity .35s ease;pointer-events:none}
.cb-stage:has(.cb-thing:hover) .cb-dim,.cb-stage:has(.cb-thing:focus-visible) .cb-dim{opacity:1}
.cb.busy .cb-dim,.cb.stack .cb-dim{display:none}

/* ---- the things: the user's cut-outs where their painting has them. Pointing at one lights its outline
   (its ring) and shows its name tag; on their own the outlines come and go softly, all three together
   every 3 s (the user, 2026-10-15) ---- */
.cb-things{position:absolute;inset:0;pointer-events:none;transition:filter .35s ease}
.cb-thing{position:absolute;z-index:0;padding:0;border:0;background:none;cursor:pointer;pointer-events:auto;color:#faf1e6;transition:transform .2s cubic-bezier(.2,.8,.2,1),filter .2s,z-index 0s linear .35s}
.cb-thing img{position:absolute;display:block;pointer-events:none}
.cb-thing .obj{inset:0;width:100%;height:100%}
.cb-thing .ring{left:calc(-1 * var(--pad));top:calc(-1 * var(--pad));width:calc(100% + 2 * var(--pad));height:calc(100% + 2 * var(--pad));opacity:0;animation:cbRing 3s ease-in-out 1s infinite both;transition:opacity .25s}
@keyframes cbRing{0%{opacity:0}30%{opacity:.5}60%,100%{opacity:0}}
.cb-thing:hover,.cb-thing:focus-visible{z-index:2;filter:brightness(1.08);transform:translateY(-4px);outline:none;transition:transform .2s cubic-bezier(.2,.8,.2,1),filter .2s,z-index 0s}
/* (an important opacity wins over the running pulse, which keeps its turn in the round underneath) */
.cb-thing:hover .ring,.cb-thing:focus-visible .ring{opacity:1!important}
/* the name tag (the mock-up's): the Korean name over the English one, near the thing */
.cb-thing .tag{position:absolute;display:flex;flex-direction:column;align-items:center;gap:7px;box-sizing:border-box;padding:15px 24px 14px;border-radius:18px;background:rgba(48,26,10,.9);border:2.5px solid #c98a45;box-shadow:0 6px 18px rgba(0,0,0,.4);white-space:nowrap;opacity:0;transform:translateY(6px);transition:opacity .2s,transform .2s;pointer-events:none}
.cb-thing .tag b{font:600 27px/1 var(--cb-sans);color:#fbeedd}
.cb-thing .tag i{font:400 18px/1 var(--cb-sans);font-style:normal;color:#e6cba6}
.cb-thing:hover .tag,.cb-thing:focus-visible .tag{opacity:1;transform:none}
.cb-thing.wardrobe .tag{right:calc(100% - 100px);top:97px}
.cb-thing.diary .tag{left:66%;bottom:calc(100% - 10px);transform:translate(-50%,6px)}
.cb-thing.diary:hover .tag,.cb-thing.diary:focus-visible .tag{transform:translate(-50%,0)}
.cb-thing.player .tag{left:50%;bottom:calc(100% + 14px);transform:translate(-50%,6px)}
.cb-thing.player:hover .tag,.cb-thing.player:focus-visible .tag{transform:translate(-50%,0)}
.cb.busy .cb-thing{pointer-events:none}
/* the wardrobe open: the room behind it softly blurred (the user: "적당히"), its outlines resting */
.cb.busy .cb-room,.cb.busy .cb-day,.cb.busy .cb-things,.cb.busy .cb-fire{filter:blur(4px) brightness(.9)}
.cb.busy .cb-room,.cb.busy .cb-day{transform:scale(1.012)}
.cb.busy .cb-thing .ring,.cb.busy .cb-thing .tag{opacity:0!important}
/* the first time in: what to try, in quiet white, breathing and drifting a little until the first click */
.cb-hint{position:absolute;left:0;right:0;top:58%;z-index:6;display:flex;justify-content:center;padding:0 24px;pointer-events:none;opacity:0;animation:cbHintIn .9s ease .7s forwards}
.cb-hint span{font:400 clamp(17px,1.5vw,24px)/1.3 var(--cb-sans);letter-spacing:.02em;text-align:center;color:rgba(255,250,240,.92);text-shadow:0 1px 10px rgba(0,0,0,.85),0 0 2px rgba(0,0,0,.6);animation:cbHintBob 2.3s cubic-bezier(.37,0,.63,1) 1.6s infinite alternate}
@keyframes cbHintIn{to{opacity:1}}
/* (one motion with no rest at either end, a sine's ease: down while fading out, up while fading in) */
@keyframes cbHintBob{from{opacity:1;transform:translateY(-3px)}to{opacity:.22;transform:translateY(10px)}}
.cb.stack .cb-hint{top:auto;bottom:calc(var(--safe-b) + 150px)}
.cb.busy .cb-hint{display:none}
/* the journal open: the room a little darker behind the book, the corners put away */
.cb.reading .cb-room,.cb.reading .cb-day,.cb.reading .cb-things,.cb.reading .cb-fire{filter:blur(5px) brightness(.62)}
.cb.reading .cb-edge,.cb.reading .cb-glow{visibility:hidden}
@media (prefers-reduced-motion:reduce){.cb-glow{animation:none}.cb-thing .ring{animation:none;opacity:.3}.cb-hint span{animation:none;opacity:.85}}

/* ---- the corners, scaled with the mock-up's 16:9 frame (src/cabin.js fit): above the wardrobe ---- */
.cb-edge{position:absolute;top:0;width:0;height:0;z-index:7;transform-origin:0 0}
.cb-edge.l{left:0}
/* your cabin's name: the mock-up's chip, the house, the name and a pencil, "My Cabin · Day 7" under it */
.cb-chip{position:absolute;left:31px;top:26px;display:flex;align-items:center;gap:15px;box-sizing:border-box;height:96px;padding:0 22px 0 18px;border-radius:20px;background:rgba(34,20,11,.88);border:1.5px solid rgba(214,168,112,.32);box-shadow:0 6px 18px rgba(0,0,0,.3);white-space:nowrap}
.cb-house{flex:none;width:50px;height:50px;color:#e8b277}
.cb-house svg{display:block;width:100%;height:100%}
.cb-names{display:flex;flex-direction:column;gap:9px;min-width:0}
/* (Korean letters, and the Korean fallback's content area, reach up to 0.3 em above a one-line box, and
   the box clips: room inside the clip, the box pulled out by the same, so the words stay where they are.
   The same in the Library, styles/library.css.) */
.cb-title{margin:-.3em 0;padding:.3em 0;font:600 27px/1 var(--cb-sans);color:#fbeedd;overflow:hidden;text-overflow:ellipsis;max-width:420px}
.cb-title:focus{outline:none}
.cb-sub{font:400 17px/1 var(--cb-sans);color:#bfa98c}
.cb-pen{flex:none;width:44px;height:44px;margin-left:6px;display:grid;place-items:center;padding:0;border:0;border-radius:10px;background:none;color:#e8b277;cursor:pointer}
.cb-pen svg{width:28px;height:28px}
.cb-pen:hover,.cb-pen[aria-expanded="true"]{background:rgba(255,236,205,.08);color:#ffd08e}
/* the pencil's small form */
.cb-rename{position:absolute;left:31px;top:134px;display:flex;gap:10px;box-sizing:border-box;padding:14px;border-radius:16px;background:rgba(34,20,11,.95);border:1.5px solid rgba(214,168,112,.32);box-shadow:0 8px 22px rgba(0,0,0,.4)}
.cb-rename[hidden]{display:none}
.cb-rename input{width:250px;height:52px;box-sizing:border-box;padding:0 16px;font:500 21px/1 var(--cb-sans);color:#f7ead6;background:rgba(255,236,205,.06);border:1.5px solid rgba(255,236,205,.18);border-radius:11px;outline:none}
.cb-rename input:focus{border-color:#f1973b;box-shadow:0 0 0 2px rgba(241,151,59,.3)}
.cb-rename button{height:52px;padding:0 22px;border:0;border-radius:11px;background:linear-gradient(#f9b45c,#f29a3e);color:#3a1a05;font:600 20px/1 var(--cb-sans);cursor:pointer}
.cb-rename button:hover{background:linear-gradient(#ffc06a,#f7a44a)}
.cb-rename{flex-wrap:wrap}
.cb-rename-state{flex-basis:100%;margin:0;font:500 16px/1.2 var(--cb-sans);color:#f7c9a0}
.cb-rename-state[hidden]{display:none}
.cb-rename.busy{opacity:.7;pointer-events:none}
/* (Back to camp is the page's own since 2026-10-17, top right as in every building: styles/camp.css) */
.cb-pen:focus-visible,.cb-rename button:focus-visible{outline:2px solid #f0c27a;outline-offset:2px}

/* ---- a phone, or a window near square: the painting behind, the things as big tiles at the bottom ---- */
.cb.stack .cb-stage{position:absolute;inset:0;width:auto;height:auto;transform:none!important}
.cb.stack .cb-room,.cb.stack .cb-day{position:fixed;width:100%;height:100%;object-fit:cover;object-position:56% 45%}
.cb.stack .cb-stage::before{content:"";position:fixed;inset:0;background:linear-gradient(180deg,rgba(11,8,6,.15),rgba(11,8,6,0) 30%,rgba(11,8,6,.25) 60%,rgba(11,8,6,.7));pointer-events:none}
.cb.stack .cb-glow,.cb.stack .cb-fire{display:none}
.cb.stack .cb-things{position:absolute;left:12px;right:12px;top:auto;bottom:calc(var(--safe-b) + 14px);display:grid;grid-template-columns:repeat(3,1fr);gap:10px;pointer-events:auto}
.cb.stack .cb-thing{position:relative;left:auto!important;top:auto!important;width:auto!important;height:auto!important;aspect-ratio:1;border-radius:16px;background:rgba(34,20,11,.82);border:1.5px solid rgba(214,168,112,.3);overflow:hidden}
.cb.stack .cb-thing .obj{left:12%;top:8%;width:76%;height:60%;object-fit:contain}
.cb.stack .cb-thing .ring{display:none}
.cb.stack .cb-thing .tag{position:absolute;left:0;right:0;bottom:10px;top:auto;padding:0;gap:4px;border:0;background:none;box-shadow:none;opacity:1;transform:none!important}
.cb.stack .cb-thing .tag b{font-size:15px}
.cb.stack .cb-thing .tag i{font-size:11px}
.cb.stack .cb-thing:hover,.cb.stack .cb-thing:focus-visible{transform:none;filter:brightness(1.1)}
.cb.stack.busy .cb-things{opacity:0}
/* (the corners smaller, the name clear of the menu's arrow on the left edge) */
.cb.stack .cb-edge{transform:scale(.54)!important}
.cb.stack .cb-edge.l{left:calc(env(safe-area-inset-left,0px) + 32px)}
/* (on a phone the name sits under the settings and Back to camp, which share the top since 2026-10-17:
   the bar is 14 + 40 px, then 10 px; in the corner's .54 scale) */
.cb.stack .cb-chip{left:0;top:calc((var(--safe-t) + 64px) / .54)}
.cb.stack .cb-title{max-width:290px}
.cb.stack .cb-rename{left:0;top:calc((var(--safe-t) + 64px) / .54 + 108px)}

/* ---- the record player (src/cabin.js openPlayer; the user's mock-up design/camp/cabin/mockups/player.webp,
   2026-10-29): your playlist on a panel over the room, 910 x 631 design px of the 16:9 frame, centred on the
   page and scaled with the corners (--u, src/cabin.js fit); the room darkens to about two thirds behind it
   and its things rest; the corners stay. The measurements are in design/camp/cabin/README.md. ---- */
.cb-music{position:absolute;inset:0;z-index:6;display:grid;place-items:center;opacity:0;transition:opacity .25s ease}
.cb-music.on{opacity:1}
.cb-music.off{opacity:0;pointer-events:none;transition-duration:.22s}
.cb.music .cb-dim{display:block;opacity:.7}
.cb.music .cb-thing{pointer-events:none}
.cb.music .cb-thing .ring,.cb.music .cb-thing .tag{opacity:0!important}
.cb.music .cb-hint{display:none}
.cm{--cm-gold:#e8b277;--cm-ink:#fbeedd;--cm-quiet:#c9a77a;--cm-line:rgba(214,168,112,.22);
  position:relative;box-sizing:border-box;width:910px;height:631px;border-radius:17px;border:2px solid rgba(214,168,112,.42);
  background:linear-gradient(180deg,rgba(44,24,15,.96),rgba(40,20,10,.975));box-shadow:0 24px 70px rgba(0,0,0,.55),inset 0 1px 0 rgba(255,236,205,.06);
  color:var(--cm-ink);font-family:var(--cb-sans);transform:scale(var(--u,1));transform-origin:50% 50%}
.cm button{font-family:var(--cb-sans);line-height:1}
.cm button:focus-visible,.cm-slider:focus-visible{outline:2px solid #f0c27a;outline-offset:2px}
/* the head: the note, "My playlist" and its count, Edit, X */
.cm-head{position:absolute;left:25px;right:25px;top:0;height:81px;display:flex;align-items:center;border-bottom:1px solid var(--cm-line)}
.cm-note{flex:none;width:30px;height:30px;margin-left:16px;color:#f2cf98}
.cm-note svg{display:block;width:100%;height:100%}
.cm-title{margin:-.3em 0 -.3em 24px;padding:.3em 0;font:600 28px/1 var(--cb-sans);color:var(--cm-ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cm-count{flex:none;margin-left:12px;padding-top:5px;font:400 17px/1 var(--cb-sans);color:var(--cm-quiet);white-space:nowrap}
.cm-edit{flex:none;margin-left:auto;display:flex;align-items:center;gap:9px;height:44px;padding:0 12px;border:0;border-radius:10px;background:none;color:#ead9bd;font:400 18px/1 var(--cb-sans);cursor:pointer;white-space:nowrap}
.cm-edit svg{width:20px;height:20px}
.cm-edit[hidden]{display:none}
.cm-edit:hover{background:rgba(255,236,205,.07);color:#ffd9a0}
.cm-edit[aria-pressed="true"]{color:#f5b86a;background:rgba(245,184,106,.1)}
.cm-x{flex:none;width:44px;height:44px;margin:0 -9px 0 8px;display:grid;place-items:center;padding:0;border:0;border-radius:50%;background:none;color:#f3e7d2;cursor:pointer}
.cm-x svg{width:24px;height:24px}
.cm-x:hover{background:rgba(255,236,205,.08);color:#fff}
/* the record on: its sleeve with the vinyl out in front (the user's vinyl, the Library's; it turns while it
   plays), "Now playing" / "Paused", its name, and its other name or who it is by */
.cm-now{position:absolute;left:25px;top:81px;width:360px;height:380px;display:flex;flex-direction:column;align-items:center;text-align:center}
.cm-disc{position:relative;flex:none;width:360px;height:280px}
.cm-sleeve{position:absolute;left:17px;top:33px;width:226px;height:226px;box-sizing:border-box;object-fit:cover;border-radius:3px;border:1px solid rgba(255,236,205,.16);background:#2a1a10;box-shadow:0 12px 26px rgba(0,0,0,.55)}
.cm-vinyl{position:absolute;left:114px;top:35px;width:234px;height:234px;filter:drop-shadow(0 12px 18px rgba(0,0,0,.6));pointer-events:none}
.cm-vinyl img{position:absolute;inset:0;width:100%;height:100%;display:block}
.cm-vinyl .spin{animation:cmSpin 1.8s linear infinite;animation-play-state:paused}
.cm-vinyl.on .spin{animation-play-state:running}
@keyframes cmSpin{to{transform:rotate(1turn)}}
.cm-state{margin-top:8px;min-height:18px;font:400 15px/1.2 var(--cb-sans);color:var(--cm-quiet)}
.cm-name{display:block;max-width:330px;margin:calc(4px - .3em) 0 -.3em;padding:.3em 0;font:600 26px/1.15 var(--cb-serif);letter-spacing:.01em;color:#f4e7d2;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cm-sub{display:block;max-width:330px;min-height:19px;margin-top:6px;font:400 16px/1.2 var(--cb-sans);font-style:normal;color:var(--cm-quiet);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
/* the list: a number, the name, the length; the record on in a lit box, its number the bars */
.cm-list{position:absolute;left:405px;top:93px;width:475px;height:364px;box-sizing:border-box;margin:0;padding:0 2px 0 0;list-style:none;overflow-y:auto;overscroll-behavior:contain;scrollbar-width:thin;scrollbar-color:rgba(214,168,112,.35) transparent}
.cm-row{position:relative;height:55px;box-sizing:border-box;border-bottom:1px solid var(--cm-line)}
.cm-row:last-child,.cm-row.now,.cm-row:has(+ .now){border-bottom-color:transparent}
.cm-pick{position:absolute;left:0;top:1px;width:100%;height:52px;box-sizing:border-box;display:flex;align-items:center;padding:0 80px 0 75px;border:1.5px solid transparent;border-radius:11px;background:none;color:#efe2cc;font:400 19.5px/1.2 var(--cb-sans);text-align:left;cursor:pointer}
.cm-pick:hover{background:rgba(255,236,205,.05)}
.cm-t{display:block;min-width:0;max-width:100%;padding:.3em 0;margin:-.3em 0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cm-n,.cm-d{position:absolute;top:50%;transform:translateY(-50%);pointer-events:none;font:400 17px/1 var(--cb-sans);color:var(--cm-quiet);font-variant-numeric:tabular-nums}
.cm-n{left:23px;color:#b89d7a}
.cm-d{right:21px}
.cm-row.now .cm-pick{background:linear-gradient(180deg,rgba(116,68,36,.92),rgba(96,52,26,.94));border-color:rgba(190,130,75,.6);box-shadow:inset 0 1px 0 rgba(255,236,205,.1),0 2px 8px rgba(0,0,0,.25);color:#fff3e0}
.cm-bars{display:flex;align-items:flex-end;gap:3px;height:18px}
.cm-bars i{display:block;width:4px;border-radius:1.5px;background:var(--cm-gold);transform-origin:50% 100%}
.cm-bars i:nth-child(1){height:10px}.cm-bars i:nth-child(2){height:18px;animation-delay:-.37s}.cm-bars i:nth-child(3){height:13px;animation-delay:-.74s}
.cm-row.on .cm-bars i{animation:cmBar 1.1s ease-in-out infinite}
@keyframes cmBar{0%,100%{transform:scaleY(.45)}50%{transform:scaleY(1)}}
.cm-empty{padding:20px 23px;font:400 18px/1.4 var(--cb-sans);color:var(--cm-quiet)}
/* editing: a grip to drag a record up or down (or the arrow keys), a minus to take it out */
.cm-list.editing .cm-pick{padding:0 60px 0 62px;cursor:default;pointer-events:none}
.cm-grip,.cm-out{position:absolute;top:50%;width:44px;height:44px;margin-top:-22px;display:grid;place-items:center;padding:0;border:0;border-radius:50%;background:none;color:var(--cm-quiet);cursor:pointer}
.cm-grip svg,.cm-out svg{width:24px;height:24px}
.cm-grip{left:8px;cursor:grab;touch-action:none}
.cm-out{right:6px}
.cm-grip:hover,.cm-out:hover{background:rgba(255,236,205,.07);color:#ffd9a0}
.cm-out:hover{color:#ff9b7a}
.cm-row.lifted{z-index:2}
.cm-row.lifted .cm-pick{background:rgba(255,236,205,.09);border-color:rgba(214,168,112,.45);box-shadow:0 8px 20px rgba(0,0,0,.45)}
.cm-row.lifted .cm-grip{cursor:grabbing;color:#f5b86a}
/* the foot: the bar and the time, shuffle / previous / play / next / repeat, the volume */
.cm-foot{position:absolute;left:25px;right:25px;top:465px;height:164px;border-top:1px solid var(--cm-line)}
.cm-prog{position:absolute;left:0;right:0;top:22px;height:14px}
.cm-time,.cm-len{position:absolute;top:50%;transform:translateY(-50%);font:400 16px/1 var(--cb-sans);color:#d9c4a3;font-variant-numeric:tabular-nums;white-space:nowrap}
.cm-time{right:calc(100% - 91px)}
.cm-len{left:776px}
.cm-bar{left:115px;width:637px}
.cm-slider{position:absolute;top:50%;height:6px;margin-top:-3px;border-radius:3px;background:rgba(255,236,205,.17);cursor:pointer;touch-action:none;outline:none}
.cm-slider::before{content:"";position:absolute;left:-8px;right:-8px;top:-14px;bottom:-14px}
.cm-slider i{position:absolute;left:0;top:0;bottom:0;border-radius:3px;background:linear-gradient(90deg,#e4a75f,#f6c07a);pointer-events:none}
.cm-slider b{position:absolute;top:50%;width:14px;height:14px;margin:-7px 0 0 -7px;border-radius:50%;background:#f9bc6c;box-shadow:0 0 0 2px rgba(50,26,10,.55),0 0 10px rgba(249,184,104,.5);pointer-events:none;transition:transform .15s}
.cm-slider.held b,.cm-slider:hover b{transform:scale(1.15)}
.cm-ctl{position:absolute;left:0;right:0;top:61px;height:44px}
.cm-btn{position:absolute;top:0;width:44px;height:44px;margin-left:-22px;display:grid;place-items:center;padding:0;border:0;border-radius:50%;background:none;color:#ead9bd;cursor:pointer;transition:color .15s,background .15s}
.cm-btn svg{width:24px;height:24px}
.cm-btn[data-cm="prev"] svg,.cm-btn[data-cm="next"] svg{width:22px;height:22px}
.cm-btn:hover{color:#ffd9a0;background:rgba(255,236,205,.07)}
.cm-btn[aria-pressed="true"]{color:#f5b86a;filter:drop-shadow(0 0 5px rgba(245,184,106,.6))}
.cm-btn:disabled,.cm-play:disabled{opacity:.35;cursor:default;background:none;transform:none}
.cm-btn[data-cm="shuffle"]{left:205px}
.cm-btn[data-cm="prev"]{left:282px}
.cm-btn[data-cm="next"]{left:450px}
.cm-btn[data-cm="repeat"]{left:520px}
.cm-play{position:absolute;left:366px;top:-11.5px;width:67px;height:67px;margin-left:-33.5px;display:grid;place-items:center;padding:0;border-radius:50%;border:2.5px solid #f3c27d;background:radial-gradient(circle at 50% 28%,#ad7742,#6a4122 72%);box-shadow:0 4px 14px rgba(0,0,0,.45),0 0 16px rgba(243,194,125,.25),inset 0 1px 0 rgba(255,236,205,.15);color:#f8c984;cursor:pointer;transition:transform .15s,box-shadow .15s}
.cm-play svg{width:28px;height:28px}
.cm-play:hover{transform:scale(1.04);box-shadow:0 6px 18px rgba(0,0,0,.5),0 0 22px rgba(243,194,125,.4)}
.cm-sep{position:absolute;left:580px;top:-6px;width:1px;height:56px;background:rgba(214,168,112,.3)}
.cm-volume{position:absolute;left:622px;top:0;width:235px;height:44px}
.cm-speaker{position:absolute;left:0;top:8px;width:28px;height:28px;color:#ead9bd}
.cm-speaker svg{display:block;width:100%;height:100%}
.cm-vol{left:69px;width:166px}
@media (prefers-reduced-motion:reduce){.cm-vinyl .spin{animation:none}.cm-bars i{animation:none!important}}

/* ---- the player on a phone: the panel is the page (under the settings and Back to camp); the sleeve small
   beside the name, the list scrolls, the bar and the buttons at the bottom, the volume under them ---- */
.cb.stack .cb-music{position:fixed;inset:0;z-index:8;display:block}
.cb.stack.music .cb-edge{visibility:hidden}
.cb.stack .cm{position:absolute;inset:0;width:auto;height:auto;border:0;border-radius:0;transform:none;display:flex;flex-direction:column;padding-top:calc(var(--safe-t) + 64px);background:rgba(34,18,10,.97);box-shadow:none}
.cb.stack .cm-head{position:relative;left:auto;right:auto;top:auto;flex:none;height:56px;margin:0 16px}
.cb.stack .cm-note{width:24px;height:24px;margin-left:0}
.cb.stack .cm-title{margin-left:12px;font-size:21px}
.cb.stack .cm-count{font-size:14px;padding-top:3px}
.cb.stack .cm-edit{height:40px;font-size:16px}
.cb.stack .cm-x{margin-right:-10px}
.cb.stack .cm-now{position:relative;left:auto;top:auto;width:auto;height:auto;flex:none;display:grid;grid-template-columns:150px minmax(0,1fr);grid-template-rows:auto auto auto;column-gap:14px;align-items:center;text-align:left;padding:10px 16px 6px}
.cb.stack .cm-disc{grid-row:1/4;width:150px;height:120px}
.cb.stack .cm-sleeve{left:4px;top:12px;width:100px;height:100px}
.cb.stack .cm-vinyl{left:46px;top:11px;width:104px;height:104px}
.cb.stack .cm-state{margin:0;align-self:end;min-height:0;font-size:13px}
.cb.stack .cm-name{max-width:100%;margin-top:calc(2px - .3em);font-size:20px}
.cb.stack .cm-sub{max-width:100%;min-height:0;margin-top:3px;align-self:start;font-size:14px}
.cb.stack .cm-list{position:relative;left:auto;top:auto;width:auto;height:auto;flex:1 1 auto;min-height:0;margin:4px 8px 0;padding:0 4px}
.cb.stack .cm-row{height:50px}
.cb.stack .cm-pick{height:47px;padding:0 70px 0 58px;font-size:17px}
.cb.stack .cm-n{left:14px;font-size:15px}
.cb.stack .cm-d{right:14px;font-size:15px}
.cb.stack .cm-list.editing .cm-pick{padding:0 52px 0 52px}
.cb.stack .cm-grip{left:2px}
.cb.stack .cm-out{right:0}
.cb.stack .cm-foot{position:relative;left:auto;right:auto;top:auto;height:auto;flex:none;margin:0 16px;padding:12px 0 calc(var(--safe-b) + 12px)}
.cb.stack .cm-prog{position:relative;left:auto;right:auto;top:auto;height:24px;display:flex;align-items:center;gap:12px}
.cb.stack .cm-time,.cb.stack .cm-len{position:static;transform:none;min-width:38px;font-size:14px}
.cb.stack .cm-len{text-align:right}
.cb.stack .cm-bar{position:relative;left:auto;top:auto;margin-top:0;flex:1;width:auto}
.cb.stack .cm-ctl{position:relative;left:auto;right:auto;top:auto;height:auto;margin-top:10px;display:flex;align-items:center;justify-content:center;gap:6px;flex-wrap:wrap}
.cb.stack .cm-btn{position:static;margin:0}
.cb.stack .cm-play{position:static;margin:0 6px;width:60px;height:60px}
.cb.stack .cm-sep{display:none}
.cb.stack .cm-volume{position:relative;left:auto;top:auto;flex:1 1 100%;width:auto;height:36px;margin-top:4px;display:flex;align-items:center;gap:12px;padding:0 8px;box-sizing:border-box}
.cb.stack .cm-speaker{position:static;flex:none;width:24px;height:24px}
.cb.stack .cm-vol{position:relative;left:auto;top:auto;margin-top:0;flex:1;width:auto}
