  @import url('https://fonts.googleapis.com/css2?family=Noto+Serif+KR:wght@300;400;600&family=Noto+Sans+KR:wght@300;400;500&display=swap');
  :root {
    --bg:#0d0b12; --surface:#16131f; --surface2:#1e1a2e; --border:#2e2847;
    --accent:#c084fc; --accent2:#f0abfc; --accent3:#818cf8;
    --text:#e2d9f3; --text-muted:#8b7aaa; --glow:rgba(192,132,252,0.15);
  }
  *{box-sizing:border-box;margin:0;padding:0;}
  body{font-family:'Noto Sans KR',sans-serif;background:var(--bg);color:var(--text);min-height:100vh;
    background-image:radial-gradient(ellipse at 20% 10%,rgba(129,140,248,0.08) 0%,transparent 50%),
    radial-gradient(ellipse at 80% 80%,rgba(192,132,252,0.08) 0%,transparent 50%);}
  header{padding:16px 28px;border-bottom:1px solid var(--border);display:flex;align-items:center;gap:12px;
    background:rgba(22,19,31,0.92);backdrop-filter:blur(12px);position:sticky;top:0;z-index:100;}
  header h1{font-family:'Noto Serif KR',serif;font-size:18px;font-weight:600;
    background:linear-gradient(90deg,var(--accent2),var(--accent3));-webkit-background-clip:text;-webkit-text-fill-color:transparent;}
  .v-badge{font-size:10px;padding:2px 8px;border-radius:20px;border:1px solid var(--accent3);color:var(--accent3);}
  .layout{display:grid;grid-template-columns:340px 1fr;height:calc(100vh - 61px);}

  /* LEFT */
  .panel-left{border-right:1px solid var(--border);overflow-y:auto;padding:18px 14px;display:flex;flex-direction:column;gap:14px;}
  .panel-left::-webkit-scrollbar{width:3px;}
  .panel-left::-webkit-scrollbar-thumb{background:var(--border);border-radius:3px;}
  .sec-label{font-size:10px;letter-spacing:.12em;text-transform:uppercase;color:var(--text-muted);margin-bottom:7px;}
  label{display:block;font-size:12px;color:var(--text-muted);margin-bottom:4px;}
  select,input[type="text"],textarea{width:100%;background:var(--surface2);border:1px solid var(--border);border-radius:7px;
    color:var(--text);font-family:'Noto Sans KR',sans-serif;font-size:12px;padding:7px 10px;outline:none;
    transition:border-color .2s,box-shadow .2s;appearance:none;}
  select:focus,input:focus,textarea:focus{border-color:var(--accent);box-shadow:0 0 0 2px var(--glow);}
  textarea{resize:vertical;min-height:64px;line-height:1.6;}
  .form-group{margin-bottom:10px;}
  .divider{height:1px;background:var(--border);}

  /* tags */
  .tag-section{margin-bottom:12px;}
  .tag-section-title{font-size:10px;letter-spacing:.08em;color:var(--accent3);text-transform:uppercase;margin-bottom:6px;display:flex;align-items:center;gap:5px;}
  .tag-grid{display:flex;flex-wrap:wrap;gap:4px;}
  .tag{padding:3px 8px;border-radius:14px;border:1px solid var(--border);font-size:11px;cursor:pointer;
    color:var(--text-muted);transition:all .12s;user-select:none;white-space:nowrap;}
  .tag:hover{border-color:var(--accent);color:var(--accent);}
  .tag.active{background:rgba(192,132,252,0.15);border-color:var(--accent);color:var(--accent);}
  .tag.multi.active{background:rgba(129,140,248,0.15);border-color:var(--accent3);color:var(--accent3);}

  /* mode/buttons */
  .mode-row{display:flex;background:var(--surface2);border:1px solid var(--border);border-radius:7px;padding:2px;gap:2px;}
  .mode-btn{flex:1;padding:6px 0;text-align:center;font-size:11px;border-radius:5px;cursor:pointer;color:var(--text-muted);transition:all .12s;user-select:none;}
  .mode-btn.active{background:rgba(192,132,252,0.15);color:var(--accent);}
  .btn-row{display:flex;gap:8px;}
  .btn-generate{flex:1;padding:11px;background:linear-gradient(135deg,var(--accent3),var(--accent));border:none;
    border-radius:8px;color:#fff;font-family:'Noto Sans KR',sans-serif;font-size:13px;font-weight:500;cursor:pointer;
    transition:opacity .2s,box-shadow .2s;box-shadow:0 4px 18px rgba(192,132,252,0.25);}
  .btn-generate:hover{opacity:.88;box-shadow:0 6px 24px rgba(192,132,252,0.38);}
  .btn-generate:disabled{opacity:.45;cursor:not-allowed;}
  .btn-random{padding:11px 14px;background:var(--surface2);border:1px solid var(--border);border-radius:8px;
    color:var(--text-muted);font-family:'Noto Sans KR',sans-serif;font-size:13px;cursor:pointer;transition:all .15s;white-space:nowrap;}
  .btn-random:hover{border-color:var(--accent2);color:var(--accent2);}
  .rand-indicator{font-size:10px;color:var(--accent2);background:rgba(240,171,252,0.1);
    border:1px solid rgba(240,171,252,0.25);border-radius:5px;padding:3px 8px;display:none;}
  .rand-indicator.show{display:inline-block;}

  /* RIGHT */
  .panel-right{display:flex;flex-direction:column;overflow:hidden;}
  .tabs{display:flex;border-bottom:1px solid var(--border);padding:0 20px;flex-shrink:0;}
  .tab{padding:12px 16px;font-size:12px;color:var(--text-muted);cursor:pointer;border-bottom:2px solid transparent;margin-bottom:-1px;transition:all .15s;}
  .tab:hover{color:var(--text);}
  .tab.active{color:var(--accent);border-bottom-color:var(--accent);}
  .tab-content{flex:1;overflow-y:auto;padding:22px 26px;}
  .tab-content::-webkit-scrollbar{width:3px;}
  .tab-content::-webkit-scrollbar-thumb{background:var(--border);border-radius:3px;}
  .pane{display:none;}
  .pane.active{display:block;}

  /* result */
  .result-card{background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:20px;margin-bottom:16px;animation:fadeUp .3s ease;}
  @keyframes fadeUp{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}
  .result-title{font-family:'Noto Serif KR',serif;font-size:17px;font-weight:600;color:var(--accent2);margin-bottom:8px;}
  .chip-row{display:flex;gap:5px;flex-wrap:wrap;margin-bottom:10px;}
  .chip{font-size:10px;padding:2px 8px;border-radius:14px;background:rgba(129,140,248,0.1);border:1px solid rgba(129,140,248,0.2);color:var(--accent3);}
  .result-sec-title{font-size:10px;letter-spacing:.1em;color:var(--text-muted);text-transform:uppercase;margin-bottom:5px;}
  .result-body{font-size:13px;line-height:1.85;color:var(--text);white-space:pre-wrap;word-break:keep-all;}

  /* script viewer */
  .script-viewer{background:var(--surface2);border-radius:8px;padding:16px;font-size:13px;line-height:2;white-space:pre-wrap;word-break:keep-all;max-height:600px;overflow-y:auto;}
  .script-viewer::-webkit-scrollbar{width:3px;}
  .script-viewer::-webkit-scrollbar-thumb{background:var(--border);}
  .s-cue{color:#94a3b8;font-style:italic;}
  .s-img{color:#60a5fa;font-size:11px;font-style:italic;}
  .s-act{color:#a78bfa;font-style:italic;}

  /* progress */
  .progress-wrap{background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:20px;margin-bottom:16px;}
  .progress-title{font-size:14px;font-weight:500;margin-bottom:14px;color:var(--text);}
  .progress-steps{display:flex;flex-direction:column;gap:8px;}
  .step-row{display:flex;align-items:center;gap:10px;font-size:12px;}
  .step-icon{width:22px;height:22px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:11px;flex-shrink:0;}
  .step-icon.pending{background:var(--surface2);border:1px solid var(--border);color:var(--text-muted);}
  .step-icon.running{background:rgba(192,132,252,0.15);border:1px solid var(--accent);animation:pulse .8s ease infinite alternate;}
  .step-icon.done{background:rgba(129,140,248,0.15);border:1px solid var(--accent3);color:var(--accent3);}
  .step-icon.error{background:rgba(239,68,68,0.1);border:1px solid rgba(239,68,68,0.4);color:#fca5a5;}
  @keyframes pulse{from{opacity:.6}to{opacity:1}}
  .step-label{color:var(--text-muted);}
  .step-label.running{color:var(--accent);}
  .step-label.done{color:var(--text);}
  .progress-bar-wrap{margin-top:14px;height:3px;background:var(--border);border-radius:3px;overflow:hidden;}
  .progress-bar{height:100%;background:linear-gradient(90deg,var(--accent3),var(--accent));border-radius:3px;transition:width .4s ease;}
  .char-counter{font-size:11px;color:var(--text-muted);margin-top:8px;text-align:right;}
  .char-counter b{color:var(--accent2);}

  .actions{display:flex;gap:6px;margin-top:12px;flex-wrap:wrap;}
  .btn-sm{padding:6px 12px;border-radius:6px;font-size:11px;cursor:pointer;border:1px solid var(--border);
    background:transparent;color:var(--text-muted);font-family:'Noto Sans KR',sans-serif;transition:all .12s;}
  .btn-sm:hover{border-color:var(--accent);color:var(--accent);}
  .btn-sm.primary{background:rgba(192,132,252,0.1);border-color:var(--accent);color:var(--accent);}
  .btn-sm.docx-btn{background:rgba(59,130,246,0.1);border-color:#60a5fa;color:#93c5fd;}
  .btn-sm.docx-btn:hover{background:rgba(59,130,246,0.2);}
  .btn-sm:disabled{opacity:.45;cursor:not-allowed;}

  .empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;
    height:60vh;color:var(--text-muted);gap:10px;text-align:center;}
  .empty-icon{font-size:44px;opacity:.35;}
  .empty-state p{font-size:13px;line-height:1.7;max-width:280px;}
  .error-box{background:rgba(239,68,68,0.1);border:1px solid rgba(239,68,68,0.3);border-radius:7px;padding:12px;font-size:12px;color:#fca5a5;}

  /* library */
  .lib-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:11px;}
  .lib-card{background:var(--surface);border:1px solid var(--border);border-radius:9px;padding:13px;cursor:pointer;transition:border-color .13s;}
  .lib-card:hover{border-color:var(--accent);}
  .lib-card-title{font-size:13px;font-weight:500;margin-bottom:4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
  .lib-snippet{font-size:11px;color:var(--text-muted);line-height:1.6;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden;}
  .lib-footer{margin-top:8px;display:flex;justify-content:space-between;font-size:10px;color:var(--text-muted);}

  input[type="range"]{-webkit-appearance:none;width:100%;height:3px;background:var(--border);border-radius:3px;outline:none;}
  input[type="range"]::-webkit-slider-thumb{-webkit-appearance:none;width:14px;height:14px;background:var(--accent);border-radius:50%;cursor:pointer;}
  .range-label{display:flex;justify-content:space-between;font-size:10px;color:var(--text-muted);margin-top:3px;}

  /* animation conti */
  .conti-wrap { display:flex; flex-direction:column; gap:0; }
  .conti-cut {
    display:grid;
    grid-template-columns:160px 1fr;
    border:1px solid var(--border);
    border-bottom:none;
    background:var(--surface);
  }
  .conti-cut:first-child { border-radius:10px 10px 0 0; }
  .conti-cut:last-child { border-bottom:1px solid var(--border); border-radius:0 0 10px 10px; }
  .conti-cut-img {
    border-right:1px solid var(--border);
    background:var(--surface2);
    display:flex; flex-direction:column;
    align-items:center; justify-content:center;
    min-height:140px; padding:12px;
    gap:8px;
  }
  .conti-cut-num {
    font-size:20px; font-weight:700;
    color:var(--accent); font-family:'Noto Serif KR',serif;
  }
  .conti-cut-img-placeholder {
    width:100%; aspect-ratio:4/3;
    border:1px dashed var(--border);
    border-radius:6px;
    background:rgba(0,0,0,0.2);
    display:flex; align-items:center; justify-content:center;
    font-size:10px; color:var(--border);
  }
  .conti-cut-body { padding:14px 16px; }
  .conti-cut-section { margin-bottom:10px; }
  .conti-cut-label {
    font-size:9px; letter-spacing:.1em; text-transform:uppercase;
    color:var(--accent3); margin-bottom:4px;
  }
  .conti-cut-text { font-size:13px; line-height:1.8; color:var(--text); white-space:pre-wrap; word-break:keep-all; }
  .conti-cut-dialog {
    background:var(--surface2);
    border-left:2px solid var(--accent);
    border-radius:0 6px 6px 0;
    padding:8px 12px;
    font-size:13px; line-height:1.9;
    white-space:pre-wrap; word-break:keep-all;
  }
  .conti-cut-sfx { font-size:12px; color:var(--text-muted); font-style:italic; }
  .conti-sep { height:1px; background: repeating-linear-gradient(90deg, var(--border) 0, var(--border) 6px, transparent 6px, transparent 12px); margin:0; }
  .conti-header {
    background:var(--surface);
    border:1px solid var(--accent3);
    border-radius:10px;
    padding:16px 20px;
    margin-bottom:12px;
  }
  .conti-story { font-size:13px; line-height:1.85; color:var(--text); white-space:pre-wrap; word-break:keep-all; }

  /* content type tab active */
  .content-tab.active {
    background:rgba(192,132,252,0.15) !important;
    border-color:var(--accent) !important;
    color:var(--accent) !important;
  }
  .custom-tag-input-wrap{margin-top:6px;}
  .custom-tag-input{
    width:100%;padding:4px 10px;font-size:11px;border-radius:14px;
    background:transparent;border:1px dashed var(--border);
    color:var(--text-muted);outline:none;transition:all .15s;
    font-family:'Noto Sans KR',sans-serif;
  }
  .custom-tag-input:focus{border-color:var(--accent);color:var(--text);background:rgba(192,132,252,0.05);}
  .custom-tag-input::placeholder{color:var(--border);}
  .tag.custom{position:relative;padding-right:20px;}
  .tag.custom .tag-del{
    position:absolute;right:5px;top:50%;transform:translateY(-50%);
    font-size:9px;cursor:pointer;color:var(--text-muted);line-height:1;
  }
  .tag.custom .tag-del:hover{color:#fca5a5;}
  .side-item{padding:10px 12px;border-radius:8px;border:1px solid var(--border);cursor:pointer;transition:all .15s;background:var(--surface);}
  .side-item:hover{border-color:var(--accent);background:rgba(192,132,252,0.05);}
  .side-item.active{border-color:var(--accent);background:rgba(192,132,252,0.1);}
  .side-num{font-size:9px;letter-spacing:.1em;text-transform:uppercase;color:var(--text-muted);margin-bottom:3px;}
  .side-item.active .side-num{color:var(--accent);}
  .side-title{font-size:12px;font-weight:500;color:var(--text);line-height:1.4;margin-bottom:3px;}
  .side-item.active .side-title{color:var(--accent2);}
  .side-concept{font-size:10px;color:var(--text-muted);line-height:1.4;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;}

  /* detail panel */
  .detail-panel{display:none;}
  .detail-panel.active{display:block;animation:fadeUp .2s ease;}
