:root{
  --amber:#f2b866; --cream:#f6ead3; --bark:#2a1c13; --moss:#7f9a5a; --ember:#e0703a;
  --glass:rgba(42,28,18,.62);
}
*{box-sizing:border-box;margin:0;padding:0}
html,body{width:100%;height:100%;overflow:hidden;background:#1a1410;color:var(--cream);font-family:'Fraunces',Georgia,serif}
#scene-container{position:fixed;inset:0}
#scene-container canvas{display:block;touch-action:none}

#mist{position:fixed;inset:0;pointer-events:none;opacity:0;transition:opacity .35s ease;
  background:radial-gradient(ellipse at center,rgba(240,225,205,.92),rgba(150,130,115,.96));z-index:5}
#mist.on{opacity:1}

#loader{position:fixed;inset:0;z-index:20;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:22px;
  background:radial-gradient(circle at 50% 40%,#3a2618,#140e0a 70%);transition:opacity .8s}
#loader.hide{opacity:0;pointer-events:none}
.log-spin{width:84px;height:84px;border-radius:50%;background:radial-gradient(circle,#e8c995 0 18%,#c79a62 19% 38%,#e0b884 39% 52%,#b8864f 53% 70%,#5a3a22 71%);
  animation:spin 2.4s linear infinite;box-shadow:0 0 40px rgba(242,184,102,.25)}
@keyframes spin{to{transform:rotate(360deg)}}
#loader-msg{font-style:italic;font-weight:400;font-size:18px;color:var(--amber);letter-spacing:.02em}

#title-card{position:fixed;top:16px;left:16px;z-index:10;padding:14px 18px 12px;border-radius:14px;max-width:290px;
  background:var(--glass);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);
  border:1px solid rgba(242,184,102,.25);box-shadow:0 10px 30px rgba(0,0,0,.35);
  animation:rise .9s cubic-bezier(.2,.8,.2,1) both .3s}
@keyframes rise{from{opacity:0;transform:translateY(-12px)}}
.tc-eyebrow{font-family:'IBM Plex Mono',monospace;font-size:10px;letter-spacing:.2em;text-transform:uppercase;color:var(--moss)}
#title-card h1{font-weight:800;font-size:30px;line-height:1;letter-spacing:-.02em;color:var(--cream);margin:2px 0 4px}
#cabin-name{font-style:italic;font-weight:400;font-size:17px;color:var(--amber)}
#cabin-meta{font-family:'IBM Plex Mono',monospace;font-size:11px;opacity:.7;margin-top:2px}
.tc-row{display:flex;gap:6px;margin-top:9px}
.tc-row button{font-family:'IBM Plex Mono',monospace;font-size:11px;padding:4px 10px;border-radius:99px;cursor:pointer;
  background:rgba(242,184,102,.12);color:var(--cream);border:1px solid rgba(242,184,102,.35)}
.tc-row button:hover{background:rgba(242,184,102,.3)}
#favs-list{display:none;flex-wrap:wrap;gap:5px;margin-top:8px;max-height:130px;overflow:auto}
#favs-list.open{display:flex}
#favs-list .fav{font-size:12px;font-style:italic;padding:3px 9px;border-radius:8px;cursor:pointer;background:rgba(127,154,90,.22);border:1px solid rgba(127,154,90,.45)}
#favs-list .fav:hover{background:rgba(127,154,90,.45)}
#favs-list .empty{font-size:12px;opacity:.6;font-style:italic}

#action-bar{position:fixed;bottom:18px;left:50%;transform:translateX(-50%);z-index:10;display:flex;gap:6px;padding:6px;border-radius:99px;
  background:var(--glass);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);border:1px solid rgba(242,184,102,.25);
  box-shadow:0 10px 30px rgba(0,0,0,.4);animation:rise2 .9s cubic-bezier(.2,.8,.2,1) both .5s;max-width:calc(100vw - 16px);overflow-x:auto}
@keyframes rise2{from{opacity:0;transform:translate(-50%,14px)}}
#action-bar button{white-space:nowrap;font-family:'Fraunces',serif;font-weight:400;font-size:14px;padding:9px 14px;border-radius:99px;cursor:pointer;
  color:var(--cream);border:none;background:linear-gradient(180deg,#6b4a30,#4a3020);box-shadow:inset 0 1px 0 rgba(255,220,170,.25);transition:transform .15s,background .2s}
#action-bar button:hover{transform:translateY(-2px);background:linear-gradient(180deg,#7d5838,#563824)}
#action-bar button.active{background:linear-gradient(180deg,#e8a14e,#b56a2c);color:#2a1608}

#stats{position:fixed;right:14px;bottom:80px;z-index:10;font-family:'IBM Plex Mono',monospace;font-size:11px;padding:5px 10px;border-radius:8px;
  background:rgba(20,14,10,.6);color:#d9c7a6;border:1px solid rgba(242,184,102,.18)}
#toast{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%) scale(.95);z-index:15;padding:12px 20px;border-radius:12px;font-style:italic;font-size:17px;
  background:rgba(30,20,13,.85);color:var(--amber);opacity:0;pointer-events:none;transition:all .35s;border:1px solid rgba(242,184,102,.3);text-align:center}
#toast.show{opacity:1;transform:translate(-50%,-50%) scale(1)}
#walk-fwd{display:none;position:fixed;bottom:84px;left:50%;transform:translateX(-50%);z-index:11;padding:14px 22px;border-radius:99px;border:none;
  font-family:'IBM Plex Mono',monospace;background:rgba(224,112,58,.85);color:#fff;font-size:13px;user-select:none;-webkit-user-select:none}
#remix{position:fixed;left:12px;bottom:8px;z-index:10;font-family:'IBM Plex Mono',monospace;font-size:10px;color:rgba(246,234,211,.55);text-decoration:none}
#remix:hover{color:var(--amber)}

.lil-gui{--background-color:rgba(36,24,16,.9);--text-color:#f3e6cf;--title-background-color:#4a3020;--title-text-color:#f6ead3;
  --widget-color:#5b3f2b;--hover-color:#6e4b33;--focus-color:#7f5a3d;--number-color:#f2b866;--string-color:#a8c48a;
  --font-family:'IBM Plex Mono',monospace;--font-size:11px;--widget-border-radius:4px}
.lil-gui.root{top:12px !important;right:12px !important;border-radius:10px;overflow:hidden;box-shadow:0 10px 30px rgba(0,0,0,.4)}

@media (max-width:640px){
  #title-card{max-width:200px;padding:10px 12px}
  #title-card h1{font-size:22px}
  #cabin-name{font-size:14px}
  #action-bar button span{display:none}
  #action-bar button{font-size:18px;padding:8px 11px}
  #stats{bottom:72px;font-size:10px}
  .lil-gui.root{width:210px !important}
}