:root{
  --bg0:#14101a; --bg1:#1e1626; --panel:rgba(24,17,32,.92); --panel2:rgba(36,26,48,.94);
  --line:rgba(255,255,255,.10); --txt:#f4eef7; --dim:#b9a8c7;
  --acc:#e8a0c8; --acc2:#9fd8ff; --gold:#f2c987;
  --rad:14px; --shadow:0 10px 30px rgba(0,0,0,.45);
  --font:"Avenir Next","Segoe UI",system-ui,-apple-system,sans-serif;
}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body{height:100%;margin:0}
body{
  font-family:var(--font);color:var(--txt);overflow:hidden;overscroll-behavior:none;
  background:radial-gradient(120% 90% at 50% 10%,#2b2138 0%,var(--bg1) 45%,var(--bg0) 100%);
  transition:background .6s;
}
body.lit-day{background:radial-gradient(120% 90% at 50% 8%,#cfe4f7 0%,#9fb8d4 55%,#5d7189 100%)}
body.lit-day{--txt:#23202b;--dim:#5a5468;--panel:rgba(255,255,255,.86);--panel2:rgba(255,255,255,.92);--line:rgba(30,20,50,.12);--shadow:0 10px 30px rgba(60,70,110,.25)}
body.lit-club{background:radial-gradient(120% 90% at 50% 10%,#2a0f33 0%,#12081f 55%,#050308 100%)}
#stage{position:fixed;inset:0}
#stage canvas{display:block;touch-action:none}
#brushRing{position:fixed;width:40px;height:40px;border:2px solid #fff;border-radius:50%;
  pointer-events:none;transform:translate(-50%,-50%);box-shadow:0 0 0 1px rgba(0,0,0,.4),0 0 12px rgba(232,160,200,.6);
  display:none;z-index:40}
/* ---------- header ---------- */
header{
  position:fixed;top:0;left:0;right:0;z-index:30;display:flex;align-items:center;gap:8px;
  padding:8px 12px;background:linear-gradient(180deg,rgba(10,6,16,.72),rgba(10,6,16,0));
}
body.lit-day header{background:linear-gradient(180deg,rgba(255,255,255,.75),rgba(255,255,255,0))}
.brand{display:flex;align-items:center;gap:9px;margin-right:6px;white-space:nowrap}
.brand .gem{width:30px;height:30px;border-radius:10px;flex:none;
  background:conic-gradient(from 40deg,#e8a0c8,#9fd8ff,#f2c987,#e8a0c8);
  box-shadow:0 2px 10px rgba(232,160,200,.5)}
.brand h1{font-size:15px;margin:0;letter-spacing:.14em;font-weight:700}
.brand small{display:block;font-size:9.5px;letter-spacing:.3em;color:var(--dim);font-weight:600}
.hgroup{display:flex;align-items:center;gap:6px;background:var(--panel);border:1px solid var(--line);
  border-radius:12px;padding:4px 6px;backdrop-filter:blur(10px)}
button,.seg button{font-family:var(--font)}
.btn{border:1px solid var(--line);background:rgba(255,255,255,.06);color:var(--txt);
  border-radius:10px;padding:7px 10px;font-size:12.5px;font-weight:600;cursor:pointer;white-space:nowrap}
body.lit-day .btn{background:rgba(255,255,255,.6)}
.btn:hover{border-color:var(--acc);color:var(--txt)}
.btn.on{background:linear-gradient(135deg,var(--acc),#c98ae0);color:#241425;border-color:transparent}
.btn:disabled{opacity:.35;cursor:default}
.btn.icon{padding:7px 9px;font-size:14px;line-height:1}
#lookName{background:transparent;border:none;color:var(--txt);font-size:12.5px;font-weight:600;
  width:110px;outline:none;font-family:var(--font)}
#lookName::placeholder{color:var(--dim)}
select.btn{appearance:none;padding-right:8px;max-width:130px}
/* ---------- tool rail ---------- */
#rail{position:fixed;z-index:30;left:10px;top:50%;transform:translateY(-50%);
  display:flex;flex-direction:column;gap:6px;background:var(--panel);border:1px solid var(--line);
  border-radius:16px;padding:8px;backdrop-filter:blur(12px);box-shadow:var(--shadow);max-height:86vh;overflow:auto}
.tool{display:flex;flex-direction:column;align-items:center;gap:3px;width:64px;padding:8px 2px 6px;
  border-radius:12px;border:1px solid transparent;background:transparent;color:var(--txt);cursor:pointer}
.tool svg{width:22px;height:22px}
.tool span{font-size:9.5px;font-weight:700;letter-spacing:.02em;color:var(--dim)}
.tool:hover{background:rgba(255,255,255,.06)}
.tool.on{background:linear-gradient(160deg,rgba(232,160,200,.28),rgba(159,216,255,.20));
  border-color:var(--acc)}
.tool.on span{color:var(--txt)}
/* ---------- side panel ---------- */
#panel{position:fixed;z-index:30;right:10px;top:64px;bottom:10px;width:262px;overflow-y:auto;
  background:var(--panel);border:1px solid var(--line);border-radius:18px;padding:14px;
  backdrop-filter:blur(14px);box-shadow:var(--shadow);scrollbar-width:thin}
#panel h2{font-size:11px;letter-spacing:.22em;color:var(--dim);margin:14px 0 8px;font-weight:700}
#panel h2:first-child{margin-top:0}
#shades{display:grid;grid-template-columns:repeat(6,1fr);gap:7px}
.sw{aspect-ratio:1;border-radius:50%;border:2px solid rgba(255,255,255,.25);cursor:pointer;padding:0;
  box-shadow:inset 0 -3px 6px rgba(0,0,0,.25);position:relative}
.sw.on{border-color:#fff;box-shadow:0 0 0 2px var(--acc),inset 0 -3px 6px rgba(0,0,0,.25)}
.sw.custom{background:conic-gradient(red,orange,yellow,green,blue,violet,red);overflow:hidden}
.sw.custom input{position:absolute;inset:0;opacity:0;cursor:pointer}
.srow{display:flex;align-items:center;gap:10px;margin:9px 0}
.srow label{font-size:12px;color:var(--dim);width:64px;flex:none;font-weight:600}
.srow output{font-size:12px;width:40px;text-align:right;font-weight:700}
input[type=range]{flex:1;accent-color:var(--acc);height:22px}
.seg{display:flex;background:rgba(255,255,255,.06);border:1px solid var(--line);border-radius:11px;padding:3px;gap:3px}
body.lit-day .seg{background:rgba(30,20,50,.07)}
.seg button{flex:1;border:none;background:transparent;color:var(--dim);font-size:11.5px;font-weight:700;
  padding:7px 2px;border-radius:8px;cursor:pointer;white-space:nowrap}
.seg button.on{background:linear-gradient(135deg,var(--acc),#c98ae0);color:#241425}
.toggle{display:flex;align-items:center;justify-content:space-between;font-size:12.5px;font-weight:600;margin:9px 0}
.toggle small{display:block;font-size:10.5px;color:var(--dim);font-weight:400}
.switch{width:42px;height:24px;border-radius:14px;background:rgba(255,255,255,.14);border:1px solid var(--line);
  position:relative;cursor:pointer;flex:none}
.switch::after{content:"";position:absolute;top:2px;left:2px;width:18px;height:18px;border-radius:50%;
  background:#fff;transition:left .15s}
.switch.on{background:linear-gradient(135deg,var(--acc),#c98ae0)}
.switch.on::after{left:20px}
#presets{display:flex;flex-direction:column;gap:7px}
.preset{display:flex;align-items:center;gap:9px;border:1px solid var(--line);border-radius:12px;
  padding:7px 9px;background:rgba(255,255,255,.04);cursor:pointer;text-align:left;color:var(--txt);width:100%}
body.lit-day .preset{background:rgba(255,255,255,.55)}
.preset:hover{border-color:var(--acc)}
.preset .pdot{width:30px;height:30px;border-radius:50%;flex:none;border:2px solid rgba(255,255,255,.4)}
.preset b{font-size:12.5px;display:block}
.preset small{font-size:10.5px;color:var(--dim)}
#lookList{display:flex;flex-direction:column;gap:7px}
.look{display:flex;align-items:center;gap:9px;border:1px solid var(--line);border-radius:12px;padding:6px}
.look img{width:38px;height:38px;border-radius:9px;object-fit:cover;background:#000}
.look b{font-size:12.5px;display:block;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.look button{border:none;background:rgba(255,255,255,.08);color:var(--txt);border-radius:8px;
  font-size:11px;font-weight:700;padding:6px 8px;cursor:pointer}
.look button:hover{background:var(--acc);color:#241425}
.empty{font-size:11.5px;color:var(--dim);text-align:center;padding:8px;border:1px dashed var(--line);border-radius:10px}
/* ---------- hint, toast, coach ---------- */
#hint{position:fixed;z-index:29;left:50%;bottom:12px;transform:translateX(-50%);
  font-size:12px;color:var(--txt);background:var(--panel);border:1px solid var(--line);
  padding:8px 16px;border-radius:20px;backdrop-filter:blur(10px);white-space:nowrap;max-width:94vw;
  overflow:hidden;text-overflow:ellipsis}
#hint b{color:var(--acc)}
#toast{position:fixed;z-index:60;left:50%;top:70px;transform:translateX(-50%) translateY(-8px);
  background:linear-gradient(135deg,var(--acc),#c98ae0);color:#241425;font-weight:700;font-size:13px;
  padding:9px 18px;border-radius:20px;opacity:0;transition:all .25s;pointer-events:none;box-shadow:var(--shadow)}
#toast.show{opacity:1;transform:translateX(-50%) translateY(0)}
#coach{position:fixed;z-index:55;left:50%;bottom:64px;transform:translateX(-50%);
  background:var(--panel2);border:1px solid var(--acc);border-radius:16px;padding:14px 18px;
  box-shadow:var(--shadow);text-align:center;max-width:88vw}
#coach b{font-size:14px}#coach p{font-size:12.5px;color:var(--dim);margin:6px 0 10px}
#coach .dots{display:flex;gap:6px;justify-content:center;margin-bottom:10px}
#coach .dots i{width:7px;height:7px;border-radius:50%;background:rgba(255,255,255,.2)}
#coach .dots i.on{background:var(--acc)}
#modeToggle{display:none}
/* ---------- portrait ---------- */
@media (max-width:760px),(orientation:portrait) and (max-width:1024px){
  header{flex-wrap:wrap;gap:6px;padding:6px 8px}
  .brand h1{font-size:12px}.brand small{display:none}
  #lookName{width:70px}
  .hgroup{padding:3px 4px}.btn{padding:6px 8px;font-size:11.5px}
  #rail{left:0;right:0;top:auto;bottom:186px;transform:none;flex-direction:row;overflow-x:auto;
    border-radius:0;border-left:none;border-right:none;padding:6px 8px;max-height:none}
  .tool{width:58px;flex:none}
  #panel{left:0;right:0;top:auto;bottom:0;height:182px;width:auto;border-radius:16px 16px 0 0;
    padding:8px 12px;overflow-x:hidden}
  #panel h2{margin:8px 0 6px}
  #hint{display:none}
  #modeToggle{display:inline-block}
}
