:root{
  --dark:#0b0f13; --panel:#131920; --panel-2:#171f27; --raised:#1c242c;
  --ink:#d7dee4; --ink-dim:#b7c1c9; --muted:#7c8894; --line:#26303a;
  --accent:#29e0c4; --accent-2:#12a894; --accent-ink:#04241f; --danger:#e05a3a;
  --sans:"Zen Kaku Gothic New","Hiragino Sans","Noto Sans JP",sans-serif;
}
html[data-theme="dark"]{
  --dark:#0b0f13; --panel:#131920; --panel-2:#171f27; --raised:#1c242c;
  --ink:#d7dee4; --ink-dim:#b7c1c9; --muted:#7c8894; --line:#26303a;
  --accent:#29e0c4; --accent-2:#12a894; --accent-ink:#04241f; --danger:#e05a3a;
}
html[data-theme="light"]{
  --dark:#ffffff; --panel:#ffffff; --panel-2:#f1f3f4; --raised:#e7eaec;
  --ink:#222a33; --ink-dim:#4c5866; --muted:#828d99; --line:#dbe0e3;
  --accent:#0f9c8c; --accent-2:#0c7c70; --accent-ink:#ffffff; --danger:#c8442a;
}

*{box-sizing:border-box;}
html,body{margin:0;padding:0;height:100%;}
body{background:var(--dark); color:var(--ink); font-family:var(--sans); min-height:100vh; display:flex; flex-direction:column;}

.topbar{display:flex; align-items:center; justify-content:space-between; padding:14px 22px; border-bottom:1px solid var(--line); background:var(--panel); flex-wrap:wrap; gap:10px;}
.brand{display:flex; align-items:center; gap:12px;}
.local-badge{font-size:11px; letter-spacing:.04em; text-transform:uppercase; color:var(--accent); border:1px solid var(--accent-2); border-radius:999px; padding:2px 9px;}
.brand-name{font-weight:700; font-size:16px;}
.back-link{color:var(--muted); text-decoration:none; font-size:13px;}
.back-link:hover{color:var(--ink);}
.toolbar{display:flex; align-items:center; gap:8px; flex-wrap:wrap;}

.text-input{background:var(--raised); color:var(--ink); border:1px solid var(--line); border-radius:8px; padding:8px 10px; font-size:13px; font-family:var(--sans); width:100%;}
.text-input:focus{outline:1px solid var(--accent);}

select{background:var(--raised); color:var(--ink); border:1px solid var(--line); border-radius:8px; padding:7px 9px; font-size:12.5px; font-family:var(--sans);}

button{font-family:var(--sans); cursor:pointer;}
.primary{background:var(--accent); color:var(--accent-ink); border:none; border-radius:8px; padding:9px 16px; font-weight:700; font-size:13px;}
.primary:hover{background:var(--accent-2);}
.ghost{background:transparent; color:var(--ink-dim); border:1px solid var(--line); border-radius:8px; padding:9px 14px; font-size:13px;}
.ghost:hover{border-color:var(--accent); color:var(--ink);}
.ghost.small{padding:5px 11px; font-size:12px;}
.theme-toggle{
  width:32px; height:32px; flex:0 0 auto; display:flex; align-items:center; justify-content:center;
  border:1px solid var(--line); border-radius:8px; background:var(--panel-2); color:var(--ink-dim);
  font-size:15px; padding:0;
}
.theme-toggle:hover{border-color:var(--accent); color:var(--ink);}

main{flex:1; display:flex; gap:16px; padding:16px 20px; min-height:0; align-items:stretch;}

.panel{background:var(--panel); border:1px solid var(--line); border-radius:14px; padding:20px;}
.panel-title{font-size:18px; margin:0 0 16px; font-weight:700;}

.col-input{width:420px; flex:none; display:flex; flex-direction:column; overflow-y:auto;}
.col-preview{flex:1; display:flex; flex-direction:column; min-width:0;}

.control-row{display:flex; gap:14px; margin-bottom:14px;}
.control-group{flex:1; display:flex; flex-direction:column; gap:6px;}
.field-label{font-size:11.5px; color:var(--muted); font-weight:600;}

.type-toggle{display:flex; gap:6px;}
.type-btn{flex:1; background:var(--panel-2); border:1px solid var(--line); color:var(--ink-dim); border-radius:8px; padding:9px 6px; font-size:12.5px; font-weight:600;}
.type-btn.active{background:var(--raised); color:var(--accent); border-color:var(--accent);}

.toggle-row{display:flex; gap:8px; flex-wrap:wrap; margin-bottom:16px;}
.check-pill{display:flex; align-items:center; gap:6px; background:var(--panel-2); border:1px solid var(--line); border-radius:999px; padding:6px 12px; font-size:12px; color:var(--ink-dim); cursor:pointer;}
.check-pill input{accent-color:var(--accent);}

