:root{color-scheme:dark;--bg:#111318;--panel:#191c23;--line:#303644;--text:#f4f6fb;--muted:#9ea7b6;--accent:#8e7dff}
*{box-sizing:border-box}html,body{margin:0;min-height:100%}[hidden]{display:none!important}body{font-family:Inter,Pretendard,"Noto Sans KR",system-ui,sans-serif;background:var(--bg);color:var(--text);overflow:auto}button,input,textarea,select{font:inherit}button,.header-upload{border:1px solid var(--line);background:#222630;color:var(--text);border-radius:8px;padding:8px 11px;cursor:pointer}button:hover,.header-upload:hover{filter:brightness(1.12)}button:disabled{opacity:.4;cursor:not-allowed}button.accent{background:var(--accent);border-color:transparent}button.record{color:#ffd7dd;border-color:#723b45}.wide{width:100%}
header{height:58px;display:flex;align-items:center;justify-content:space-between;padding:0 18px;background:#15181e;border-bottom:1px solid var(--line);position:sticky;top:0;z-index:20}header span{font-size:12px;color:var(--muted);margin-left:7px}header nav{display:flex;gap:8px;align-items:center}.header-upload{display:inline-block;font-size:13px}.header-upload input{display:none}
main{height:calc(100vh - 58px);min-height:720px;display:grid;grid-template-columns:260px minmax(0,1fr) 300px}aside{background:var(--panel);overflow:auto;padding:17px;border-right:1px solid var(--line)}aside:last-child{border-right:0;border-left:1px solid var(--line)}h2{font-size:14px;margin:0 0 13px}h3{font-size:13px;margin:0 0 11px}label{display:grid;gap:7px;margin-bottom:12px;font-size:12px;color:var(--muted)}input,textarea,select{width:100%;border:1px solid var(--line);background:#11141a;color:var(--text);border-radius:8px;padding:9px;outline:none}input:focus,textarea:focus,select:focus{border-color:var(--accent)}textarea{resize:vertical}input[type=range]{padding:0}.grid{display:grid;grid-template-columns:1fr 1fr;gap:8px}.upload{display:block;text-align:center;color:white;background:var(--accent);padding:10px;border-radius:8px;cursor:pointer}.upload input{display:none}.help{border-top:1px solid var(--line);margin-top:18px;padding-top:16px}.help p,.small-note{font-size:12px;line-height:1.55;color:var(--muted);margin:6px 0}.help b{color:#e8e4ff}
.center{min-width:0;display:grid;grid-template-rows:44px 1fr}.toolbar{display:flex;align-items:center;justify-content:space-between;padding:0 12px;background:#171a21;border-bottom:1px solid var(--line);font-size:12px;color:var(--muted)}.toolbar>div,.button-row{display:flex;gap:7px}.scroll{overflow:auto;padding:42px;background:#12151a}#canvas{position:relative;width:1280px;height:720px;margin:auto;overflow:hidden;background:radial-gradient(circle at 50% 30%,rgba(142,125,255,.15),transparent 35%),linear-gradient(135deg,#1d2230,#101218 62%);box-shadow:0 20px 80px #0007;user-select:none}#guide{position:absolute;inset:0;display:grid;place-content:center;text-align:center;gap:6px;color:var(--muted);pointer-events:none}#guide b{font-size:22px;color:var(--text)}
.item{position:absolute;min-width:20px;min-height:20px;cursor:move;touch-action:none}.item img{width:100%;height:100%;display:block;object-fit:contain;pointer-events:none}.text-object{width:100%;height:100%;display:grid;align-items:center;white-space:pre-wrap;overflow:hidden;pointer-events:none}.item.selected{outline:2px solid var(--accent);outline-offset:2px}.item.has-link:after{content:"↗";position:absolute;right:4px;top:4px;padding:2px 5px;border-radius:5px;background:#111b;color:white;font-size:12px;pointer-events:none}.handle{position:absolute;right:-7px;bottom:-7px;width:14px;height:14px;border-radius:50%;background:var(--accent);border:2px solid white;cursor:nwse-resize}
#none,#status,.record-status{border:1px dashed var(--line);border-radius:8px;padding:11px;color:var(--muted);font-size:12px;line-height:1.5}.inspector-block{margin:18px -2px 0;padding:15px 2px 4px;border-top:1px solid var(--line)}.check-row{display:flex;align-items:center;gap:8px}.check-row input{width:auto}.button-row{margin-bottom:8px}.button-row button{flex:1}.record-status.active{border-color:#a94a59;color:#ffd8de;background:#4a20283b}.detail-button{margin:2px 0 11px}

.keyframe-panel{background:#171a21;border-top:2px solid var(--accent);min-height:350px;box-shadow:0 -16px 50px #0006}
.keyframe-panel-head,.keyframe-panel-foot{display:flex;align-items:center;justify-content:space-between;gap:15px;padding:16px 20px;border-bottom:1px solid var(--line)}
.keyframe-panel-head h2{font-size:18px;margin:0 0 4px}
.keyframe-panel-head p,.keyframe-panel-foot span{margin:0;color:var(--muted);font-size:12px}
.keyframe-panel-foot{border-top:1px solid var(--line);border-bottom:0}
.timeline-toolbar{display:flex;align-items:end;gap:10px;padding:12px 20px;border-bottom:1px solid var(--line);flex-wrap:wrap}
.timeline-toolbar label{width:180px;margin:0}
.timeline-area{padding:18px 24px 22px;background:#12151b}
.timeline-ruler{position:relative;height:26px;margin:0 12px;color:var(--muted);font-size:10px;user-select:none}
.timeline-ruler-mark{position:absolute;bottom:0;transform:translateX(-50%);white-space:nowrap}
.timeline-ruler-mark:after{content:"";display:block;width:1px;height:8px;margin:3px auto 0;background:#51596a}
.timeline-track{position:relative;height:82px;border:1px solid var(--line);border-radius:10px;background:linear-gradient(#1d2129,#171a21);overflow:hidden;touch-action:none}
.timeline-track:before{content:"";position:absolute;inset:0;background:repeating-linear-gradient(90deg,transparent 0,transparent calc(10% - 1px),#2a303b calc(10% - 1px),#2a303b 10%);opacity:.6;pointer-events:none}
.timeline-line{position:absolute;left:14px;right:14px;top:40px;height:2px;background:#4a5262}
.timeline-empty{position:absolute;inset:0;display:grid;place-items:center;color:var(--muted);font-size:12px;pointer-events:none}
.key-marker{position:absolute;top:31px;width:18px;height:18px;border:2px solid #eee;background:var(--accent);transform:translateX(-50%) rotate(45deg);border-radius:3px;cursor:grab;box-shadow:0 2px 7px #0008}
.key-marker:hover{filter:brightness(1.16)}
.key-marker.selected{outline:3px solid #ffffff55;outline-offset:4px}
.key-marker.dragging{cursor:grabbing}
.key-marker-label{position:absolute;top:57px;transform:translateX(-50%);font-size:10px;color:var(--muted);white-space:nowrap;pointer-events:none}
.keyframe-inspector{padding:16px 20px;border-top:1px solid var(--line);background:#1a1e26}
.keyframe-inspector-title{display:flex;align-items:baseline;gap:12px;margin-bottom:13px}
.keyframe-inspector-title strong{font-size:14px}
.keyframe-inspector-title span{font-size:12px;color:var(--muted)}
.keyframe-fields{display:grid;grid-template-columns:repeat(6,minmax(90px,1fr));gap:10px}
.keyframe-fields label{margin:0}
.key-text-field{grid-column:1/-1}
.key-text-field textarea{min-height:68px}
#preview{position:fixed;inset:0;z-index:50;background:#090a0d;overflow:auto}#closePreview{position:fixed;right:16px;top:16px;z-index:5}#preview article{min-height:100vh;padding:80px 20px 40px;display:grid;place-content:center}#preview h1{margin:0;font-size:clamp(30px,5vw,68px)}#preview p{color:#b9c0cd;max-width:760px;line-height:1.7}#previewCanvas{position:relative;width:min(1280px,calc(100vw - 40px));aspect-ratio:16/9;overflow:hidden;background:radial-gradient(circle at 50% 30%,rgba(142,125,255,.15),transparent 35%),linear-gradient(135deg,#1d2230,#101218 62%)}#previewCanvas .item{cursor:pointer}
@media(max-width:980px){main{height:auto;grid-template-columns:1fr}.center{min-height:760px}aside:last-child{border-left:0;border-top:1px solid var(--line)}header{height:auto;min-height:58px;gap:10px;flex-wrap:wrap;padding:10px 14px}header nav{flex-wrap:wrap}.timeline-toolbar{flex-wrap:wrap}.keyframe-fields{grid-template-columns:repeat(2,minmax(0,1fr))}}


.history-button{
  position:absolute;
  left:50%;
  transform:translateX(-50%);
  min-width:110px;
}
.history-panel{
  position:fixed;
  top:70px;
  left:50%;
  transform:translateX(-50%);
  z-index:80;
  width:min(720px,calc(100vw - 32px));
  max-height:70vh;
  background:#171a21;
  border:1px solid var(--line);
  border-radius:12px;
  box-shadow:0 24px 80px #000a;
  overflow:hidden;
}
.history-panel-head{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:14px;
  padding:15px 17px;
  border-bottom:1px solid var(--line);
}
.history-panel-head h2{margin:0 0 4px;font-size:17px}
.history-panel-head p{margin:0;color:var(--muted);font-size:12px}
.history-list{max-height:calc(70vh - 78px);overflow:auto;padding:8px}
.history-entry{
  display:grid;
  grid-template-columns:82px 1fr auto;
  gap:10px;
  align-items:center;
  padding:10px;
  border-bottom:1px solid #292e39;
  font-size:12px;
}
.history-entry:last-child{border-bottom:0}
.history-entry .history-kind{
  color:#ddd8ff;
  font-weight:600;
}
.history-entry .history-time{color:var(--muted);white-space:nowrap}
.history-empty{padding:28px;text-align:center;color:var(--muted);font-size:12px}

.key-marker.multi-selected{
  outline:3px solid #ffffff88;
  outline-offset:4px;
}
.timeline-selection-count{
  color:#d8d3ff;
}
@media(max-width:980px){
  .history-button{position:static;transform:none;order:3}
  header{justify-content:flex-start}
  header nav{margin-left:auto}
}

.timeline-check{
  display:flex;
  align-items:center;
  gap:7px;
  margin:0;
  min-height:38px;
  padding:0 8px;
  border:1px solid var(--line);
  border-radius:8px;
  background:#20242c;
  color:var(--text);
}
.timeline-check input{width:auto}
.timeline-snap-ms{width:145px!important;margin:0}
.key-marker{user-select:none;-webkit-user-select:none}
