@import url('https://fonts.googleapis.com/css2?family=Space+Grotesk:wght@400;500;600&family=Noto+Sans+SC:wght@400;500;700&display=swap');

:root{
  color-scheme:dark;
  --bg:#0b0f12;
  --bg-2:#0f151a;
  --panel:#12181d;
  --panel-2:#161e24;
  --line:#243039;
  --line-2:#31414c;
  --text:#eef3f2;
  --muted:#8fa1a8;
  --dim:#5c7078;
  --accent:#46e0c8;
  --accent-2:#ffb84d;
  --accent-ink:#06201c;
  --danger:#ff6b6b;
  --radius:16px;
  --shadow:0 22px 70px rgba(0,0,0,.45);
}
*{box-sizing:border-box}
html,body{height:100%}
body{
  margin:0;
  color:var(--text);
  font:14px/1.55 "Space Grotesk","Noto Sans SC",-apple-system,BlinkMacSystemFont,"Segoe UI","Microsoft YaHei",sans-serif;
  background:
    radial-gradient(1200px 700px at 80% -10%, rgba(70,224,200,.12), transparent 60%),
    radial-gradient(900px 600px at -10% 110%, rgba(255,184,77,.08), transparent 55%),
    linear-gradient(180deg,var(--bg),var(--bg-2));
  overflow:hidden;
}
button,input,select,textarea{font:inherit;color:inherit}
button{cursor:pointer;border:1px solid var(--line-2);background:var(--panel-2);border-radius:11px;padding:10px 13px;transition:.18s}
button:hover{border-color:var(--accent);transform:translateY(-1px)}
button:disabled{opacity:.4;cursor:not-allowed;transform:none}
button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
a{color:var(--accent);text-decoration:none}
[hidden]{display:none!important}

.topbar{
  height:64px;display:flex;align-items:center;gap:22px;padding:0 26px;
  border-bottom:1px solid var(--line);background:rgba(11,15,18,.72);
  backdrop-filter:blur(12px);position:relative;z-index:20;
}
.brand{display:flex;align-items:center;gap:11px;color:var(--text);text-decoration:none}
.brand svg{width:30px;fill:none;stroke:var(--accent);stroke-width:1.6}
.brand strong{font-size:16px;font-weight:600;letter-spacing:1px}
.brand span{font-size:9px;letter-spacing:2px;color:var(--dim);border-left:1px solid var(--line);padding-left:12px}
.module-switch{display:flex;gap:6px;margin-left:auto;background:var(--panel);border:1px solid var(--line);border-radius:11px;padding:4px}
.module-switch a{color:var(--muted);padding:7px 14px;border-radius:8px;font-size:12px}
.module-switch a.active{color:var(--accent-ink);background:var(--accent);font-weight:600}
.topbar-status{display:flex;align-items:center;gap:8px;font-size:11px;color:var(--muted)}
.topbar-status .dot{width:8px;height:8px;border-radius:50%;background:var(--dim)}
.topbar-status .dot.ready{background:var(--accent);box-shadow:0 0 12px var(--accent)}
.topbar-status .dot.busy{background:var(--accent-2);animation:pulse 1s infinite}
@keyframes pulse{50%{opacity:.3}}