.preset-tree{margin-bottom:18px; background:var(--panel-2); border:1px solid var(--line); border-radius:10px; padding:10px 12px;}
.preset-tree summary{cursor:pointer; font-size:12.5px; font-weight:700; color:var(--ink-dim); list-style:none;}
.preset-tree summary::-webkit-details-marker{display:none;}
.preset-tree summary::before{content:'▸ '; color:var(--accent);}
.preset-tree[open] summary::before{content:'▾ ';}
.tree-list{list-style:none; margin:8px 0 0; padding-left:16px; border-left:1px dashed var(--line);}
.tree-list li{position:relative; padding:2px 0;}
.tree-list li::before{content:''; position:absolute; left:-16px; top:15px; width:12px; border-top:1px dashed var(--line);}
.tree-item{background:transparent; border:none; color:var(--ink-dim); font-size:12.5px; padding:5px 10px; border-radius:6px; width:100%; text-align:left;}
.tree-item:hover{background:var(--raised); color:var(--accent);}

.section-label{font-size:11px; letter-spacing:.06em; color:var(--muted); font-weight:700;}
.series-header, .rows-header{display:flex; align-items:center; justify-content:space-between; margin-bottom:6px;}
.rows-header-btns{display:flex; gap:6px;}
.hint-text{font-size:11.5px; color:var(--muted); margin:0 0 10px; line-height:1.5;}
.series-list{display:flex; flex-direction:column; gap:8px; margin-bottom:18px;}
.series-item{display:flex; align-items:center; gap:8px; background:var(--panel-2); border:1px solid var(--line); border-radius:10px; padding:8px 10px;}
.series-color{flex:none; width:26px; height:26px; border:1px solid var(--line); border-radius:6px; padding:0; background:transparent; cursor:pointer;}
.series-item .text-input{padding:6px 8px; font-size:12.5px;}
.series-del{flex:none; background:transparent; border:1px solid var(--line); color:var(--muted); border-radius:7px; padding:6px 10px; font-size:12px;}
.series-del:hover{color:var(--danger); border-color:var(--danger);}
.series-del:disabled{opacity:.35; cursor:not-allowed;}

.table-scroll{flex:1; overflow:auto; border:1px solid var(--line); border-radius:10px; background:var(--panel-2); min-height:120px;}
.table-scroll::-webkit-scrollbar{height:10px; width:10px;}
.table-scroll::-webkit-scrollbar-track{background:var(--panel-2);}
.table-scroll::-webkit-scrollbar-thumb{background:var(--line); border-radius:6px;}
.table-scroll::-webkit-scrollbar-thumb:hover{background:var(--accent);}
.data-table{border-collapse:collapse; width:100%; font-size:12.5px;}
.data-table th, .data-table td{border:1px solid var(--line); padding:0; text-align:left;}
.data-table th:first-child, .data-table td:first-child{
  position:sticky; left:0; z-index:1; box-shadow:2px 0 0 var(--line);
}
.data-table thead th:first-child{ z-index:3; background:var(--raised); }
.data-table tbody td:first-child{ background:var(--panel-2); }
.data-table thead th{background:var(--raised); color:var(--ink-dim); font-weight:700; padding:8px 10px; font-size:12px; white-space:nowrap;}
.data-table thead th.col-new-flash{animation:colFlash 1.1s ease-out;}
@keyframes colFlash{
  0%{background:var(--accent); color:var(--accent-ink);}
  100%{background:var(--raised); color:var(--ink-dim);}
}
.cell-input{width:100%; background:transparent; border:none; color:var(--ink); font-size:12.5px; padding:7px 9px; font-family:var(--sans);}
.cell-input:focus{outline:2px solid var(--accent); outline-offset:-2px; background:var(--raised);}
.row-del-cell{text-align:center !important; width:32px;}
.row-del{background:transparent; border:none; color:var(--muted); width:100%; padding:6px 0;}
.row-del:hover{color:var(--danger);}

.chart-frame{flex:1; background:var(--panel-2); border:1px solid var(--line); border-radius:12px; display:flex; align-items:center; justify-content:center; padding:16px; min-height:0;}
#chartCanvas{max-width:100%; max-height:100%; border-radius:6px;}

footer{text-align:center; color:var(--muted); font-size:11px; padding:14px; border-top:1px solid var(--line); background:var(--panel);}
.footer-copyright{margin-top:6px; opacity:.7; font-size:10px;}

@media (max-width: 980px){
  main{flex-direction:column;}
  .col-input{width:100%;}
}
