:root{
  --bg:#f5f3ef;--surface:#faf9f7;--surface2:#f0ede8;
  --border:#d8d3cb;--border-light:#e8e4de;
  --text:#2a2520;--text-muted:#7a7268;
  --accent:#5c3d1e;--accent2:#8b5e3c;--accent-light:#f0e6da;
  --red:#c0392b;--green:#27713a;--orange:#d4730a;
  --icon-col-w:120px;--icon-col-w-collapsed:36px;
  --header-h:52px;
}
html,body{height:100%!important;margin:0;padding:0;}
#nola-app-wrapper,#nola-app-wrapper *,#nola-app,#nola-app *{box-sizing:border-box;}
#nola-app-wrapper{position:relative;width:100%;min-height:800px;height:auto!important;margin-bottom:40px;z-index:9999;display:flex;flex-direction:column;background:var(--bg);overflow:visible;}
#nola-app p,#nola-app ul,#nola-app ol,#nola-app li,
#nola-app h1,#nola-app h2,#nola-app h3,#nola-app h4,#nola-app h5,#nola-app h6{margin:0;padding:0;font-size:inherit;font-weight:inherit;line-height:inherit;border:none;}
#nola-app input,#nola-app textarea,#nola-app select,#nola-app button{font-family:'Noto Sans JP',sans-serif;box-sizing:border-box;}
#nola-app{font-family:'Noto Sans JP',sans-serif;background:var(--bg);color:var(--text);font-size:14px;width:100%;min-height:800px;clear:both!important;margin-bottom:50px!important;height:auto!important;display:flex!important;flex-direction:column;overflow:visible!important;position:relative;}

/* 縦リサイズハンドル */
#nola-height-resizer{width:100%;height:8px;background:var(--surface2);border-top:1px solid var(--border);cursor:ns-resize;display:flex;align-items:center;justify-content:center;flex-shrink:0;}
#nola-height-resizer::before{content:'';width:40px;height:3px;border-radius:2px;background:var(--border);}
#nola-height-resizer:hover::before{background:var(--accent2);}

