/* =========================================================
   Tokens
   ========================================================= */
:root{
  box-sizing:border-box;
  padding-top:env(safe-area-inset-top,0px);
  padding-bottom:env(safe-area-inset-bottom,0px);
  color-scheme:light dark;
  --font-ui:"Bricolage Grotesque","Avenir Next","Segoe UI",system-ui,sans-serif;
  --font-read:"Newsreader","Iowan Old Style","Palatino Linotype",Georgia,serif;

  --paper:#F2E6E2; --paper-2:#E9D8D3; --paper-3:#DCC6C0;
  --ink:#2A2220; --ink-2:#5F5550; --line:rgba(42,34,32,.15);
  --accent:#8E2F3C; --accent-ink:#FFF4F1;
  --focus:#FFB45A;
  --hud-bg:rgba(34,21,17,.78); --hud-ink:#F7EAE5; --hud-ink-2:#CDB9B1;
  --room-dim:.16; --glow:.5; --sun:.55; --bulb:.7; --vignette:.35;
  --body-bg:#3A1D16;

  --hud-h:58px; --dock-h:66px; --compact-h:240px;
  --drawer-h:clamp(262px,38vh,318px);
  --booklet-w:760px;
  --jk:172px; --slot-w:134px;
}
@media (prefers-color-scheme:dark){
  :root:not([data-theme="light"]){
    --paper:#1F1715; --paper-2:#2A201D; --paper-3:#382B27;
    --ink:#F2E6E2; --ink-2:#C4B3AC; --line:rgba(242,230,226,.14);
    --accent:#F29CAB; --accent-ink:#2B1216;
    --room-dim:.56; --glow:.9; --sun:0; --bulb:1; --vignette:.6;
    --body-bg:#160C0A;
  }
}
:root[data-theme="dark"]{
  --paper:#1F1715; --paper-2:#2A201D; --paper-3:#382B27;
  --ink:#F2E6E2; --ink-2:#C4B3AC; --line:rgba(242,230,226,.14);
  --accent:#F29CAB; --accent-ink:#2B1216;
  --room-dim:.56; --glow:.9; --sun:0; --bulb:1; --vignette:.6;
  --body-bg:#160C0A;
}
/* Room starts lights-off behind the needle-drop intro; lifted on zoom-out */
:root[data-intro="pre"]{--room-dim:.97; --glow:0; --sun:0; --bulb:0; --vignette:.9}

.no-anim,.no-anim *{transition:none!important;animation:none!important}

*,*::before,*::after{box-sizing:border-box}
html{height:100%;scroll-padding-top:env(safe-area-inset-top,0px);-webkit-text-size-adjust:100%}
body{margin:0;height:100%;overflow:hidden;background:var(--body-bg);color:var(--ink);
  font-family:var(--font-ui);font-size:16px;line-height:1.5;-webkit-font-smoothing:antialiased}