.shell{
  display:grid;grid-template-columns:320px minmax(360px,1fr) 320px;
  height:calc(100dvh - 64px);
}
.panel{min-height:0;overflow-y:auto;padding:30px 28px;scrollbar-width:thin;scrollbar-color:#31414c transparent}
.panel-left{border-right:1px solid var(--line)}
.panel-right{border-left:1px solid var(--line)}
.panel-center{display:flex;flex-direction:column;background:radial-gradient(ellipse at 50% 35%,rgba(70,224,200,.06),transparent 60%)}

.panel-head h1{font-size:26px;font-weight:500;line-height:1.28;margin:10px 0 12px;letter-spacing:.5px}
.panel-head p{color:var(--muted);font-size:12px}
.eyebrow{font-size:9px;letter-spacing:3px;color:var(--dim);margin:0}
.block{margin-top:26px}
.block-title{display:flex;align-items:center;justify-content:space-between;margin-bottom:13px}
.block-title h2{font-size:13px;font-weight:600;margin:0;letter-spacing:.5px}
.block-title span{font-size:9px;letter-spacing:2px;color:var(--dim)}
.hint{font-size:11px;color:var(--muted);line-height:1.65}
.theme-text-option{margin-top:8px;padding:8px 10px;border:1px solid var(--line);border-radius:10px;background:rgba(255,255,255,.015)}
.wide{width:100%;margin-top:10px}
.accent{background:var(--accent);color:var(--accent-ink);border-color:transparent;font-weight:600}
.accent:hover{background:#5df0d8}
.ghost{background:transparent}

/* Upload */
.drop{border:1.5px dashed var(--line-2);border-radius:var(--radius);padding:26px 16px;text-align:center;cursor:pointer;transition:.2s}
.drop:hover,.drop.dragover{border-color:var(--accent);background:rgba(70,224,200,.05)}
.drop-icon{font-size:26px;color:var(--accent);font-weight:300}
.drop p{margin:10px 0 2px;font-size:13px}
.drop small{color:var(--dim);font-size:11px}
.upload-meta{display:flex;align-items:center;gap:12px;margin-top:12px;background:var(--panel-2);border:1px solid var(--line);border-radius:12px;padding:10px}
.upload-meta img{width:46px;height:46px;object-fit:cover;border-radius:8px}
.upload-meta strong{font-size:12px;display:block;max-width:150px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.upload-meta small{color:var(--dim);font-size:10px}
.upload-meta .ghost{margin-left:auto;padding:4px 9px;font-size:16px}

/* Crop */
.crop-box{margin-top:16px;background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:14px}
.crop-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}
.crop-head strong{font-size:12px}
.crop-head select{margin-left:8px;padding:6px;background:var(--panel-2);border:1px solid var(--line-2);border-radius:8px;font-size:11px}
#cropCanvas{width:100%;aspect-ratio:1440/1076;background:#05080a;border-radius:10px;touch-action:none;cursor:grab;display:block}
.crop-tools label{display:flex;align-items:center;gap:8px;font-size:10px;color:var(--muted);margin:12px 0}
.crop-tools output{color:var(--accent);min-width:36px}
.crop-tools input[type=range]{flex:1;accent-color:var(--accent)}
.crop-buttons{display:flex;gap:8px}
.crop-buttons button{flex:1}

/* Style + layout segs */
.style-grid{display:grid;grid-template-columns:1fr 1fr;gap:9px}
.style-card{position:relative;text-align:left;padding:10px;border-radius:12px;overflow:hidden;background:var(--panel-2);border:1px solid var(--line)}
.style-card.active{border-color:var(--accent)}
.style-card .swatch{display:block;width:100%;height:auto;aspect-ratio:220/112;border-radius:8px;margin-bottom:8px}
.style-card strong{font-size:11px;display:block}
.style-card small{font-size:9px;color:var(--dim)}
.palette-row{display:flex;gap:7px;margin-top:12px}
.palette-row .preset{width:28px;height:28px;border-radius:50%;border:2px solid var(--line-2);padding:0}
.palette-row .preset.active{outline:1px solid var(--accent);outline-offset:3px}
.seg{display:flex;gap:6px;background:var(--panel);border:1px solid var(--line);border-radius:11px;padding:4px}
.seg button{flex:1;border:0;background:transparent;padding:8px;font-size:11px;color:var(--muted)}
.seg button.active{background:var(--accent);color:var(--accent-ink);font-weight:600}

/* FX */
.effect-grid{display:grid;grid-template-columns:1fr 1fr;gap:9px}
.effect-card{padding:10px;border-radius:12px;background:var(--panel-2);border:1px solid var(--line);text-align:left}
.effect-card.active{border-color:var(--accent)}
.effect-card .fx-preview{display:block;height:34px;border-radius:7px;margin-bottom:8px;position:relative;overflow:hidden}
.effect-card strong{font-size:11px;display:block}
.effect-card small{font-size:9px;color:var(--dim)}
#fxSliders{margin-top:12px}
.slider-row{margin:11px 0}
.slider-row label{display:flex;justify-content:space-between;font-size:11px;color:var(--muted)}
.slider-row output{color:var(--accent);font-variant-numeric:tabular-nums}
.slider-row input[type=range]{width:100%;accent-color:var(--accent);margin-top:6px}

/* Center stage */
.stage-meta{display:flex;align-items:flex-start;justify-content:space-between;padding:4px 6px 18px}
.stage-meta h2{font-size:20px;font-weight:400;margin:4px 0 0}
.chip{font-size:10px;letter-spacing:1px;color:var(--muted);border:1px solid var(--line-2);padding:6px 10px;border-radius:30px}
.stage{flex:1;display:flex;align-items:center;justify-content:center;flex-direction:column;padding-bottom:18px}
.keyboard-frame{position:relative;width:min(680px,94%);aspect-ratio:1080/808;border-radius:22px;overflow:hidden;border:7px solid #1b2227;background:#04070a;box-shadow:var(--shadow),0 0 0 1px #3a4851}
#keyboardCanvas{display:block;width:100%;height:100%;touch-action:none;cursor:pointer}
.stage-caption{text-align:center;margin-top:20px}
.stage-caption span{font-size:12px;color:#b8c6ca}
.stage-caption small{display:block;font-size:9px;color:var(--dim);margin-top:5px}

/* Prompt + export */
select,input[type=number],textarea{width:100%;margin-top:7px;padding:10px;border:1px solid var(--line-2);border-radius:10px;background:var(--panel-2);font-size:12px}
textarea{resize:vertical;line-height:1.6;color:#cfe0dc}
#promptBox{font-family:inherit;margin-bottom:10px}
.two{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.three{display:grid;grid-template-columns:1.25fr 1fr 1fr;gap:8px}
.two label{font-size:11px;color:var(--muted)}
.three label{font-size:11px;color:var(--muted)}
.video-box{border-top:1px solid var(--line);margin-top:22px;padding-top:18px}
.switch-row{display:flex;align-items:center;gap:8px;margin-top:10px;font-size:11px;color:var(--muted)}
.switch-row input{width:auto;margin:0;accent-color:var(--accent)}
.video-shot-note{margin:8px 0 0;font-size:10px;line-height:1.55;color:var(--dim)}
.video-bg{margin-top:12px;background:var(--panel-2);border:1px solid var(--line);border-radius:12px;padding:10px}
.video-bg-head{display:flex;align-items:center;justify-content:space-between;gap:8px;font-size:10px;color:var(--muted)}
.video-bg-head small{color:var(--dim);max-width:168px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.video-bg .two{margin-top:8px}
.video-bg button{margin-top:0}
#videoProgressWrap{display:grid;gap:10px;margin:12px 0}
progress{width:100%;height:5px;accent-color:var(--accent)}
#videoStatus{font-size:10px;color:var(--muted)}
#exportedVideo{width:100%;max-height:280px;margin-top:14px;border-radius:12px}
#videoDownload{display:block;text-align:center;font-size:12px;padding:9px}
.mini-note{margin-top:28px;border-top:1px solid var(--line);padding-top:16px;display:flex;justify-content:space-between;gap:10px;font-size:10px;color:var(--dim)}

#toast{position:fixed;bottom:26px;left:50%;transform:translate(-50%,20px);background:var(--accent);color:var(--accent-ink);padding:12px 22px;border-radius:10px;opacity:0;pointer-events:none;transition:.2s;z-index:50;font-weight:500}
#toast.show{opacity:1;transform:translate(-50%,0)}

@media(max-width:1120px){
  .shell{grid-template-columns:290px 1fr}
  .panel-right{grid-column:1/-1;border-left:0;border-top:1px solid var(--line)}
}
@media(max-width:760px){
  body{overflow:auto}
  .topbar{height:auto;min-height:60px;flex-wrap:wrap;gap:10px;padding:10px 16px}
  .brand span{display:none}
  .module-switch{width:100%;margin-left:0}
  .topbar-status{display:none}
  .shell{display:flex;flex-direction:column;height:auto}
  .panel{overflow:visible}
  .panel-center{order:-1;padding:20px 16px}
  .panel-left,.panel-right{padding:24px 18px}
  .keyboard-frame{width:min(300px,94vw)}
}