/* ヘッダー */
#nola-header{height:var(--header-h);background:var(--accent);color:#f5f0e8;display:flex;align-items:center;padding:0 12px;gap:8px;flex-shrink:0;border-bottom:2px solid #3d2810;z-index:100;overflow:hidden;}
#nola-header .logo{font-family:'Noto Serif JP',serif;font-weight:600;font-size:14px;letter-spacing:.08em;white-space:nowrap;color:#f0e6da;flex-shrink:0;}
#nola-header select{background:rgba(255,255,255,.12);color:#f0e6da;border:1px solid rgba(255,255,255,.2);padding:3px 5px;border-radius:4px;font-size:11px;cursor:pointer;flex-shrink:0;}
#nola-header select option{background:#3d2810;color:#f0e6da;}
.h-sep{width:1px;height:24px;background:rgba(255,255,255,.2);flex-shrink:0;}
.h-spacer{flex:1;min-width:4px;}
.sync-sel{display:flex;gap:6px;font-size:11px;color:#d4c4b0;flex-shrink:0;}
.sync-sel label{cursor:pointer;white-space:nowrap;display:flex;align-items:center;gap:2px;}
.h-btn{background:rgba(255,255,255,.12);color:#f0e6da;border:1px solid rgba(255,255,255,.2);padding:3px 7px;border-radius:4px;font-size:11px;cursor:pointer;white-space:nowrap;font-family:'Noto Sans JP',sans-serif;transition:background .15s;flex-shrink:0;}
.h-btn:hover{background:rgba(255,255,255,.22);}
.h-btn.danger{border-color:rgba(255,80,60,.4);color:#ff9988;}
.h-btn.danger:hover{background:rgba(255,80,60,.2);}
#set-name{background:rgba(255,255,255,.12);color:#f0e6da;border:1px solid rgba(255,255,255,.2);padding:3px 6px;border-radius:4px;font-size:11px;width:90px;flex-shrink:0;}
#set-name::placeholder{color:rgba(240,230,218,.5);}
#copy-msg{font-size:11px;font-weight:500;color:#90e0a0;white-space:nowrap;opacity:0;transition:opacity .3s;min-width:50px;flex-shrink:0;}

/* ━━━ 3ペインレイアウト ━━━ */
#nola-body{display:flex;flex:1;overflow:hidden;min-height:548px;}

/* 左列 */
#nola-icon-col{width:var(--icon-col-w);min-width:var(--icon-col-w);background:var(--surface);border-right:1px solid var(--border);display:flex;flex-direction:column;transition:width .2s ease,min-width .2s ease;overflow:hidden;flex-shrink:0;}
#nola-icon-col.collapsed{width:var(--icon-col-w-collapsed);min-width:var(--icon-col-w-collapsed);}
.icon-col-toggle{display:flex;align-items:center;gap:6px;width:100%;padding:8px 8px;background:var(--surface2);border:none;border-bottom:1px solid var(--border);cursor:pointer;color:var(--text-muted);font-size:13px;transition:background .15s;flex-shrink:0;white-space:nowrap;overflow:hidden;}
.icon-col-toggle:hover{background:var(--accent-light);color:var(--accent);}
.icon-col-toggle .ic-label{font-size:11px;}
.ic-btn{display:flex;align-items:center;gap:6px;width:100%;padding:7px 8px;background:none;border:none;border-bottom:1px solid var(--border-light);cursor:pointer;color:var(--text-muted);font-size:14px;transition:background .15s;text-align:left;white-space:nowrap;overflow:hidden;font-family:'Noto Sans JP',sans-serif;}
.ic-btn .ic-label{font-size:11px;color:var(--text-muted);flex-shrink:0;}
.ic-btn:hover{background:var(--accent-light);color:var(--accent);}
.ic-btn:hover .ic-label{color:var(--accent);}
.ic-btn.active{background:var(--accent-light);}
.ic-btn.active .ic-label{color:var(--accent);font-weight:500;}
.ic-sep{height:1px;background:var(--border);margin:2px 0;flex-shrink:0;}
#nola-icon-col.collapsed .ic-label,#nola-icon-col.collapsed .icon-col-toggle .ic-label{display:none;}
#nola-icon-col.collapsed .ic-btn{padding:8px 0;justify-content:center;}
#nola-icon-col.collapsed .icon-col-toggle{padding:8px 0;justify-content:center;}

/* 真ん中 */
#nola-panel-area{width:280px;min-width:180px;max-width:600px;background:var(--surface);border-right:1px solid var(--border);display:flex;flex-direction:column;overflow:hidden;flex-shrink:0;}
#panel-resizer{width:5px;background:var(--border-light);cursor:ew-resize;flex-shrink:0;transition:background .15s;}
#panel-resizer:hover{background:var(--accent2);}

/* 右 */
#nola-editor-area{flex:1;display:flex;flex-direction:column;overflow:hidden;min-width:0;position:relative;}

/* パネル共通 */
.sidebar-panel{flex:1;overflow-y:auto;padding:10px;display:none;}
.sidebar-panel.active{display:block;}
.panel-section{margin-bottom:14px;}
.panel-section h4{font-size:10px;font-weight:500;color:var(--text-muted);text-transform:uppercase;letter-spacing:.07em;margin-bottom:6px;padding-bottom:3px;border-bottom:1px solid var(--border-light);}
.panel-btn{width:100%;text-align:left;padding:5px 8px;background:transparent;border:1px solid var(--border-light);border-radius:4px;font-size:12px;cursor:pointer;color:var(--text);margin-bottom:4px;transition:background .15s;font-family:'Noto Sans JP',sans-serif;}
.panel-btn:hover{background:var(--accent-light);}
.panel-btn.primary{background:var(--accent);color:#fff;border-color:var(--accent);}
.panel-btn.primary:hover{background:var(--accent2);}
.panel-btn.sm{padding:3px 8px;font-size:11px;width:auto;margin:0;}
.tab-name-wrap{display:flex;align-items:center;gap:4px;padding:5px 0 8px;}
.tab-name-wrap span{font-size:11px;font-weight:500;}
.tab-name-edit-btn{font-size:10px;background:none;border:none;cursor:pointer;color:var(--text-muted);padding:0 2px;}
.tab-name-edit-btn:hover{color:var(--accent);}
/* タブ別戻るボタン */
.tab-undo-btn{font-size:10px;padding:2px 6px;border:1px solid var(--border);border-radius:3px;cursor:pointer;background:var(--surface2);color:var(--text-muted);transition:all .15s;white-space:nowrap;margin-left:auto;}
.tab-undo-btn:hover{background:var(--accent-light);color:var(--accent);border-color:var(--accent);}
.tab-undo-btn:disabled{opacity:.35;cursor:default;}

/* ━━━ エディタ補助パネル ━━━ */
.editor-sub-label{display:flex;align-items:center;gap:4px;margin-bottom:4px;}
.editor-sub-label-input{border:none;background:transparent;font-size:11px;font-weight:500;color:var(--text);outline:none;width:auto;max-width:120px;border-bottom:1px dashed transparent;cursor:text;}
.editor-sub-label-input:focus{border-bottom-color:var(--accent);}
.next-write-area{width:100%;padding:7px 8px;border:1px solid var(--border);border-radius:4px;font-size:12px;background:var(--surface2);color:var(--text);resize:vertical;min-height:80px;font-family:'Noto Sans JP',sans-serif;line-height:1.7;box-sizing:border-box;}
.next-write-area:focus{outline:none;border-color:var(--accent);}
.prev-write-area{width:100%;padding:7px 8px;border:1px solid var(--border);border-radius:4px;font-size:12px;background:var(--surface2);color:var(--text);resize:vertical;font-family:'Noto Serif JP',serif;line-height:1.8;box-sizing:border-box;flex:1;min-height:120px;}
.prev-write-area:focus{outline:none;border-color:var(--accent);}
/* エディタパネルを縦いっぱいに */
#panel-editor{display:flex;flex-direction:column;}
#panel-editor.active{display:flex;}

/* ━━━ メモタブ ━━━ */
.memo-col-ctrl{display:flex;align-items:center;gap:6px;margin-bottom:6px;}
.memo-col-ctrl label{font-size:11px;color:var(--text-muted);}
.col-btn{padding:2px 8px;font-size:11px;border:1px solid var(--border);border-radius:3px;cursor:pointer;background:var(--surface2);color:var(--text-muted);transition:all .15s;}
.col-btn.active{background:var(--accent);color:#fff;border-color:var(--accent);}
.memo-2col-wrap{display:flex;gap:7px;}
.memo-col-div{flex:1;display:flex;flex-direction:column;gap:7px;}
.memo-col-header{display:flex;align-items:center;gap:4px;margin-bottom:4px;}
.memo-col-header .col-add-btn{font-size:11px;padding:2px 7px;background:var(--accent);color:#fff;border:none;border-radius:3px;cursor:pointer;white-space:nowrap;}
.memo-col-header .col-add-btn:hover{background:var(--accent2);}
.memo-1col-add{margin-bottom:6px;}
.memo-block{background:#fff;border:1px solid var(--border-light);border-radius:6px;overflow:hidden;}
.memo-head{background:var(--surface2);padding:4px 8px;display:flex;align-items:center;border-bottom:1px solid var(--border-light);gap:2px;}
.memo-head input{flex:1;border:none;background:transparent;font-weight:500;font-size:11px;outline:none;color:var(--text);font-family:'Noto Sans JP',sans-serif;}
.memo-move-btns{display:flex;gap:1px;flex-shrink:0;}
.memo-move-btn{background:none;border:none;cursor:pointer;color:var(--text-muted);font-size:9px;padding:1px 2px;line-height:1;}
.memo-move-btn:hover{color:var(--accent);}
.memo-col-move-btn{background:none;border:none;cursor:pointer;color:var(--text-muted);font-size:9px;padding:1px 2px;line-height:1;}
.memo-col-move-btn:hover{color:var(--accent);}
.memo-del-btn{background:none;border:none;cursor:pointer;color:var(--text-muted);font-size:13px;padding:0 2px;}
.memo-del-btn:hover{color:var(--red);}
.memo-block textarea{width:100%;border:none;padding:6px 8px;font-size:12px;resize:vertical;outline:none;background:transparent;color:var(--text);font-family:'Noto Sans JP',sans-serif;line-height:1.6;min-height:55px;}

/* ━━━ 登場人物タブ ━━━ */
.char-group-tabs{display:flex;flex-wrap:wrap;gap:3px;margin-bottom:8px;}
.char-group-tab{padding:2px 8px;font-size:10px;border:1px solid var(--border);border-radius:12px;cursor:pointer;background:var(--surface2);color:var(--text-muted);transition:all .15s;}
.char-group-tab.active{color:#fff;font-weight:500;}
.char-card{border:1px solid var(--border-light);border-radius:6px;padding:0;margin-bottom:8px;border-left:4px solid var(--border);overflow:hidden;}
.char-card-head{display:flex;justify-content:space-between;align-items:center;cursor:pointer;padding:7px 8px;background:var(--surface2);}
.char-card-head .char-name-label{font-weight:500;font-size:12px;display:flex;align-items:center;gap:6px;}
.char-card-head .char-color-dot{width:10px;height:10px;border-radius:50%;display:inline-block;flex-shrink:0;}
.char-card-head .char-group-label{font-size:9px;color:var(--text-muted);}
.char-card-body{display:none;padding:8px;}
.char-card-body.open{display:block;}
.char-field{display:flex;align-items:flex-start;gap:6px;margin-bottom:5px;}
/* ラベル：編集可能 */
.char-field-label-input{font-size:10px;color:var(--text-muted);flex-shrink:0;padding-top:4px;border:none;background:transparent;outline:none;border-bottom:1px dashed transparent;cursor:text;min-width:30px;max-width:80px;width:auto;}
.char-field-label-input:focus{border-bottom-color:var(--accent);color:var(--accent);}
.char-field input,.char-field textarea{flex:1;padding:3px 6px;border:1px solid var(--border-light);border-radius:3px;font-size:11px;background:var(--surface);color:var(--text);font-family:'Noto Sans JP',sans-serif;min-width:0;}
.char-field textarea{min-height:38px;resize:vertical;}
.char-field-btns{display:flex;flex-direction:column;gap:1px;padding-top:4px;flex-shrink:0;}
.char-field-move-btn{background:none;border:none;cursor:pointer;color:var(--text-muted);font-size:8px;padding:0 2px;line-height:1;}
.char-field-move-btn:hover{color:var(--accent);}
.char-del-btn{background:none;border:none;color:var(--text-muted);cursor:pointer;font-size:13px;padding:2px 3px;flex-shrink:0;}
.char-del-btn:hover{color:var(--red);}
.char-decide-btn{width:100%;margin-top:8px;padding:5px;background:var(--accent);color:#fff;border:none;border-radius:4px;font-size:12px;cursor:pointer;font-family:'Noto Sans JP',sans-serif;}
.char-decide-btn:hover{background:var(--accent2);}
.char-copy-btn{width:100%;margin-top:4px;padding:4px;background:var(--surface2);color:var(--text-muted);border:1px solid var(--border);border-radius:4px;font-size:11px;cursor:pointer;font-family:'Noto Sans JP',sans-serif;}
.char-copy-btn:hover{background:var(--accent-light);color:var(--accent);}

/* ━━━ 用語集タブ ━━━ */
.group-tabs-wrap{display:flex;flex-wrap:wrap;gap:3px;margin-bottom:8px;}
.group-tab{padding:2px 8px;font-size:10px;border:1px solid var(--border);border-radius:12px;cursor:pointer;background:var(--surface2);color:var(--text-muted);}
.group-tab.active{background:var(--accent);color:#fff;border-color:var(--accent);}
.group-tab-del{font-size:9px;margin-left:2px;opacity:.6;cursor:pointer;}
.group-tab-del:hover{opacity:1;color:var(--red);}
.item-card{border:1px solid var(--border-light);border-radius:6px;padding:8px;margin-bottom:7px;background:var(--surface2);}
.item-card-head{display:flex;align-items:center;margin-bottom:6px;gap:4px;}
.item-title-input{flex:1;border:none;background:transparent;font-weight:500;font-size:12px;color:var(--text);outline:none;min-width:0;border-bottom:1px dashed var(--border-light);padding-bottom:1px;}
.item-title-input:focus{border-bottom-color:var(--accent);}
.item-card-group-sel{font-size:10px;color:var(--text-muted);border:1px solid var(--border-light);border-radius:3px;padding:1px 4px;background:var(--surface);cursor:pointer;}
.item-del-btn{background:none;border:none;color:var(--text-muted);cursor:pointer;font-size:13px;padding:2px 3px;flex-shrink:0;}
.item-del-btn:hover{color:var(--red);}
.item-card textarea{width:100%;border:1px solid var(--border-light);border-radius:3px;background:var(--surface);color:var(--text);font-size:11px;padding:5px 6px;resize:vertical;min-height:50px;font-family:'Noto Sans JP',sans-serif;line-height:1.6;box-sizing:border-box;}
/* 用語集グループカラー */
.glossary-group-btn{padding:2px 8px;font-size:10px;border:1px solid var(--border);border-radius:3px;cursor:pointer;background:var(--surface2);color:var(--text-muted);transition:all .15s;white-space:nowrap;}
.glossary-group-btn.active{color:#fff;border-color:transparent;}
.glossary-add-grp-btn{padding:2px 8px;font-size:10px;border:1px dashed var(--border);border-radius:3px;cursor:pointer;background:transparent;color:var(--accent);}
.glossary-grp-bar-wrap{display:flex;flex-wrap:wrap;gap:3px;margin-bottom:8px;}
/* 用語集グループカラーモーダル内 */
.glossary-grp-modal-row{display:flex;align-items:center;gap:8px;margin-top:8px;}
.glossary-grp-modal-row label{font-size:12px;color:var(--text-muted);white-space:nowrap;}

/* ━━━ フラグタブ ━━━ */
.flag-tab-bar{display:flex;flex-wrap:wrap;gap:3px;margin-bottom:8px;align-items:center;}
.flag-tab{padding:2px 8px;font-size:10px;border:1px solid var(--border);border-radius:3px;cursor:pointer;background:var(--surface2);color:var(--text-muted);transition:all .15s;white-space:nowrap;}
.flag-tab.active{background:var(--accent);color:#fff;border-color:var(--accent);}
.flag-tab-add{padding:2px 8px;font-size:10px;border:1px dashed var(--border);border-radius:3px;cursor:pointer;background:transparent;color:var(--accent);transition:all .15s;}
.flag-tab-add:hover{background:var(--accent-light);}
/* ビュー/編集ボタン（2つ並列） */
.flag-mode-btns{display:flex;gap:4px;margin-left:auto;}
.flag-mode-btn{font-size:10px;padding:2px 7px;border:1px solid var(--border);border-radius:3px;cursor:pointer;background:var(--surface2);color:var(--text-muted);transition:all .15s;white-space:nowrap;}
.flag-mode-btn.active{background:var(--accent);color:#fff;border-color:var(--accent);}
/* フラグカード */
.flag-card{background:var(--surface);border:1px solid var(--border-light);border-radius:4px;margin-bottom:5px;overflow:hidden;}
.flag-card-head{display:flex;align-items:stretch;min-height:32px;user-select:none;}
.flag-grp-bar{width:4px;flex-shrink:0;background:var(--border);}
.flag-status-block{display:flex;align-items:center;justify-content:center;padding:0 6px;font-size:9px;font-weight:600;flex-shrink:0;white-space:nowrap;letter-spacing:.03em;min-width:44px;}
.flag-status-block.flag-open{background:#fde8e8;color:var(--red);}
.flag-status-block.flag-done{background:#e8f5e9;color:var(--green);}
.flag-status-block.flag-hold{background:#fff3e0;color:var(--orange);}
#panel-flag.flag-view .flag-status-block{cursor:default;pointer-events:none;}
#panel-flag.flag-edit .flag-status-block{cursor:pointer;}
/* ▼展開ボタン */
.flag-toggle-btn{background:none;border:none;border-left:1px solid var(--border-light);cursor:pointer;color:var(--text-muted);font-size:10px;padding:0 6px;flex-shrink:0;transition:transform .15s;}
.flag-toggle-btn.open{transform:rotate(180deg);}
.flag-toggle-btn:hover{color:var(--accent);}
/* タイトル */
.flag-card-title-wrap{flex:1;display:flex;align-items:center;padding:0 6px;min-width:0;}
.flag-card-title{width:100%;font-size:12px;font-weight:500;color:var(--text);border:none;background:transparent;outline:none;font-family:'Noto Sans JP',sans-serif;}
#panel-flag.flag-view .flag-card-title{pointer-events:none;}
#panel-flag.flag-edit .flag-card-title{cursor:text;}
.flag-move-btns{display:flex;flex-direction:column;justify-content:center;gap:1px;padding:0 3px;flex-shrink:0;}
.flag-move-btn{background:none;border:none;cursor:pointer;color:var(--text-muted);font-size:9px;padding:1px 2px;line-height:1;}
.flag-move-btn:hover{color:var(--accent);}
#panel-flag.flag-view .flag-move-btns,#panel-flag.flag-view .flag-del-btn{display:none;}
/* 詳細欄 */
.flag-card-body{display:none;padding:7px 8px 7px 12px;border-top:1px solid var(--border-light);background:var(--surface);}
.flag-card-body.open{display:block;}
.flag-field-row{display:flex;align-items:center;gap:6px;margin-bottom:5px;font-size:11px;}
.flag-field-label-edit{font-size:10px;color:var(--text-muted);width:70px;flex-shrink:0;border:none;background:transparent;outline:none;border-bottom:1px dashed transparent;cursor:text;}
.flag-field-label-edit:focus{border-bottom-color:var(--accent);}
.flag-field-row input.flag-field-val{flex:1;padding:3px 6px;border:1px solid var(--border-light);border-radius:3px;font-size:11px;background:var(--surface2);color:var(--text);font-family:'Noto Sans JP',sans-serif;}
.flag-note-area{width:100%;border:1px solid var(--border-light);border-radius:3px;background:var(--surface2);color:var(--text);font-size:11px;padding:5px 6px;resize:none;overflow:hidden;font-family:'Noto Sans JP',sans-serif;line-height:1.6;margin-top:4px;min-height:32px;}
.flag-group-sel-row{margin-top:6px;display:flex;align-items:center;gap:6px;font-size:10px;color:var(--text-muted);}
#panel-flag.flag-view .flag-field-val,#panel-flag.flag-view .flag-note-area{pointer-events:none;border-color:transparent;background:transparent;}
#panel-flag.flag-view .flag-field-label-edit{pointer-events:none;}
#panel-flag.flag-view .flag-group-sel-row{display:none;}
.flag-grp-modal-row{display:flex;align-items:center;gap:8px;margin-top:8px;}
.flag-grp-modal-row label{font-size:12px;color:var(--text-muted);white-space:nowrap;}

/* ━━━ 時系列タブ ━━━ */
.tl-view-btn{font-size:10px;padding:2px 7px;border:1px solid var(--border);border-radius:3px;cursor:pointer;background:var(--surface2);color:var(--text-muted);transition:all .15s;white-space:nowrap;}
.tl-view-btn.active{background:var(--accent);color:#fff;border-color:var(--accent);}
.tl-headers{display:flex;gap:0;border-bottom:2px solid var(--border);margin-bottom:8px;}
.tl-header-cell{flex:1;padding:4px 6px;}
.tl-header-cell input{width:100%;border:none;background:transparent;font-size:12px;font-weight:600;color:var(--text);outline:none;font-family:'Noto Serif JP',serif;}
.tl-header-sep{width:2px;background:var(--border);flex-shrink:0;}
.tl-add-btn{font-size:11px;padding:3px 8px;background:var(--accent);color:#fff;border:none;border-radius:4px;cursor:pointer;white-space:nowrap;}
.tl-add-btn:hover{background:var(--accent2);}
.tl-block{border-radius:6px;margin-bottom:8px;overflow:hidden;border:1px solid var(--border-light);}
.tl-block-head{display:flex;align-items:center;gap:4px;padding:4px 8px;background:rgba(0,0,0,.04);border-bottom:1px solid var(--border-light);}
.tl-block-color-btn{width:18px;height:18px;border-radius:4px;border:1px solid var(--border);cursor:pointer;flex-shrink:0;position:relative;}
.tl-color-palette{position:absolute;top:22px;left:0;background:var(--surface);border:1px solid var(--border);border-radius:6px;padding:5px;display:flex;flex-wrap:nowrap;gap:3px;z-index:9999;width:auto;box-shadow:0 4px 12px rgba(0,0,0,.2);}
.tl-color-swatch{width:14px;height:14px;border-radius:2px;cursor:pointer;border:1px solid var(--border);transition:transform .1s;flex-shrink:0;}
.tl-color-swatch:hover{transform:scale(1.3);}
.tl-block-name{flex:1;font-size:11px;font-weight:500;border:none;background:transparent;outline:none;color:var(--text);font-family:'Noto Sans JP',sans-serif;}
.tl-block-move-btns{display:flex;gap:2px;flex-shrink:0;}
.tl-block-move-btn{background:none;border:none;cursor:pointer;color:var(--text-muted);font-size:10px;padding:1px 3px;line-height:1;border-radius:2px;}
.tl-block-move-btn:hover{background:var(--accent-light);color:var(--accent);}
.tl-block-del{background:none;border:none;cursor:pointer;color:var(--text-muted);font-size:13px;padding:0 2px;flex-shrink:0;}
.tl-block-del:hover{color:var(--red);}
.tl-rows-wrap{display:flex;}
.tl-col-left,.tl-col-right{flex:1;padding:4px;display:flex;flex-direction:column;gap:4px;}
.tl-col-sep{width:2px;background:var(--border);flex-shrink:0;}
.tl-row{border-radius:4px;overflow:visible;display:flex;align-items:flex-start;gap:2px;}
.tl-row-inner{flex:1;min-width:0;}
.tl-row-empty{height:20px;background:transparent;display:flex;align-items:center;}
.tl-row-input{width:100%;border:1px solid var(--border-light);border-radius:4px;padding:4px 6px;font-size:11px;background:#fff;color:var(--text);font-family:'Noto Sans JP',sans-serif;resize:vertical;overflow:auto;min-height:32px;outline:none;line-height:1.5;}
.tl-row-input:focus{border-color:var(--accent);}
.tl-row-btns{display:flex;flex-direction:column;gap:1px;flex-shrink:0;padding-top:2px;}
.tl-row-move-btn{background:none;border:none;cursor:pointer;color:var(--text-muted);font-size:9px;padding:1px 2px;line-height:1;}
.tl-row-move-btn:hover{color:var(--accent);}
.tl-row-del{background:none;border:none;cursor:pointer;color:var(--text-muted);font-size:10px;padding:1px 2px;line-height:1;}
.tl-row-del:hover{color:var(--red);}
.tl-col-add-row{display:flex;gap:3px;margin-top:2px;}
.tl-col-add-btn{flex:1;font-size:10px;padding:2px 4px;background:var(--surface2);border:1px dashed var(--border);border-radius:3px;cursor:pointer;color:var(--text-muted);transition:all .15s;}
.tl-col-add-btn:hover{background:var(--accent-light);color:var(--accent);}
/* ビューモード */
#panel-timeline.view-mode .tl-block-move-btn,#panel-timeline.view-mode .tl-block-del,
#panel-timeline.view-mode .tl-row-btns,#panel-timeline.view-mode .tl-col-add-row,
#panel-timeline.view-mode .tl-add-btn{display:none;}
#panel-timeline.view-mode .tl-row-input{border-color:transparent;background:transparent;pointer-events:none;}
#panel-timeline.view-mode .tl-block-name,#panel-timeline.view-mode .tl-block-color-btn,
#panel-timeline.view-mode .tl-header-cell input{pointer-events:none;}

/* ━━━ エディタ ━━━ */
#writing-panel{flex:1;display:flex;overflow:hidden;background:var(--bg);transition:background .25s;}
#writing-panel.dark-bg{background:#2E28200D;}
#writing-panel.dark-bg #e-title,#writing-panel.dark-bg #e-body{background:#2E28200D;color:#2E2820;}
#writing-panel > div{flex:1;display:flex;flex-direction:column;padding:10px;overflow-y:auto;}
#e-title{width:100%;font-family:'Noto Serif JP',serif;font-size:19px;font-weight:600;border:none;border-bottom:2px solid var(--border);background:transparent;color:var(--text);padding:5px 0 10px;margin-bottom:12px;outline:none;transition:border-color .2s;}
#e-title:focus{border-bottom-color:var(--accent);}
#e-body{flex:1;width:100%;border:none;background:transparent;color:var(--text);font-family:'Noto Serif JP',serif;font-size:15px;line-height:2;resize:none;outline:none;min-height:200px;}

/* 出力パネル */
#output-panel{background:var(--surface);border-top:1px solid var(--border);flex-shrink:0;display:flex;flex-direction:column;height:38px;transition:height .22s;}
#output-panel.open{height:300px;}
.output-toolbar{height:38px;background:var(--surface2);border-bottom:1px solid var(--border);display:flex;align-items:center;padding:0 10px;gap:8px;flex-shrink:0;}
.output-toolbar strong{font-size:12px;color:var(--text-muted);}
#output-inner{flex:1;display:none;flex-direction:column;overflow:hidden;}
#output-panel.open #output-inner{display:flex;}
.config-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:4px;padding:7px 10px;overflow-y:auto;font-size:12px;max-height:90px;flex-shrink:0;}
.config-grid label{display:flex;align-items:center;gap:4px;cursor:pointer;padding:1px 0;}
.config-grid input[type="checkbox"]{accent-color:var(--accent);}
.sign-config-area{padding:5px 10px;border-top:1px solid var(--border-light);display:none;align-items:center;gap:10px;font-size:12px;flex-wrap:wrap;flex-shrink:0;}
.sign-config-area.visible{display:flex;}
#full-output{width:100%;flex:1;border:none;background:var(--accent);color:#f0e6da;font-family:'JetBrains Mono',monospace;font-size:12px;padding:10px 13px;resize:none;outline:none;line-height:1.7;}

/* モーダル */
.ns-modal-overlay{position:fixed;top:0;left:0;width:100%;height:100%;background:rgba(30,20,10,.55);display:none;justify-content:center;align-items:center;z-index:99900;}
.ns-modal-overlay.open{display:flex;}
.ns-modal-box{background:var(--surface);border-radius:10px;padding:24px 24px 20px;min-width:300px;max-width:520px;width:90%;box-shadow:0 8px 36px rgba(0,0,0,.28);color:var(--text);max-height:90vh;display:flex;flex-direction:column;}
.ns-modal-box h3{font-family:'Noto Serif JP',serif;font-size:15px;margin-bottom:16px;padding-bottom:10px;border-bottom:1px solid var(--border);color:var(--accent);}
.ns-modal-body{flex:1;overflow-y:auto;padding:2px 0;}
.ns-modal-foot{display:flex;justify-content:flex-end;gap:8px;margin-top:16px;padding-top:12px;border-top:1px solid var(--border-light);}
.ns-modal-box label.field-label{display:block;font-size:12px;color:var(--text-muted);margin-bottom:5px;margin-top:10px;}
.ns-modal-box label.field-label:first-child{margin-top:0;}
.ns-modal-input{width:100%;padding:8px 10px;border:1px solid var(--border);border-radius:6px;font-size:13px;background:var(--surface2);color:var(--text);font-family:'Noto Sans JP',sans-serif;}
.ns-modal-input:focus{outline:none;border-color:var(--accent);}

/* フローティングウィジェット */
.widget-card{position:fixed;background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:12px 16px;min-width:175px;box-shadow:0 2px 14px rgba(0,0,0,.12);font-size:12px;display:none;cursor:move;z-index:99990;}
.widget-card.visible{display:block;}
#timer-widget{bottom:90px;right:14px;}
#deadline-widget{bottom:14px;right:14px;}
.widget-card h5{font-size:10px;color:var(--text-muted);margin-bottom:6px;text-transform:uppercase;letter-spacing:.06em;}
.timer-display{font-family:'JetBrains Mono',monospace;font-size:24px;color:var(--accent);font-weight:500;letter-spacing:.04em;}
.deadline-display{font-family:'JetBrains Mono',monospace;font-size:20px;color:var(--orange);font-weight:500;letter-spacing:.04em;}
.widget-btns{display:flex;gap:6px;margin-top:10px;flex-wrap:wrap;}
.widget-btn{padding:4px 10px;font-size:11px;border:1px solid var(--border);border-radius:4px;cursor:pointer;background:var(--surface2);color:var(--text);font-family:'Noto Sans JP',sans-serif;transition:background .15s;}
.widget-btn:hover{background:var(--accent-light);}
.widget-btn.stop{border-color:var(--red);color:var(--red);}
.widget-btn.stop:hover{background:#fde8e8;}
.serif-controls{display:flex;flex-wrap:wrap;gap:6px;align-items:center;padding:8px 0;border-bottom:1px solid var(--border-light);margin-bottom:10px;}
.serif-ck-label{font-size:12px;cursor:pointer;display:flex;align-items:center;gap:4px;}
.serif-list-area{font-family:'Noto Serif JP',serif;font-size:13px;line-height:2;max-height:52vh;overflow-y:auto;background:var(--surface2);padding:10px 12px;border-radius:6px;}
.serif-item{border-bottom:1px solid var(--border-light);padding:3px 0;}
.sync-overlay{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);font-size:90px;color:var(--orange);pointer-events:none;-webkit-text-stroke:3px #fff;z-index:9999;opacity:0;animation:syncFade 1.8s ease-in-out forwards;}
@keyframes syncFade{0%{opacity:0;transform:translate(-50%,-60%);}25%{opacity:.8;transform:translate(-50%,-50%);}80%{opacity:.8;}100%{opacity:0;transform:translate(-50%,-40%);}}
#nola-toast{position:fixed;bottom:18px;left:50%;transform:translateX(-50%);background:var(--accent);color:#f0e6da;padding:8px 20px;border-radius:20px;font-size:12px;z-index:99999;opacity:0;pointer-events:none;transition:opacity .3s;white-space:nowrap;}
#nola-toast.show{opacity:1;}
#nola-app ::-webkit-scrollbar{width:4px;height:4px;}
#nola-app ::-webkit-scrollbar-track{background:transparent;}
#nola-app ::-webkit-scrollbar-thumb{background:var(--border);border-radius:2px;}
#nola-app ::-webkit-scrollbar-thumb:hover{background:var(--text-muted);}