img,video{max-width:100%;display:block}
button{font:inherit;color:inherit}
a{color:inherit}
:focus-visible{outline:3px solid var(--focus);outline-offset:3px;border-radius:4px}
.sr-only{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.skip{position:fixed;left:12px;top:calc(env(safe-area-inset-top,0px) + 8px);z-index:100;padding:10px 14px;border-radius:10px;
  background:#F7EAE5;color:#2A2220;font-weight:650;text-decoration:none;transform:translateY(-220%)}
.skip:focus{transform:none}

/* =========================================================
   HUD
   ========================================================= */
.hud{position:fixed;top:0;left:0;right:0;z-index:50;padding-top:env(safe-area-inset-top,0px);
  background:var(--hud-bg);color:var(--hud-ink);
  -webkit-backdrop-filter:blur(14px) saturate(1.25);backdrop-filter:blur(14px) saturate(1.25);
  border-bottom:1px solid rgba(255,214,190,.1)}
.hud-row{height:var(--hud-h);display:flex;align-items:center;gap:14px;
  padding:0 max(14px,env(safe-area-inset-right,0px)) 0 max(14px,env(safe-area-inset-left,0px))}
.onair{display:flex;align-items:center;gap:10px;min-width:0}
.onair-dot{flex:none;width:9px;height:9px;border-radius:50%;background:#ff5a4f;box-shadow:0 0 0 3px rgba(255,90,79,.22);animation:onair 2.4s ease-in-out infinite}
@keyframes onair{50%{opacity:.35}}
.onair-text{display:flex;flex-direction:column;line-height:1.2;min-width:0}
.onair-text strong{font-weight:650;font-size:14px;white-space:nowrap}
.onair-text span{font-size:12.5px;color:var(--hud-ink-2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:32ch}
.hud-clock{display:flex;flex-direction:column;line-height:1.2;padding-left:14px;border-left:1px solid rgba(255,214,190,.16);font-variant-numeric:tabular-nums}
.hud-clock span:first-child{font-size:14px;font-weight:600}
.hud-clock span:last-child{font-size:12.5px;color:var(--hud-ink-2)}
.hud-spacer{flex:1}
.switch{display:flex;align-items:center;gap:10px;background:rgba(255,255,255,.06);border:1px solid rgba(255,214,190,.14);padding:5px 12px 5px 6px;border-radius:12px;cursor:pointer}
.switch:hover{background:rgba(255,255,255,.11)}
.switch-track{flex:none;width:42px;height:24px;border-radius:12px;background:rgba(255,255,255,.2);position:relative;transition:background .25s}
.switch-thumb{position:absolute;top:3px;left:3px;width:18px;height:18px;border-radius:50%;background:#F7EAE5;transition:transform .25s;box-shadow:0 1px 3px rgba(0,0,0,.3)}
.switch[aria-checked="true"] .switch-track{background:#F29CAB}
.switch[aria-checked="true"] .switch-thumb{transform:translateX(18px)}
.switch-label{display:flex;flex-direction:column;text-align:left;line-height:1.15}
.switch-label strong{font-size:14px;font-weight:650}
.switch-label small{font-size:12px;color:var(--hud-ink-2)}
.icon-btn{flex:none;width:38px;height:38px;display:grid;place-items:center;border-radius:10px;border:0;background:rgba(255,255,255,.07);cursor:pointer;color:inherit}
.icon-btn:hover{background:rgba(255,255,255,.14)}
.icon-btn svg{width:20px;height:20px}
.vol{display:flex;align-items:center;gap:8px}
.vol input{width:92px;accent-color:#F29CAB}

/* =========================================================
   Room + stage
   ========================================================= */
.room{position:fixed;inset:0;overflow:hidden;background:var(--body-bg);
  transition:opacity .45s ease,transform .45s ease,visibility 0s linear 0s}
.room::after{content:"";position:absolute;inset:0;pointer-events:none;z-index:4;transition:background 1.6s ease-out;
  background:radial-gradient(120% 95% at 50% 42%,transparent 52%,rgba(8,3,2,var(--vignette)))}
html[data-mode="fast"] .room{opacity:0;transform:scale(.97);visibility:hidden;
  transition:opacity .45s ease,transform .45s ease,visibility 0s linear .45s}
.stage{position:absolute;left:0;top:0;width:2400px;height:1300px;transform-origin:0 0;will-change:transform;
  transition:transform .75s cubic-bezier(.22,.7,.2,1)}
.set{position:absolute;left:400px;top:300px;width:1600px;height:1000px}
.set>*{position:absolute}
#wall{position:absolute;left:0;top:0;width:2400px;height:1130px}
.baseboard{position:absolute;left:0;top:1130px;width:2400px;height:18px;background:linear-gradient(#4a2a1c,#2a170f)}
.floor{position:absolute;left:0;top:1148px;width:2400px;height:152px;
  background:
    repeating-linear-gradient(90deg,rgba(0,0,0,.2) 0 2px,transparent 2px 190px),
    repeating-linear-gradient(90deg,rgba(255,220,180,.035) 0 1px,transparent 1px 23px),
    linear-gradient(#6a3f28,#3d2416 60%,#2a180f)}
.sunbeam{position:absolute;left:1500px;top:0;width:1100px;height:1300px;pointer-events:none;opacity:var(--sun);
  background:
    linear-gradient(90deg,transparent 0 31%,rgba(60,20,10,.35) 31% 33%,transparent 33% 64%,rgba(60,20,10,.35) 64% 66%,transparent 66%),
    linear-gradient(180deg,rgba(255,196,120,0),rgba(255,196,120,.42) 30%,rgba(255,170,90,.22) 70%,rgba(255,170,90,0));
  transform:skewX(-24deg);mix-blend-mode:screen;transition:opacity 1.6s ease-out}
.dim{position:absolute;inset:0;pointer-events:none;transition:background 1.6s ease-out}
.dim-wall{background:rgba(18,8,6,var(--room-dim))}
.dim-all{background:rgba(18,8,6,calc(var(--room-dim) * .42))}
.glow{position:absolute;inset:0;pointer-events:none;mix-blend-mode:screen;opacity:var(--glow);transition:opacity 1.6s ease-out;
  background:
    radial-gradient(420px 380px at 500px 560px,rgba(255,176,90,.55),transparent 70%),
    radial-gradient(760px 300px at 1200px 930px,rgba(255,170,90,.38),transparent 72%),
    radial-gradient(900px 170px at 1200px 360px,rgba(255,200,130,.28),transparent 70%),
    radial-gradient(360px 260px at 1280px 590px,rgba(255,190,120,.22),transparent 70%)}
.lights{position:absolute;left:0;top:300px;width:2400px;height:140px;overflow:visible;pointer-events:none}
.lights .wire{fill:none;stroke:#1a0f0b;stroke-width:2.2}
.lights .bulb{fill:#FFE3B0}
.lights .halo{opacity:var(--bulb);transition:opacity 1.6s ease-out}
.lights .twinkle{animation:twinkle 5.5s ease-in-out infinite}
@keyframes twinkle{0%,100%{opacity:var(--bulb)}50%{opacity:calc(var(--bulb) * .45)}}

/* wall objects */
.wall-obj{appearance:none;border:0;padding:0;background:none;cursor:pointer;text-align:left}
.wall-obj:focus-visible{outline-offset:8px}
.plaque{position:absolute;left:50%;top:calc(100% + 14px);transform:translateX(-50%);white-space:nowrap;
  padding:4px 10px;border-radius:3px;background:#E8DCCB;color:#3a2a22;font:500 13px/1.2 var(--font-read);
  box-shadow:0 2px 4px rgba(0,0,0,.35)}

.lamp{width:130px;height:620px;pointer-events:none}
.lamp-shade{position:absolute;left:0;top:0;width:130px;height:92px;
  clip-path:polygon(16% 0,84% 0,100% 100%,0 100%);
  background:linear-gradient(90deg,#e89a4c,#ffd598 45%,#f3b066 75%,#d9853b)}
.lamp-shade::after{content:"";position:absolute;left:12%;right:12%;bottom:-2px;height:10px;border-radius:50%;background:#fff1cf;filter:blur(3px)}
.lamp-pole{position:absolute;left:62px;top:92px;width:6px;height:510px;background:linear-gradient(90deg,#2a1b12,#8a6a4a,#2a1b12)}
.lamp-base{position:absolute;left:25px;top:596px;width:80px;height:18px;border-radius:50%;background:radial-gradient(#6a5038,#24170f 70%)}

.diploma{width:178px;height:140px;padding:10px;background:#1f1612;box-shadow:0 14px 22px rgba(0,0,0,.45),inset 0 0 0 1px rgba(255,220,190,.12)}
.dip-paper{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;width:100%;height:100%;
  background:linear-gradient(135deg,#f6ecd6,#eadcc0);box-shadow:inset 0 0 0 5px #fbf5e8,inset 0 0 0 6px #cdb88c;text-align:center;color:#3a2a1e;padding:8px}
.dip-school{font:600 10px/1.1 var(--font-read);letter-spacing:.04em}
.dip-deg{font:italic 400 9px/1 var(--font-read);color:#6b5642}
.dip-major{font:700 15px/1 var(--font-read);margin-top:2px}
.dip-conc{font:400 7.5px/1.2 var(--font-read);color:#6b5642;max-width:90%}
.dip-seal{position:absolute;right:12px;bottom:10px;width:24px;height:24px;border-radius:50%;
  background:radial-gradient(circle at 35% 30%,#ffe6a0,#c99a2e 60%,#8a6418);box-shadow:0 1px 2px rgba(0,0,0,.3)}
.dip-seal::after{content:"";position:absolute;left:6px;top:18px;width:12px;height:14px;background:#8e2f3c;clip-path:polygon(0 0,100% 0,100% 100%,50% 70%,0 100%);z-index:-1}

.pennants{width:200px;height:120px;pointer-events:none}
.pennant{position:absolute;width:150px;height:46px;display:flex;align-items:center;padding-left:26px;
  clip-path:polygon(0 0,100% 50%,0 100%);font:800 21px/1 var(--font-ui);letter-spacing:.06em;box-shadow:inset 14px 0 0 rgba(0,0,0,.25)}
.pennant.uga{left:0;top:4px;background:#BA0C2F;color:#fff;transform:rotate(-9deg)}
.pennant.isu{left:28px;top:58px;background:#C8102E;color:#F1BE48;transform:rotate(7deg);box-shadow:inset 14px 0 0 #F1BE48}
.pennant::before{content:"";position:absolute;left:5px;top:50%;width:7px;height:7px;margin-top:-3px;border-radius:50%;background:#d9d9d9;box-shadow:0 1px 1px rgba(0,0,0,.5)}

.polaroids{width:110px;height:430px}
.twine-v{position:absolute;left:54px;top:-140px;width:2px;height:560px;background:linear-gradient(#8f7658,#b89a74)}
.pol{position:absolute;width:78px;padding:5px 5px 17px;background:#fbf7ef;box-shadow:0 8px 12px rgba(0,0,0,.4);transform:rotate(var(--r,0deg));transform-origin:50% 0}
.pol img{width:100%;aspect-ratio:1;object-fit:cover}
.pol::before{content:"";position:absolute;left:50%;top:-10px;width:9px;height:19px;margin-left:-4px;border-radius:2px;background:linear-gradient(90deg,#b88652,#e2b27a,#b88652)}
.polaroids:hover .pol{transform:rotate(calc(var(--r,0deg) * .4)) translateX(-2px)}

.ledge{width:396px;height:150px}
.ledge-row{position:absolute;left:10px;right:10px;bottom:16px;display:flex;justify-content:space-between;perspective:700px;perspective-origin:50% -60%}
.feat{appearance:none;border:0;padding:0;background:none;cursor:pointer;position:relative;width:116px;height:116px;transform-style:preserve-3d;transform-origin:50% 100%;
  transform:rotateX(10deg) rotateY(var(--fy,0deg));transition:transform .28s cubic-bezier(.3,.8,.3,1)}
.feat:nth-child(1){--fy:9deg}.feat:nth-child(3){--fy:-9deg}
.feat:hover,.feat:focus-visible{transform:translateY(-10px) rotateX(0deg) rotateY(0deg)}
.feat .sl-face{box-shadow:0 12px 16px rgba(0,0,0,.5),inset 0 0 0 1px rgba(255,255,255,.1)}
.feat .obi{padding:4px 7px 5px}.feat .obi b{font-size:10.5px}.feat .obi small{font-size:9.5px}
.ledge-shelf{position:absolute;left:0;right:0;bottom:0;height:22px;border-radius:3px;
  background:linear-gradient(#8a5433,#5e3520 60%,#3d2214);box-shadow:0 10px 14px rgba(0,0,0,.45),inset 0 1px 0 rgba(255,210,170,.35)}
.ledge-shelf::before{content:"";position:absolute;left:0;right:0;top:-9px;height:10px;border-radius:2px 2px 0 0;background:linear-gradient(#a26a44,#744629)}
.ledge-label{position:absolute;left:0;right:0;top:5px;text-align:center;font:600 11px/1 var(--font-ui);color:rgba(255,230,210,.72);letter-spacing:.03em}

.tapestry{width:270px;height:340px;filter:drop-shadow(0 16px 14px rgba(0,0,0,.45))}
/* sideboard */
.sideboard{width:1100px;height:312px}
.sb-top{position:absolute;left:-16px;right:-16px;top:0;height:24px;border-radius:7px 7px 3px 3px;
  background:linear-gradient(#8a5433,#5e3520 55%,#3d2214);box-shadow:0 5px 0 rgba(0,0,0,.28),inset 0 1px 0 rgba(255,210,170,.35)}
.sb-body{position:absolute;left:0;right:0;top:24px;height:206px;border-radius:0 0 9px 9px;
  background:
    linear-gradient(90deg,rgba(0,0,0,.2),transparent 10%,transparent 90%,rgba(0,0,0,.24)),
    linear-gradient(#dd6a4d,#c9563c 55%,#ad4630);
  box-shadow:inset 0 2px 0 rgba(255,214,190,.28),inset 0 -8px 14px rgba(0,0,0,.22)}
.cubby{position:absolute;top:20px;width:320px;height:166px;border-radius:7px;
  background:linear-gradient(#4f1e14,#6e2c1e 70%,#853827);
  box-shadow:inset 0 16px 24px rgba(0,0,0,.6),inset 0 -2px 0 rgba(255,200,170,.2),0 1px 0 rgba(255,214,190,.2)}
.leg{position:absolute;top:230px;width:24px;height:82px;background:linear-gradient(90deg,#3a2012,#7a4a2c 50%,#3a2012);
  clip-path:polygon(0 0,100% 0,76% 100%,24% 100%)}
.sb-shadow{width:1180px;height:40px;border-radius:50%;background:radial-gradient(closest-side,rgba(0,0,0,.55),transparent);filter:blur(4px)}

/* crates */
.crate{appearance:none;border:0;padding:0;background:none;cursor:pointer;position:absolute;left:18px;bottom:0;width:284px;height:150px;
  transition:transform .28s cubic-bezier(.3,.8,.3,1)}
.crate:hover,.crate[aria-expanded="true"]{transform:translateY(-10px)}
.crate[aria-expanded="true"] .crate-box{box-shadow:0 0 0 3px rgba(255,190,110,.75),0 0 30px rgba(255,170,80,.45),0 10px 16px rgba(0,0,0,.4)}
.crate-peek{position:absolute;left:18px;right:18px;bottom:96px;height:40px;display:flex;gap:6px;align-items:flex-end}
.crate-peek span{flex:1;height:100%;border-radius:2px 2px 0 0;background-size:cover;background-position:center top;
  box-shadow:inset 0 0 0 1px rgba(0,0,0,.3),0 -2px 4px rgba(0,0,0,.25)}
.crate-peek span:nth-child(2){height:84%}
.crate-peek span:nth-child(3){height:92%}
.crate-peek span:nth-child(4){height:76%}
.crate-box{position:absolute;left:0;right:0;bottom:0;height:104px;border-radius:4px;
  background:
    repeating-linear-gradient(90deg,rgba(90,50,20,.09) 0 2px,transparent 2px 13px),
    linear-gradient(180deg,#d3a46c 0 30%,#3d2519 30% 34%,#c79862 34% 64%,#3d2519 64% 68%,#bb8b56 68% 100%);
  box-shadow:0 10px 16px rgba(0,0,0,.4),inset 10px 0 0 rgba(0,0,0,.14),inset -10px 0 0 rgba(0,0,0,.14);
  transition:box-shadow .25s}
.crate-handle{position:absolute;left:50%;top:9px;width:58px;height:13px;margin-left:-29px;border-radius:7px;background:#2a170e;box-shadow:inset 0 2px 3px rgba(0,0,0,.6)}
.crate-label{position:absolute;left:50%;top:40px;transform:translateX(-50%) rotate(-1.5deg);min-width:150px;padding:6px 14px 7px;
  background:#f7f1e6;color:#2a2220;text-align:center;box-shadow:0 2px 3px rgba(0,0,0,.35);line-height:1.1}
.crate-label b{display:block;font:750 19px/1.1 var(--font-ui);letter-spacing:-.01em;white-space:nowrap}
.crate-label small{display:block;font:400 13px/1.2 var(--font-read);color:#6b5d56}
.crate-label::before,.crate-label::after{content:"";position:absolute;top:4px;width:10px;height:2px;background:#9a9a9a}
.crate-label::before{left:6px}.crate-label::after{right:6px}
.sticker{position:absolute;width:26px;height:26px;border-radius:50%;background:#f7f1e6;display:grid;place-items:center;overflow:hidden;
  box-shadow:0 1px 2px rgba(0,0,0,.4)}
.sticker img{width:74%;height:74%;object-fit:contain}
.sticker.dark{background:#000}

/* now playing stand */
.stand{width:170px;height:150px;perspective:640px;perspective-origin:60% -40%}
.stand{perspective:640px;perspective-origin:60% -40%}
.np-jacket{appearance:none;border:0;padding:0;position:absolute;left:18px;top:0;width:132px;height:132px;cursor:pointer;background:none;
  transform-style:preserve-3d;transform-origin:50% 100%;transform:rotateX(9deg) rotateY(12deg) rotateZ(-2deg)}
.np-jacket .sl-face{box-shadow:10px 14px 18px rgba(0,0,0,.5),inset 0 0 0 1px rgba(255,255,255,.1)}
.np-jacket.arrive{animation:arrive .6s cubic-bezier(.2,.8,.2,1)}
@keyframes arrive{from{transform:translate(240px,20px) rotate(10deg) scale(.6);opacity:0}}
.np-ledge{position:absolute;left:0;right:0;bottom:4px;height:14px;border-radius:3px;background:linear-gradient(#7a4a2c,#4a2a18);box-shadow:0 5px 8px rgba(0,0,0,.4)}
.np-tag{position:absolute;right:-6px;top:-12px;padding:3px 9px;background:#F29CAB;color:#2B1216;font:650 12px/1.3 var(--font-ui);
  border-radius:3px;transform:rotate(5deg);box-shadow:0 2px 4px rgba(0,0,0,.35);white-space:nowrap}

/* speaker */
.speaker{width:112px;height:160px;border-radius:6px;background:linear-gradient(90deg,#3d2416,#6b4128 50%,#3d2416);
  box-shadow:0 12px 18px rgba(0,0,0,.45),inset 0 0 0 5px #2a170e}
.tweeter{position:absolute;left:50%;top:22px;width:30px;height:30px;margin-left:-15px;border-radius:50%;background:radial-gradient(circle,#ccc 0 22%,#222 26% 62%,#555 66% 72%,#111 76%)}
.woofer{position:absolute;left:50%;top:66px;width:80px;height:80px;margin-left:-40px;border-radius:50%;background:radial-gradient(circle,#333 0 60%,#666 64% 68%,#111 72%)}
.cone{position:absolute;inset:10px;border-radius:50%;background:radial-gradient(circle,#555 0 18%,#1c1c1c 22%,#2a2a2a 70%,#161616);
  transform:scale(calc(1 + var(--lvl,0) * .07));transition:transform .06s linear}

.rug{width:1360px;height:170px;clip-path:polygon(5% 0,95% 0,100% 100%,0 100%);opacity:.92;
  background:
    linear-gradient(90deg,transparent 0 6%,rgba(0,0,0,.08) 6% 6.4%,transparent 6.4% 93.6%,rgba(0,0,0,.08) 93.6% 94%,transparent 94%),
    repeating-linear-gradient(90deg,rgba(120,80,50,.07) 0 2px,transparent 2px 7px),
    repeating-linear-gradient(90deg,transparent 0 120px,rgba(207,91,67,.28) 120px 128px,transparent 128px 240px),
    linear-gradient(#E9D6BD 0 9%,#B9523B 9% 13%,#E9D6BD 13% 19%,#D9A441 19% 21%,#E4CFB4 21% 79%,#D9A441 79% 81%,#E9D6BD 81% 87%,#B9523B 87% 91%,#E9D6BD 91%)}
.rug::after{content:"";position:absolute;left:50%;top:50%;width:300px;height:78px;transform:translate(-50%,-50%);
  background:linear-gradient(135deg,transparent 42%,#B9523B 42% 58%,transparent 58%) 0 0/39px 39px,linear-gradient(45deg,transparent 42%,#B9523B 42% 58%,transparent 58%) 0 0/39px 39px;opacity:.55;
  clip-path:polygon(50% 0,100% 50%,50% 100%,0 50%)}
.candle{width:52px;height:52px}
.candle .jar{position:absolute;left:8px;bottom:0;width:36px;height:34px;border-radius:5px 5px 7px 7px;background:linear-gradient(90deg,#b98a64,#e8c9a5 45%,#b98a64);box-shadow:0 4px 6px rgba(0,0,0,.35)}
.candle .jar::before{content:"";position:absolute;left:3px;right:3px;top:3px;height:7px;border-radius:50%;background:#f4e6d0}
.candle .flame{position:absolute;left:21px;top:0;width:10px;height:18px;border-radius:50% 50% 45% 45%/60% 60% 40% 40%;background:radial-gradient(circle at 50% 70%,#fff6d6,#ffc15a 60%,#ff8a2a);
  box-shadow:0 0 18px 8px rgba(255,170,80,.55),0 0 60px 26px rgba(255,160,70,.22)}
.pothos,.snake,.tapestry{pointer-events:none}
.pothos svg,.snake svg,.tapestry svg{overflow:visible;display:block}
.lights .vines{opacity:.95}
/* room hint */
.room-hint{margin:0;padding:10px 18px;border-radius:999px;background:rgba(20,10,8,.72);color:#F7EAE5;
  font:500 21px/1.2 var(--font-ui);white-space:nowrap;box-shadow:0 6px 20px rgba(0,0,0,.35);transition:opacity .4s}
.room-hint[hidden]{display:block;opacity:0;pointer-events:none}

/* =========================================================
   Turntable (CSS 3D)
   ========================================================= */
.tt{width:470px;height:250px;perspective:1050px;perspective-origin:50% -120px}
.tt-shadow{position:absolute;left:14px;right:14px;bottom:4px;height:28px;border-radius:50%;background:radial-gradient(closest-side,rgba(0,0,0,.6),transparent);filter:blur(3px)}
.tt-plinth{position:absolute;left:5px;bottom:34px;width:460px;height:330px;transform-origin:50% 100%;transform:rotateX(62deg);transform-style:preserve-3d}
.tt-surface{position:absolute;inset:0;border-radius:12px;
  background:
    repeating-linear-gradient(90deg,rgba(255,255,255,.018) 0 1px,transparent 1px 3px),
    radial-gradient(120% 90% at 30% 20%,#3b3735,#1d1a19 72%);
  box-shadow:inset 0 0 0 12px #6d4127,inset 0 0 0 13px rgba(255,255,255,.1)}
.tt-brand{position:absolute;right:34px;bottom:20px;font:600 12px/1 var(--font-ui);color:rgba(255,255,255,.35);letter-spacing:.08em}
.tt-platter{position:absolute;left:28px;top:26px;width:280px;height:280px;border-radius:50%;transform:translateZ(8px);transform-style:preserve-3d;
  background:radial-gradient(circle,#262626 0 60%,#8e8e8e 61%,#e0e0e0 64%,#7a7a7a 67%,#3a3a3a 70%);
  box-shadow:0 0 0 2px rgba(0,0,0,.5);transition:box-shadow .3s}
.tt-vinyl{position:absolute;inset:5px;border-radius:50%;transform:translateZ(2px);transform-style:preserve-3d}
.tt-vinyl.drop{animation:vdrop .55s cubic-bezier(.3,.8,.3,1)}
@keyframes vdrop{from{transform:translateZ(120px);opacity:0}}
.tt-disc{position:absolute;inset:0;border-radius:50%;will-change:transform;
  background:
    radial-gradient(circle,transparent 0 35%,rgba(0,0,0,.6) 35.5% 36.5%,transparent 37% 95%,rgba(255,255,255,.08) 96%,#0c0c0c 97%),
    repeating-radial-gradient(circle,#151515 0 1.4px,#202020 1.4px 2.8px);
  box-shadow:0 0 0 1px #000}
.tt-label{appearance:none;border:0;padding:0;position:absolute;left:50%;top:50%;width:98px;height:98px;margin:-49px 0 0 -49px;border-radius:50%;overflow:hidden;cursor:pointer;background:#EBD9D5}
.tt-label img{width:100%;height:100%;object-fit:cover}
.tt-label .art-logo,.tt-label .art-type,.tt-label .art-collage{width:100%;height:100%}
.tt-spindle{position:absolute;left:50%;top:50%;width:10px;height:10px;margin:-5px;border-radius:50%;background:radial-gradient(circle at 35% 35%,#fff,#9a9a9a 60%,#444);box-shadow:0 0 0 2px rgba(0,0,0,.3)}
.tt-sheen{position:absolute;inset:0;border-radius:50%;transform:translateZ(1px);pointer-events:none;
  background:conic-gradient(from 25deg,transparent 0 7%,rgba(255,255,255,.12) 11%,transparent 17% 50%,rgba(255,255,255,.09) 57%,transparent 63%);
  -webkit-mask:radial-gradient(circle,transparent 0 36%,#000 37%);mask:radial-gradient(circle,transparent 0 36%,#000 37%)}
.tt-armrest{position:absolute;left:392px;top:236px;width:14px;height:14px;border-radius:3px;background:#555;transform:translateZ(12px)}
.tt-arm-base{position:absolute;left:352px;top:44px;width:56px;height:56px;border-radius:50%;transform:translateZ(10px);
  background:radial-gradient(circle,#f0f0f0 0 18%,#9a9a9a 40%,#5a5a5a 70%,#333)}
.tt-arm{position:absolute;left:377px;top:72px;width:6px;height:190px;border-radius:3px;transform-origin:50% 0;
  transform:translateZ(24px) rotate(var(--arm,-6deg));transition:transform .85s cubic-bezier(.3,.7,.2,1);
  background:linear-gradient(90deg,#8d8d8d,#f5f5f5,#8d8d8d)}
.tt-weight{position:absolute;left:50%;top:-44px;width:22px;height:30px;margin-left:-11px;border-radius:4px;background:linear-gradient(90deg,#555,#bbb,#555)}
.tt-head{position:absolute;left:-9px;bottom:-24px;width:22px;height:30px;border-radius:3px;background:linear-gradient(#e5e5e5,#9a9a9a);transform:rotate(18deg)}
.tt-knob{position:absolute;left:30px;top:282px;width:34px;height:34px;border-radius:50%;transform:translateZ(6px);background:radial-gradient(circle at 40% 35%,#eee,#888 60%,#444)}
.tt-speed{position:absolute;left:76px;top:292px;display:flex;gap:8px;font:600 12px/1 var(--font-ui);color:rgba(255,255,255,.35);transform:translateZ(2px)}
.tt-speed .on{color:#ffb45a;text-shadow:0 0 6px rgba(255,180,90,.8)}
.tt-front{position:absolute;left:0;top:100%;width:100%;height:36px;transform-origin:50% 0;transform:rotateX(-90deg);
  display:flex;align-items:center;justify-content:flex-end;gap:10px;padding:0 18px;border-radius:0 0 9px 9px;
  background:linear-gradient(#734429,#4a2a18)}
.tt-btn{appearance:none;border:0;padding:4px 12px;border-radius:5px;background:rgba(0,0,0,.35);color:#f3e2d6;font:600 13px/1.2 var(--font-ui);cursor:pointer}
.tt-btn:hover:not(:disabled){background:rgba(0,0,0,.55)}
.tt-btn:disabled{opacity:.4;cursor:default}
.tt-lid{position:absolute;left:-3px;top:-3px;width:466px;height:336px;transform-origin:50% 0;transform-style:preserve-3d;pointer-events:none;
  transform:translateZ(72px) rotateX(var(--lid,0deg));transition:transform .75s cubic-bezier(.3,.8,.2,1)}
.tt-lid>div{position:absolute;border:1px solid rgba(255,255,255,.2);background:rgba(220,235,255,.045)}
.lid-top{inset:0;border-radius:6px;background:linear-gradient(135deg,rgba(255,255,255,.16),rgba(255,255,255,.03) 28%,transparent 52%,rgba(255,255,255,.1) 68%,rgba(255,255,255,.02))!important}
.lid-back{left:0;top:0;width:100%;height:72px;transform-origin:50% 0;transform:rotateX(-90deg)}
.lid-front{left:0;top:100%;width:100%;height:72px;transform-origin:50% 0;transform:rotateX(-90deg)}
.lid-left{left:0;top:0;width:72px;height:100%;transform-origin:0 50%;transform:rotateY(90deg)}
.lid-right{right:0;top:0;width:72px;height:100%;transform-origin:100% 50%;transform:rotateY(-90deg)}
.tt-drop-hint{position:absolute;left:50%;top:-6px;transform:translate(-50%,-100%);padding:8px 16px;border-radius:999px;background:#FFB45A;color:#2a1508;
  font:700 18px/1 var(--font-ui);opacity:0;transition:opacity .2s,transform .2s;pointer-events:none;white-space:nowrap}
.tt.is-armed .tt-drop-hint{opacity:1}
.tt.is-armed .tt-platter{box-shadow:0 0 0 3px rgba(255,190,110,.6),0 0 40px 10px rgba(255,170,80,.4)}
.tt.is-armed .tt-arm{filter:drop-shadow(0 0 5px rgba(255,190,110,.95))}
.tt.is-hot .tt-platter{box-shadow:0 0 0 5px rgba(255,200,120,.95),0 0 70px 22px rgba(255,170,80,.6)}
.tt.is-hot .tt-drop-hint{transform:translate(-50%,-112%) scale(1.08)}
html.is-dragging,html.is-dragging *{cursor:grabbing!important}

/* =========================================================
   Intro: "press play to enter" needle drop
   ========================================================= */
.intro{position:fixed;inset:0;z-index:200;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:38px;
  background:radial-gradient(120% 100% at 50% 38%,#2a1712 0%,#140a08 55%,#050302 100%);
  opacity:1;visibility:visible;transition:opacity .9s cubic-bezier(.3,.7,.2,1),visibility 0s linear 0s}
.intro[data-open="false"]{opacity:0;visibility:hidden;pointer-events:none;transition:opacity .9s cubic-bezier(.3,.7,.2,1),visibility 0s linear .9s}
.intro-glow{position:absolute;left:50%;top:42%;width:640px;height:640px;transform:translate(-50%,-50%);border-radius:50%;pointer-events:none;
  background:radial-gradient(circle,rgba(255,180,90,.35),transparent 65%);opacity:.55;filter:blur(4px);transition:opacity 1.1s ease}
.intro[data-stage="zoom"] .intro-glow{opacity:0}
.intro-rig{position:relative;width:470px;height:250px;transform:scale(1.85);transform-origin:50% 62%;
  transition:transform 1.15s cubic-bezier(.4,.65,.2,1),opacity 1s ease .05s}
.intro-rig .tt{position:relative;left:0;top:0}
.intro[data-stage="zoom"] .intro-rig{transform:scale(.42) translateY(6vh);opacity:0}
.intro-press{appearance:none;cursor:pointer;display:flex;align-items:center;gap:14px;padding:10px 26px 10px 10px;border-radius:999px;
  background:rgba(255,255,255,.08);border:1px solid rgba(255,225,190,.35);color:#f7ead9;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);
  transition:opacity .5s ease,transform .4s ease,background .3s ease}
.intro-press:hover{background:rgba(255,255,255,.14)}
.intro-press:disabled{pointer-events:none}
.intro-press-dot{display:flex;align-items:center;justify-content:center;width:40px;height:40px;border-radius:50%;background:#FFB45A;color:#2a1508;flex:none}
.intro-press-dot svg{width:16px;height:16px}
.intro-press-text{display:flex;flex-direction:column;gap:1px;font:600 15px/1.3 var(--font-ui);text-align:left}
.intro-press-text small{font:500 12px/1.3 var(--font-ui);opacity:.65}
.intro[data-stage="drop"] .intro-press,.intro[data-stage="zoom"] .intro-press{opacity:0;transform:translateY(10px);pointer-events:none}
.intro-hint{position:absolute;left:0;right:0;bottom:34px;margin:0;text-align:center;font:500 13px/1 var(--font-ui);letter-spacing:.08em;text-transform:uppercase;
  color:rgba(247,234,217,.55);transition:opacity .5s ease}
.intro[data-stage="drop"] .intro-hint,.intro[data-stage="zoom"] .intro-hint{opacity:0}
.intro[data-stage="drop"] #introDisc,.intro[data-stage="zoom"] #introDisc{animation:introSpin 1.8s linear infinite}
@keyframes introSpin{to{transform:rotate(360deg)}}
@media (prefers-reduced-motion:reduce){
  .intro,.intro-glow,.intro-rig,.intro-press,.intro-hint{transition-duration:.25s!important}
  .intro[data-stage="drop"] #introDisc,.intro[data-stage="zoom"] #introDisc{animation:none}
}

/* =========================================================
   Art renderers (jackets, labels, notes)
   ========================================================= */
.art-logo{display:grid;place-items:center;width:100%;height:100%;background:var(--bg,#F3ECE9)}
.art-logo img{width:62%;height:62%;object-fit:contain}
.art-type{display:flex;flex-direction:column;justify-content:center;gap:2px;width:100%;height:100%;padding:12%;background:var(--bg);color:var(--fg);
  font:800 clamp(14px,5cqi,40px)/.95 var(--font-ui);letter-spacing:-.02em;container-type:inline-size}
.art-type span{font-size:17cqi}
.art-type span+span{opacity:.72}
.art-collage{display:grid;grid-template-columns:1fr 1fr;width:100%;height:100%;gap:2px;background:#1a1210}
.art-collage img{width:100%;height:100%;object-fit:cover}
.art-img{width:100%;height:100%;object-fit:cover}

/* =========================================================
   Crate drawer
   ========================================================= */
.drawer{position:fixed;left:50%;bottom:calc(var(--dock-h) + 22px + env(safe-area-inset-bottom,0px));width:min(1200px,calc(100vw - 28px));height:var(--drawer-h);
  z-index:35;display:flex;flex-direction:column;color:#F7EAE5;border-radius:16px;
  background:
    repeating-linear-gradient(90deg,rgba(255,220,180,.025) 0 2px,transparent 2px 15px),
    linear-gradient(180deg,rgba(66,39,26,.97),rgba(34,19,12,.98));
  box-shadow:0 -10px 44px rgba(0,0,0,.5),inset 0 1px 0 rgba(255,220,190,.14);
  transform:translate(-50%,calc(100% + 160px));visibility:hidden;
  transition:transform .55s cubic-bezier(.2,.8,.2,1),visibility 0s linear .55s}
.drawer[data-open="true"]{transform:translate(-50%,0);visibility:visible;transition:transform .55s cubic-bezier(.2,.8,.2,1),visibility 0s}
html[data-mode="fast"] .drawer,html.notes-open:not([data-layout="compact"]) .drawer{visibility:hidden!important;transform:translate(-50%,calc(100% + 160px))!important;transition:transform .45s ease,visibility 0s linear .45s!important}
.drawer-head{display:flex;align-items:center;gap:16px;padding:14px 16px 4px 22px}
.drawer-title{margin:0;font:750 21px/1.1 var(--font-ui);letter-spacing:-.01em}
.drawer-hint{margin:2px 0 0;font:400 14.5px/1.3 var(--font-read);color:#d7c2b8}
.crate-tabs{display:flex;gap:4px;margin-left:auto;padding:3px;border-radius:11px;background:rgba(0,0,0,.28)}
.crate-tab{appearance:none;border:0;padding:7px 12px;border-radius:8px;background:none;color:#d7c2b8;font:600 13.5px/1 var(--font-ui);cursor:pointer;white-space:nowrap}
.crate-tab[aria-pressed="true"]{background:#F7EAE5;color:#2a1a14}
.crate-tab .t-short{display:none}
html[data-layout="compact"] .crate-tab .t-long{display:none}
html[data-layout="compact"] .crate-tab .t-short{display:inline}
.drawer-close{background:rgba(255,255,255,.08)}
.bin{flex:1;display:flex;align-items:flex-end;overflow-x:auto;overflow-y:hidden;padding:0 30px 16px 34px;scrollbar-width:thin;scrollbar-color:rgba(255,220,190,.3) transparent;
  perspective:1100px}
.slot{flex:0 0 auto;position:relative;width:var(--slot-w);height:calc(var(--jk) + 40px);z-index:var(--i,1);perspective:900px;perspective-origin:50% 30%}
.slot:last-child{width:calc(var(--jk) + 10px)}
.slot:hover,.slot:has(.jacket:focus-visible){z-index:100}
.jacket{appearance:none;border:0;padding:0;background:none;position:absolute;left:0;bottom:0;width:var(--jk);height:var(--jk);cursor:grab;touch-action:pan-x;
  transform-style:preserve-3d;transform-origin:50% 100%;
  transform:translateY(var(--ty,0px)) rotateX(var(--lean,12deg)) rotateY(var(--ry,0deg)) translateZ(var(--tz,0px));
  transition:transform .2s ease-out,opacity .2s}
.slot:hover .jacket{--ty:-24px;--lean:0deg}
.jacket.is-lifted{opacity:.2}
/* the record peeking out of the sleeve */
.jk-vinyl{position:absolute;top:4%;left:26%;width:92%;height:92%;border-radius:50%;transform:translateZ(-7px);transition:left .38s cubic-bezier(.3,.8,.3,1);
  background:
    radial-gradient(circle,#111 0 2.2%,var(--lbl,#EBD9D5) 2.6% 16.5%,#0b0b0b 17% 18.5%,transparent 19%),
    repeating-radial-gradient(circle,#141414 0 1.3px,#242424 1.3px 2.6px);
  box-shadow:0 8px 16px rgba(0,0,0,.45),0 0 0 1px #000}
.jk-sheen{position:absolute;inset:0;border-radius:50%;background:conic-gradient(from 30deg,transparent 0 8%,rgba(255,255,255,.14) 12%,transparent 18% 50%,rgba(255,255,255,.1) 58%,transparent 64%)}
.slot:hover .jk-vinyl,.jacket:focus-visible .jk-vinyl{left:50%}
/* sleeve: cardboard edges, printed face, ring wear, gloss, obi strip */
.sleeve{position:absolute;inset:0;display:block;transform-style:preserve-3d}
.sl-edge{position:absolute;display:block;background:linear-gradient(90deg,#cfc4b2,#f2ebdf 50%,#c7baa6)}
.sl-edge-r{top:0;right:0;width:5px;height:100%;transform-origin:100% 50%;transform:rotateY(-90deg)}
.sl-edge-l{top:0;left:0;width:5px;height:100%;transform-origin:0 50%;transform:rotateY(90deg);background:linear-gradient(90deg,#b8ab96,#e4dbcc)}
.sl-edge-t{top:0;left:0;width:100%;height:5px;transform-origin:50% 0;transform:rotateX(-90deg);background:linear-gradient(#efe7da,#cbbfac)}
.sl-face{position:absolute;inset:0;display:block;overflow:hidden;border-radius:2px;background:#2a1f1b;container-type:inline-size;
  box-shadow:0 12px 22px rgba(0,0,0,.5),inset 0 0 0 1px rgba(255,255,255,.09)}
.sl-face>img{width:100%;height:100%;object-fit:cover}
.sl-face::after{content:"";position:absolute;inset:0;pointer-events:none;mix-blend-mode:multiply;opacity:.5;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='140' height='140'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='2' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 .55 0 0 0 0 .5 0 0 0 0 .45 0 0 0 .55 0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E")}
.sl-wear{position:absolute;inset:0;display:block;pointer-events:none;
  background:
    radial-gradient(closest-side circle,transparent 86%,rgba(255,255,255,.16) 89.5%,transparent 93%),
    radial-gradient(closest-side circle,transparent 31%,rgba(255,255,255,.08) 33%,transparent 35.5%),
    linear-gradient(115deg,transparent calc(var(--g,40%) - 16%),rgba(255,255,255,.2) var(--g,40%),transparent calc(var(--g,40%) + 16%)),
    radial-gradient(70% 70% at 0 0,rgba(255,248,235,.2),transparent 26%),
    radial-gradient(60% 60% at 100% 100%,rgba(255,248,235,.14),transparent 24%),
    linear-gradient(90deg,transparent 95%,rgba(0,0,0,.28) 99%,rgba(0,0,0,.45));
  transition:background-position .2s}
.obi{position:absolute;left:0;right:0;bottom:0;display:block;padding:7px 10px 8px;background:rgba(248,243,237,.96);color:#2A2220;text-align:left;line-height:1.15;
  box-shadow:0 -2px 5px rgba(0,0,0,.18);border-top:1px solid rgba(0,0,0,.08)}
.obi::before{content:"";position:absolute;left:0;right:0;top:3px;height:1px;background:rgba(142,47,60,.35)}
.obi b{display:block;font:700 13.5px/1.15 var(--font-ui);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.obi small{display:block;font:400 12px/1.2 var(--font-read);color:#62564f;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ghost{position:fixed;left:0;top:0;z-index:70;pointer-events:none;will-change:transform;perspective:800px}
.ghost .sl-face{box-shadow:0 26px 34px rgba(0,0,0,.5)}

/* =========================================================
   Dock
   ========================================================= */
.dock-wrap{position:fixed;left:0;right:0;bottom:0;z-index:45;display:flex;justify-content:center;pointer-events:none;
  padding:0 12px calc(12px + env(safe-area-inset-bottom,0px))}
.dock{pointer-events:auto;display:flex;align-items:stretch;gap:2px;padding:6px;border-radius:18px;background:var(--hud-bg);color:var(--hud-ink);
  -webkit-backdrop-filter:blur(14px) saturate(1.25);backdrop-filter:blur(14px) saturate(1.25);
  border:1px solid rgba(255,214,190,.12);box-shadow:0 12px 30px rgba(0,0,0,.35)}
.dock-item{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;min-width:62px;height:52px;padding:0 8px;border-radius:12px;
  border:0;background:none;color:inherit;text-decoration:none;font:500 11.5px/1 var(--font-ui);cursor:pointer}
.dock-item svg{width:20px;height:20px}
.dock-item:hover{background:rgba(255,255,255,.1)}
.dock-sep{width:1px;background:rgba(255,214,190,.16);margin:8px 4px}

/* =========================================================
   Now playing bar: persistent mini player above the dock
   ========================================================= */
.np-bar{position:fixed;left:50%;bottom:calc(var(--dock-h) + 22px + env(safe-area-inset-bottom,0px));z-index:46;
  display:flex;align-items:center;gap:4px;max-width:min(420px,calc(100vw - 32px));padding:7px 7px 7px 9px;border-radius:999px;
  background:var(--hud-bg);color:var(--hud-ink);border:1px solid rgba(255,214,190,.14);box-shadow:0 14px 30px rgba(0,0,0,.35);
  -webkit-backdrop-filter:blur(14px) saturate(1.25);backdrop-filter:blur(14px) saturate(1.25);
  opacity:0;pointer-events:none;transform:translate(-50%,14px) scale(.96);
  transition:opacity .35s ease,transform .35s cubic-bezier(.3,.8,.3,1)}
.np-bar[data-open="true"]{opacity:1;pointer-events:auto;transform:translate(-50%,0) scale(1)}
html[data-mode="fast"] .np-bar,html.notes-open .np-bar{opacity:0!important;pointer-events:none!important;transform:translate(-50%,14px) scale(.96)!important}
.np-bar-main{appearance:none;border:0;background:none;color:inherit;cursor:pointer;display:flex;align-items:center;gap:10px;padding:2px 4px;min-width:0;text-align:left}
.np-bar-art{width:34px;height:34px;border-radius:50%;flex:none;overflow:hidden;box-shadow:0 0 0 1px rgba(255,214,190,.25);background:#000;
  animation:npSpin 2.6s linear infinite;animation-play-state:paused}
.np-bar[data-open="true"] .np-bar-art{animation-play-state:running}
@keyframes npSpin{to{transform:rotate(360deg)}}
.np-bar-eq.eq{width:14px;height:13px;flex:none}
.np-bar[data-open="true"] .np-bar-eq i{animation:eq .9s ease-in-out infinite}
.np-bar-text{min-width:0;display:flex;flex-direction:column;overflow:hidden}
.np-bar-text b{font:600 13px/1.3 var(--font-ui);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.np-bar-text small{font:500 11px/1.3 var(--font-ui);color:var(--hud-ink-2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.np-bar-stop{appearance:none;border:0;background:transparent;color:var(--hud-ink-2);width:30px;height:30px;border-radius:50%;display:flex;align-items:center;
  justify-content:center;cursor:pointer;flex:none}
.np-bar-stop:hover{background:rgba(255,255,255,.12);color:var(--hud-ink)}
.np-bar-stop svg{width:14px;height:14px}
@media (max-width:480px){.np-bar{max-width:calc(100vw - 20px)}.np-bar-text small{display:none}}

/* =========================================================
   Liner notes booklet
   ========================================================= */
.notes{position:fixed;inset:0;z-index:60;visibility:hidden;pointer-events:none}
.notes[data-open="true"]{visibility:visible;pointer-events:auto}
.notes-scrim{position:absolute;inset:0;background:rgba(10,4,3,0);transition:background .4s}
.notes[data-open="true"] .notes-scrim{background:rgba(10,4,3,.22)}
html[data-notes="full"] .notes[data-open="true"] .notes-scrim,html[data-mode="fast"] .notes[data-open="true"] .notes-scrim{background:rgba(10,4,3,.55)}
.booklet{position:absolute;top:calc(env(safe-area-inset-top,0px) + var(--hud-h) + 12px);right:12px;bottom:calc(12px + env(safe-area-inset-bottom,0px));
  width:var(--booklet-w);display:flex;flex-direction:column;overflow:hidden;background:var(--paper);color:var(--ink);
  border-radius:6px 14px 14px 6px;box-shadow:-18px 0 44px rgba(0,0,0,.38),0 22px 50px rgba(0,0,0,.35);container-type:inline-size;
  transform-origin:0 50%;transform:perspective(1600px) rotateY(-62deg) translateX(60px);opacity:0;
  transition:transform .6s cubic-bezier(.2,.8,.2,1),opacity .35s}
.notes[data-open="true"] .booklet{transform:none;opacity:1}
html[data-notes="full"] .booklet,html[data-mode="fast"] .booklet{left:max(10px,calc((100vw - 1040px) / 2));right:max(10px,calc((100vw - 1040px) / 2));width:auto;border-radius:14px;
  top:calc(env(safe-area-inset-top,0px) + var(--hud-h) + 10px);bottom:calc(10px + env(safe-area-inset-bottom,0px));transform:translateY(40px) scale(.98);transform-origin:50% 100%}
html[data-notes="full"] .notes[data-open="true"] .booklet,html[data-mode="fast"] .notes[data-open="true"] .booklet{transform:none}
/* Project detail views "slide out of their sleeve" instead of swinging open */
.notes[data-reveal="sleeve"] .booklet{transform:translateX(40%) scale(.94);opacity:0;
  transition:transform .55s cubic-bezier(.22,.85,.3,1.05),opacity .4s ease}
.notes[data-reveal="sleeve"][data-open="true"] .booklet{transform:none;opacity:1}
html[data-notes="full"] .notes[data-reveal="sleeve"] .booklet,html[data-mode="fast"] .notes[data-reveal="sleeve"] .booklet{transform:translateX(0) translateY(0) scale(.94)}
html[data-notes="full"] .notes[data-reveal="sleeve"][data-open="true"] .booklet,html[data-mode="fast"] .notes[data-reveal="sleeve"][data-open="true"] .booklet{transform:none}
.notes[data-reveal="sleeve"] .booklet::before{content:"";position:absolute;inset:0;pointer-events:none;z-index:2;
  background:linear-gradient(90deg,rgba(0,0,0,.24),transparent 32%);opacity:1;transition:opacity .5s ease .08s}
.notes[data-reveal="sleeve"][data-open="true"] .booklet::before{opacity:0}
.booklet-bar{display:flex;align-items:center;gap:10px;padding:10px 12px 10px 18px;border-bottom:1px solid var(--line);background:var(--paper-2)}
.eq{display:flex;align-items:flex-end;gap:2px;width:18px;height:16px}
.eq i{flex:1;background:var(--accent);height:30%;border-radius:1px}
.notes.is-playing .eq i{animation:eq .9s ease-in-out infinite}
.eq i:nth-child(2){animation-delay:-.3s!important}.eq i:nth-child(3){animation-delay:-.6s!important}
@keyframes eq{0%,100%{height:25%}50%{height:100%}}
.bar-status{margin:0;font:600 14px/1.2 var(--font-ui);min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.bar-status small{font:400 13.5px/1 var(--font-read);color:var(--ink-2);margin-left:6px}
.bar-spacer{flex:1}
.booklet .icon-btn{background:transparent;color:var(--ink)}
.booklet .icon-btn:hover{background:var(--line)}
.booklet .icon-btn:disabled{opacity:.3;cursor:default}
.close-btn{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--line);background:var(--paper);color:var(--ink);padding:8px 12px;border-radius:9px;font:650 13.5px/1 var(--font-ui);cursor:pointer;white-space:nowrap}
.close-btn:hover{background:var(--paper-3)}
.booklet-scroll{flex:1;overflow-y:auto;overscroll-behavior:contain}
.spread{display:grid;grid-template-columns:minmax(0,.85fr) minmax(0,1.3fr);min-height:100%}
.page{padding:30px 32px 40px}
.spread:not(.wide){background:linear-gradient(90deg,var(--paper-2) calc(39.53% - 1px),var(--line) calc(39.53% - 1px) 39.53%,transparent 39.53%)}
.page-left{position:sticky;top:0;align-self:start;box-shadow:inset -16px 0 18px -16px rgba(0,0,0,.18)}
.spread.wide{grid-template-columns:1fr}
.spread.wide .page-left{display:none}
@container (max-width:520px){.bar-status small{display:none}}
@container (max-width:640px){
  .spread{grid-template-columns:1fr}
  .spread:not(.wide){background:none}
  .page-left{position:static;background:var(--paper-2);border-bottom:1px solid var(--line);box-shadow:none}
  .page{padding:22px 20px 30px}
  .notes-art{max-width:300px}
}
.notes-art{position:relative;border-radius:3px;overflow:hidden;box-shadow:0 16px 30px rgba(0,0,0,.28);background:var(--paper-3);container-type:inline-size}
.notes-art.square{aspect-ratio:1}
.notes-art>img{width:100%;height:auto}
.notes-art.square>img{height:100%;object-fit:cover}
.notes-art video{width:100%;aspect-ratio:1;object-fit:cover}
.meta{margin:22px 0 0;display:grid;gap:12px}
.meta div{display:grid;gap:2px}
.meta dt{font:500 13px/1.2 var(--font-ui);color:var(--ink-2)}
.meta dd{margin:0;font:400 16.5px/1.4 var(--font-read)}
.chips{display:flex;flex-wrap:wrap;gap:6px;margin:18px 0 0;padding:0;list-style:none}
.chips li{padding:4px 11px;border-radius:999px;border:1px solid var(--line);font:500 13px/1.2 var(--font-ui);color:var(--ink-2)}
.kicker{margin:0 0 6px;font:500 15px/1.3 var(--font-ui);color:var(--ink-2)}
.notes-title{margin:0;font:760 clamp(30px,6cqi,48px)/1.02 var(--font-ui);letter-spacing:-.025em;text-wrap:balance}
.notes-title:focus{outline:none}
.notes-sub{margin:8px 0 20px;font:italic 400 20px/1.35 var(--font-read);color:var(--ink-2)}
.lede{margin:0 0 24px;font:400 20px/1.55 var(--font-read);max-width:40ch}
.metrics{display:grid;grid-template-columns:repeat(auto-fit,minmax(128px,1fr));gap:16px 20px;margin:0 0 8px;padding:18px 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.metric b{display:block;font:790 34px/1 var(--font-ui);letter-spacing:-.025em;color:var(--accent)}
.metric span{display:block;margin-top:6px;font:400 15px/1.35 var(--font-read);color:var(--ink-2)}
.nsec h3{margin:26px 0 6px;font:690 18px/1.3 var(--font-ui)}
.nsec p{margin:0;font:400 17.5px/1.62 var(--font-read);max-width:62ch}
.nsec ul,.nsec ol{margin:0;padding-left:1.15em;max-width:62ch}
.nsec li{font:400 17.5px/1.55 var(--font-read);margin:0 0 9px}
.nsec li a{text-underline-offset:3px}
.nsec .cols{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:4px 26px}
.nsec .cols h4{margin:12px 0 6px;font:650 15px/1.3 var(--font-ui);color:var(--ink-2)}
.nsec .cols li{font-size:16px;margin-bottom:5px}
.entry{padding:16px 0;border-bottom:1px solid var(--line)}
.entry:first-child{padding-top:0}
.entry h3{margin:0;font:700 20px/1.25 var(--font-ui)}
.entry p{margin:4px 0 0;font:400 17px/1.5 var(--font-read);color:var(--ink-2)}
.links-row{display:flex;flex-wrap:wrap;gap:10px;margin-top:28px}
.btn{display:inline-flex;align-items:center;gap:8px;padding:11px 16px;border-radius:10px;font:650 15px/1.1 var(--font-ui);text-decoration:none;border:1px solid transparent;cursor:pointer}
.btn svg{width:17px;height:17px;flex:none}
.btn-primary{background:var(--accent);color:var(--accent-ink)}
.btn-primary:hover{filter:brightness(1.08)}
.btn-ghost{border-color:var(--line);background:transparent;color:var(--ink)}
.btn-ghost:hover{background:var(--paper-3)}
.related{margin-top:24px;padding-top:18px;border-top:1px dashed var(--line)}
.related p{margin:0 0 10px;font:500 14px/1.3 var(--font-ui);color:var(--ink-2)}
.gallery{columns:3 170px;column-gap:10px;margin-top:22px}
.gallery img{width:100%;height:auto;margin:0 0 10px;border-radius:3px;break-inside:avoid;background:var(--paper-3)}
.side-links{display:flex;flex-direction:column;gap:8px;margin-top:20px}
.mission-note{margin:20px 0 6px;padding:18px 22px 20px;border-left:4px solid var(--accent);border-radius:0 12px 12px 0;background:var(--paper-2)}
.mission-note p{margin:0}
.mission-note .mn-label{font:650 13.5px/1.2 var(--font-ui);color:var(--ink-2);margin-bottom:8px}
.mission-note .mn-text{font:italic 400 22px/1.5 var(--font-read);max-width:44ch;text-wrap:pretty}
.spread.wide .gallery{columns:4 118px;column-gap:8px}
.spread.wide .gallery img{margin-bottom:8px}
.courses{display:grid;gap:6px;margin-top:6px}
.course-group h3{margin:22px 0 8px;font:690 17px/1.3 var(--font-ui)}
.course-group ul{list-style:none;margin:0;padding:0}
.course-group>ul>li{display:grid;grid-template-columns:92px 1fr auto;gap:4px 14px;align-items:baseline;padding:9px 0;border-bottom:1px solid var(--line)}
.c-code{font:600 13.5px/1.3 var(--font-ui);color:var(--ink-2);font-variant-numeric:tabular-nums;white-space:nowrap}
.c-name{font:400 17px/1.4 var(--font-read)}
.c-school{font:600 11.5px/1 var(--font-ui);padding:4px 8px;border-radius:999px;white-space:nowrap}
.c-school.uga{background:rgba(186,12,47,.12);color:#9a1330}
.c-school.isu{background:rgba(241,190,72,.28);color:#7a5406}
:root[data-theme="dark"] .c-school.uga{color:#ff9aa9}:root[data-theme="dark"] .c-school.isu{color:#ffd77a}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]) .c-school.uga{color:#ff9aa9}:root:not([data-theme="light"]) .c-school.isu{color:#ffd77a}}
.c-more{grid-column:1 / -1;margin-top:6px}
.c-more summary{cursor:pointer;font:600 14px/1.3 var(--font-ui);color:var(--accent);width:max-content}
.nmix{padding:6px 0 4px 14px;border-left:2px solid var(--line);margin-top:8px}
.nmix h4{margin:12px 0 4px;font:650 14.5px/1.3 var(--font-ui);color:var(--ink-2)}
.nmix ol,.nmix ul{margin:0;padding-left:1.2em;columns:2 180px;column-gap:24px}
.nmix li{display:list-item;padding:0;border:0;font:400 15.5px/1.5 var(--font-read);margin:0 0 3px;break-inside:avoid}
.skill-group{margin-top:14px}
.skill-group h3{margin:0 0 8px;font:650 15px/1.3 var(--font-ui);color:var(--ink-2)}
.skill-group .chips{margin-top:0}
.f-three{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:20px 40px}
.f-three h3,.f-two h3{margin:0 0 12px;font:700 19px/1.2 var(--font-ui)}
.f-org .logo-mini.art img{width:100%;height:100%;object-fit:cover}

/* =========================================================
   Fast view (recruiter mode)
   ========================================================= */
.fast{position:fixed;left:0;right:0;top:calc(env(safe-area-inset-top,0px) + var(--hud-h));bottom:0;overflow-y:auto;z-index:20;
  background:var(--paper);color:var(--ink);opacity:0;visibility:hidden;transition:opacity .45s ease .1s,visibility 0s linear .55s}
.fast:focus{outline:none}
html[data-mode="fast"] .fast{opacity:1;visibility:visible;transition:opacity .45s ease .12s,visibility 0s}
.fast-inner{max-width:1160px;margin:0 auto;padding:40px clamp(18px,4vw,44px) calc(var(--dock-h) + 70px + env(safe-area-inset-bottom,0px))}
.f-hero{display:grid;grid-template-columns:minmax(220px,390px) 1fr;gap:clamp(28px,6vw,72px);align-items:center;padding:20px 0 60px}
.f-sleeve{position:relative;width:84%;aspect-ratio:1}
.f-sleeve .vinyl{position:absolute;top:5%;left:24%;width:90%;height:90%;border-radius:50%;
  background:radial-gradient(circle,#EBD9D5 0 16%,#0c0c0c 16.5% 18%,transparent 18.5%),repeating-radial-gradient(circle,#151515 0 1.5px,#242424 1.5px 3px)}
.f-sleeve .cover{position:relative;z-index:1;width:100%;height:100%;overflow:hidden;border-radius:4px;box-shadow:0 22px 40px -14px rgba(0,0,0,.45),0 0 0 1px var(--line)}
.f-sleeve video{width:100%;height:100%;object-fit:cover}
.f-name{margin:0 0 20px;font:780 clamp(46px,8.4vw,108px)/.9 var(--font-ui);letter-spacing:-.04em}
.f-statement{margin:0;font:400 clamp(21px,2.3vw,28px)/1.42 var(--font-read);max-width:34ch;text-wrap:pretty}
.f-facts{display:flex;flex-wrap:wrap;gap:10px 28px;margin:26px 0 0;padding:0}
.f-facts div{display:grid;gap:2px}
.f-facts dt{font:500 13px/1.2 var(--font-ui);color:var(--ink-2)}
.f-facts dd{margin:0;font:600 16px/1.3 var(--font-ui)}
.f-section{padding:60px 0 20px;border-top:1px solid var(--line)}
.f-section>h2{margin:0 0 8px;font:760 clamp(30px,3.6vw,44px)/1.05 var(--font-ui);letter-spacing:-.025em}
.f-section>h2:focus{outline:none}
.f-sub{margin:0 0 32px;font:400 18.5px/1.5 var(--font-read);color:var(--ink-2);max-width:60ch}
.f-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(245px,1fr));gap:40px 28px}
.f-proj{display:flex;flex-direction:column}
.f-proj .cover-btn{appearance:none;border:0;padding:0;background:none;cursor:pointer;display:block;width:100%;text-align:left}
.f-proj .cover{aspect-ratio:1;border-radius:3px;overflow:hidden;box-shadow:0 18px 30px -18px rgba(0,0,0,.5),0 0 0 1px var(--line)}
.f-proj .cover img{width:100%;height:100%;object-fit:cover}
.f-proj .org{margin:16px 0 2px;font:500 14px/1.3 var(--font-ui);color:var(--ink-2)}
.f-proj h3{margin:0;font:720 21px/1.2 var(--font-ui);letter-spacing:-.01em}
.f-proj p{margin:8px 0 12px;font:400 17px/1.5 var(--font-read)}
.f-proj .chips{margin:0 0 14px}
.f-actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:auto}
.f-actions .btn{padding:9px 13px;font-size:14px}
/* Experience, reframed as a record's back-sleeve track listing */
.f-timeline{list-style:none;margin:0;padding:18px 0 0;border-top:1px solid var(--line)}
.f-timeline::before{content:"Side A \2014 Work Experience";display:block;margin:0 0 6px;font:600 12px/1 var(--font-ui);letter-spacing:.14em;text-transform:uppercase;color:var(--ink-2)}
.f-track{border-bottom:1px dashed var(--line);padding:18px 0}
.f-track:last-child{border-bottom:0}
.f-track-row{appearance:none;border:0;background:none;padding:0;width:100%;display:grid;grid-template-columns:36px 1fr auto;align-items:start;gap:16px;
  cursor:pointer;text-align:left;color:inherit;font:inherit}
.f-track-row:hover h3{text-decoration:underline;text-decoration-color:var(--accent);text-underline-offset:3px}
.f-track-num{margin-top:2px;font:600 15px/1.4 var(--font-ui);color:var(--ink-2);font-variant-numeric:tabular-nums}
.f-track-main{min-width:0}
.f-track-main h3{margin:0;font:720 22px/1.2 var(--font-ui);letter-spacing:-.01em}
.f-track-time{margin-top:2px;font:500 14.5px/1.4 var(--font-ui);color:var(--ink-2);font-variant-numeric:tabular-nums;white-space:nowrap}
.f-org{display:flex;align-items:center;gap:10px;margin:8px 0 0;font:500 16px/1.3 var(--font-ui);color:var(--ink-2)}
.f-org .logo-mini{width:36px;height:36px;border-radius:8px;display:grid;place-items:center;background:#F7F0EE;border:1px solid var(--line);flex:none;overflow:hidden}
.f-org .logo-mini.dark{background:#000}
.f-org .logo-mini img{width:78%;height:78%;object-fit:contain}
.f-track ul{margin:14px 0 0;padding-left:1.1em;max-width:70ch}
.f-track li{font:400 17px/1.55 var(--font-read);margin:0 0 8px}
.f-logos-viewport{overflow:hidden;position:relative;-webkit-mask-image:linear-gradient(90deg,transparent,#000 5%,#000 95%,transparent);mask-image:linear-gradient(90deg,transparent,#000 5%,#000 95%,transparent)}
.f-logos-track{display:flex;flex-wrap:nowrap;gap:12px;list-style:none;margin:0;padding:0;width:max-content;animation:f-logos-scroll 28s linear infinite}
.f-logos-viewport:hover .f-logos-track{animation-play-state:paused}
.f-logos-track li{height:78px;min-width:128px;padding:12px 18px;border-radius:12px;display:grid;place-items:center;background:#F7F0EE;border:1px solid var(--line);flex-shrink:0}
.f-logos-track li.dark{background:#000;border-color:#000}
.f-logos-track img{max-height:50px;max-width:120px;width:auto;height:auto;object-fit:contain}
@keyframes f-logos-scroll{from{transform:translateX(0)}to{transform:translateX(-50%)}}
@media (prefers-reduced-motion: reduce){.f-logos-track{animation:none}}
.no-anim .f-logos-track{animation:f-logos-scroll 28s linear infinite !important}
.no-anim .f-logos-viewport:hover .f-logos-track{animation-play-state:paused !important}
.f-two{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:20px 48px}
.f-two h3{margin:0 0 12px;font:700 19px/1.2 var(--font-ui)}
.f-list{list-style:none;margin:0;padding:0}
.f-list li{padding:14px 0;border-bottom:1px solid var(--line)}
.f-list li:first-child{padding-top:0}
.f-list b{display:block;font:680 18px/1.3 var(--font-ui)}
.f-list span{display:block;font:400 16.5px/1.5 var(--font-read);color:var(--ink-2)}
.f-course{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:24px 36px}
.f-course h3{margin:0 0 10px;font:680 17px/1.3 var(--font-ui)}
.f-course ul,.f-course ol{margin:0;padding-left:1.15em}
.f-course li{font:400 16.5px/1.5 var(--font-read);margin:0 0 5px}
.f-about{display:block;}
.f-about p{margin:0 0 16px;font:400 19px/1.62 var(--font-read);max-width:56ch}
.f-about .gallery{margin-top:28px;columns:5 150px;}
.f-foot{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:18px;padding:40px 0 0;border-top:1px solid var(--line);margin-top:40px}
.f-foot .brand{font:760 26px/1 var(--font-ui);letter-spacing:-.03em}
.f-social{display:flex;flex-wrap:wrap;gap:8px}

/* =========================================================
   Compact layout (phones, portrait tablets)
   ========================================================= */
html[data-layout="compact"]{--hud-h:54px;--dock-h:58px;--jk:clamp(150px,50vw,230px)}
html[data-layout="compact"] .np-bar{display:none}
html[data-layout="compact"] .room{top:calc(env(safe-area-inset-top,0px) + var(--hud-h));bottom:auto;height:var(--compact-h)}
html[data-layout="compact"] .room-hint{display:none}
html[data-layout="compact"] .drawer{left:0;right:0;width:auto;top:calc(env(safe-area-inset-top,0px) + var(--hud-h) + var(--compact-h) - 14px);bottom:0;height:auto;
  transform:none;visibility:visible;border-radius:18px 18px 0 0;padding-bottom:calc(var(--dock-h) + 22px + env(safe-area-inset-bottom,0px));transition:none}
html[data-layout="compact"][data-mode="fast"] .drawer{visibility:hidden!important}
html[data-layout="compact"] .drawer-head{flex-direction:column;align-items:stretch;gap:10px;padding:14px 16px 6px}
html[data-layout="compact"] .drawer-title,html[data-layout="compact"] .drawer-close{display:none}
html[data-layout="compact"] .crate-tabs{margin:0;order:-1}
html[data-layout="compact"] .crate-tab{flex:1;padding:9px 6px;font-size:13px}
html[data-layout="compact"] .bin{align-items:center;gap:14px;padding:4px 18px 10px;scroll-snap-type:x mandatory;perspective:none}
html[data-layout="compact"] .slot,html[data-layout="compact"] .slot:last-child{width:var(--jk);height:var(--jk);scroll-snap-align:center}
html[data-layout="compact"] .jacket{--lean:0deg;transform:none;cursor:pointer;touch-action:manipulation}
html[data-layout="compact"] .jk-vinyl{left:14%;transform:none}
html[data-layout="compact"] .slot{perspective:none}
html[data-layout="compact"] .sl-edge{display:none}
html[data-layout="compact"] .dock-item{min-width:40px;height:44px;padding:0 6px}
html[data-layout="compact"] .dock-item span{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0)}
html[data-layout="compact"] .hud-clock span:last-child{display:none}
html[data-layout="compact"] .onair-text span{max-width:18ch}

@media (max-width:980px){
  .vol input{display:none}
  .switch-label small{display:none}
}
@media (max-width:640px){
  .hud-row{gap:8px}
  .hud-clock{display:none}
  .onair-text strong{font-size:13px}
  .switch{padding:5px 8px 5px 5px;gap:7px}
  .switch-label strong{font-size:13px}
  .f-hero{grid-template-columns:1fr;padding-bottom:40px}
  .f-sleeve{width:62%;max-width:260px}
  .f-track-row{grid-template-columns:22px 1fr;grid-template-areas:"num main" ". time";row-gap:6px}
  .f-track-num{grid-area:num}
  .f-track-main{grid-area:main}
  .f-track-time{grid-area:time}
  .f-about{grid-template-columns:1fr}
}
@media (max-width:400px){
  .onair-text strong{max-width:13ch;overflow:hidden;text-overflow:ellipsis}
  .switch-label strong{font-size:12.5px}
}

@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important;scroll-behavior:auto!important}
  .ticker-track{animation:none}
}

/* Mini Me chat widget */
.mm{position:fixed;right:max(20px,env(safe-area-inset-right,0px));bottom:max(20px,env(safe-area-inset-bottom,0px));z-index:80;display:flex;flex-direction:column;align-items:flex-end;gap:12px;font-family:var(--font-ui);--mm-accent:#56684C;--mm-accent-ink:#F5F2E8}
.mm-btn{appearance:none;border:0;padding:0;background:none;cursor:pointer;position:relative;display:block;color:inherit}
.mm-avatar-img{background-repeat:no-repeat;background-size:contain;background-position:center bottom;display:block}
.mm-avatar-idle{display:block;position:relative;width:64px;height:96px;filter:drop-shadow(0 10px 14px rgba(0,0,0,.35));animation:mmBob 3.2s ease-in-out infinite}
.mm-avatar-idle .mm-avatar-img{position:absolute;inset:0}
.mm-avatar-base,.mm-avatar-hover{position:absolute!important;top:0!important;left:0!important;right:0!important;bottom:0!important;width:100%!important;height:100%!important;margin:0!important};
.mm-avatar-hover{opacity:0;transition:opacity .18s ease}
.mm-btn:hover .mm-avatar-idle,.mm-btn:focus-visible .mm-avatar-idle{animation-play-state:paused}
.mm-btn:hover .mm-avatar-hover,.mm-btn:focus-visible .mm-avatar-hover{opacity:1}
.mm-btn:hover .mm-avatar-base,.mm-btn:focus-visible .mm-avatar-base{opacity:0};
@keyframes mmBob{0%,100%{transform:translateY(0)}50%{transform:translateY(-7px)}}
.mm-bubble{position:absolute;right:-6px;bottom:calc(100% + 10px);margin:0;padding:9px 16px;border-radius:16px 16px 4px 16px;background:var(--paper);color:var(--ink);font:650 13.5px/1.3 var(--font-ui);box-shadow:0 8px 18px rgba(0,0,0,.22);border:1.5px solid var(--mm-accent);white-space:nowrap}
.mm-bubble::before{content:"";position:absolute;right:13px;bottom:-9px;width:0;height:0;border-left:8px solid transparent;border-right:8px solid transparent;border-top:9px solid var(--mm-accent)}
.mm-bubble::after{content:"";position:absolute;right:14.5px;bottom:-6.5px;width:0;height:0;border-left:6.5px solid transparent;border-right:6.5px solid transparent;border-top:7px solid var(--paper)};
.mm.is-open .mm-btn{display:none!important}
.mm-panel{width:min(400px,88vw);height:min(580px,76vh);background:var(--paper);color:var(--ink);border-radius:20px;box-shadow:0 30px 60px rgba(0,0,0,.35),0 10px 20px rgba(0,0,0,.2);display:flex;flex-direction:column;overflow:hidden}
.mm-panel[hidden]{display:none}
.mm.is-open .mm-panel{animation:mmOpen .28s cubic-bezier(.2,.8,.2,1)}
@keyframes mmOpen{from{opacity:0;transform:translateY(16px) scale(.98)}}
.mm-head{display:flex;align-items:center;gap:10px;padding:14px 14px 14px 16px;background:var(--mm-accent);color:var(--mm-accent-ink);flex:none}
.mm-avatar-sm{width:34px;height:44px;flex:none}
.mm-head-text{display:flex;flex-direction:column;line-height:1.2;flex:1;min-width:0}
.mm-head-text strong{display:block;font-size:14.5px;font-weight:750}
.mm-head-text span{display:block;font-size:12px;opacity:.85}
.mm-close{appearance:none;border:0;background:rgba(255,255,255,.16);color:inherit;width:30px;height:30px;border-radius:9px;font-size:17px;cursor:pointer;display:grid;place-items:center}
.mm-close:hover{background:rgba(255,255,255,.28)}
.mm-messages{flex:1;overflow-y:auto;padding:16px 14px;display:flex;flex-direction:column;gap:10px;background:var(--paper-2)}
.mm-msg{max-width:82%;padding:9px 13px;border-radius:14px;font:400 14.5px/1.45 var(--font-read);white-space:pre-wrap}
.mm-msg.user{align-self:flex-end;background:var(--mm-accent);color:var(--mm-accent-ink);border-bottom-right-radius:4px}
.mm-msg.bot{align-self:flex-start;background:var(--paper);color:var(--ink);border-bottom-left-radius:4px;box-shadow:0 1px 2px rgba(0,0,0,.08)}
.mm-msg.typing{display:flex;gap:8px;align-items:center;padding:8px 14px}
.mm-avatar-xs{width:22px;height:33px;flex:none}
.mm-dots{display:flex;gap:4px;align-items:center}
.mm-dots span{width:6px;height:6px;border-radius:50%;background:var(--ink-2);animation:mmTyping 1.1s ease-in-out infinite}
.mm-dots span:nth-child(2){animation-delay:.15s}
.mm-dots span:nth-child(3){animation-delay:.3s}
@keyframes mmTyping{0%,60%,100%{opacity:.3;transform:translateY(0)}30%{opacity:1;transform:translateY(-3px)}}
.mm-form{display:flex;gap:8px;padding:12px;border-top:1px solid var(--line);background:var(--paper);flex:none}
.mm-form input{flex:1;border:1px solid var(--line);border-radius:12px;padding:10px 13px;font:400 14.5px/1.3 var(--font-ui);background:var(--paper-2);color:var(--ink)}
.mm-form input:focus-visible{outline:3px solid var(--focus);outline-offset:1px}
.mm-send{appearance:none;border:0;width:42px;height:42px;border-radius:12px;background:var(--mm-accent);color:var(--mm-accent-ink);font-size:17px;cursor:pointer;flex:none}
.mm-send:hover{filter:brightness(1.08)}
.mm-send:disabled{opacity:.5;cursor:default}
@media (max-width:640px){.mm{right:12px;bottom:calc(var(--dock-h) + 14px + env(safe-area-inset-bottom,0px))}.mm-panel{width:94vw;height:min(70dvh,calc(100dvh - var(--hud-h) - var(--dock-h) - 40px));max-height:600px}.mm-bubble{display:none}};