/* WTRSO Studio — 排期 / 顺场 / 通告 */
:root{
  --bg:#0f1115; --panel:#171a21; --panel2:#1e222b; --line:#2a2f3a;
  --ink:#e8eaee; --ink2:#a0a7b4; --ink3:#6b7280;
  --accent:#4fa3ff; --accent2:#2b7fd4;
  --warn:#e8502c; --ok:#39b56a; --lock:#f0b429;
  --strip-id:#f3f4f6; --strip-ed:#ffe680; --strip-in:#9ecbff; --strip-en:#a8e6a3;
  --strip-tw:#ffc48a; --strip-itw:#ffe3c6;
  --radius:10px; --mono:ui-monospace,SFMono-Regular,"SF Mono",Menlo,monospace;
  --sans:-apple-system,BlinkMacSystemFont,"PingFang SC","Helvetica Neue",Arial,sans-serif;
}
*{box-sizing:border-box}
html,body{margin:0;padding:0}
body{background:var(--bg);color:var(--ink);font:14px/1.5 var(--sans);-webkit-text-size-adjust:100%}
button,input,select,textarea{font:inherit;color:inherit}
a{color:var(--accent)}

/* ---------- 语言选择闸门 ---------- */
#gate{position:fixed;inset:0;background:var(--bg);display:flex;align-items:center;justify-content:center;z-index:100;padding:24px}
#gate.hide{display:none}
.gate-card{max-width:460px;width:100%;text-align:center}
.gate-card h1{font-size:22px;margin:0 0 6px;font-weight:600;letter-spacing:.01em}
.gate-card .sub{color:var(--ink2);font-size:13px;margin-bottom:28px}
.gate-opts{display:grid;gap:10px}
.gate-opts button{padding:16px;background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);cursor:pointer;text-align:left;transition:.15s}
.gate-opts button:hover{border-color:var(--accent);background:var(--panel2)}
.gate-opts b{display:block;font-size:15px;margin-bottom:2px}
.gate-opts span{color:var(--ink3);font-size:12px}

/* ---------- 顶栏 ---------- */
header{position:sticky;top:0;z-index:40;background:rgba(15,17,21,.94);backdrop-filter:blur(8px);border-bottom:1px solid var(--line)}
.bar{display:flex;align-items:center;gap:14px;padding:10px 16px;flex-wrap:wrap}
.brand{font-weight:600;font-size:14px;white-space:nowrap}
.brand small{display:block;color:var(--ink3);font-weight:400;font-size:11px}
nav{display:flex;gap:2px;flex:1;overflow-x:auto;scrollbar-width:none}
nav::-webkit-scrollbar{display:none}
nav button{background:none;border:0;padding:7px 11px;border-radius:7px;color:var(--ink2);cursor:pointer;white-space:nowrap;font-size:13px}
nav button:hover{background:var(--panel)}
nav button.on{background:var(--panel2);color:var(--ink)}
.tools{display:flex;gap:6px;align-items:center}
.icobtn{background:var(--panel);border:1px solid var(--line);border-radius:7px;padding:6px 10px;cursor:pointer;font-size:12px;color:var(--ink2);white-space:nowrap}
.icobtn:hover{border-color:var(--accent)}
.icobtn.lock-open{color:var(--lock);border-color:var(--lock)}

/* ---------- 布局 ---------- */
main{padding:16px;max-width:1500px;margin:0 auto}
.view{display:none}
.view.on{display:block}
h2.vh{font-size:16px;margin:0 0 4px;font-weight:600}
.vsub{color:var(--ink3);font-size:12px;margin-bottom:14px}
.toolrow{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin-bottom:14px}
.seg{display:inline-flex;background:var(--panel);border:1px solid var(--line);border-radius:8px;overflow:hidden}
.seg button{background:none;border:0;padding:6px 12px;color:var(--ink2);cursor:pointer;font-size:12px}
.seg button.on{background:var(--accent2);color:#fff}
.stat{display:flex;gap:18px;flex-wrap:wrap;margin-bottom:16px}
.stat div{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:10px 14px;min-width:92px}
.stat b{display:block;font-size:19px;font-variant-numeric:tabular-nums}
.stat span{color:var(--ink3);font-size:11px}

/* ---------- 日历 ---------- */
.cal{display:grid;grid-template-columns:repeat(auto-fill,minmax(176px,1fr));gap:10px}
.day{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:10px;cursor:pointer;transition:.12s;position:relative}
.day:hover{border-color:var(--accent)}
.day .dn{font-weight:600;font-size:13px}
.day .dt{color:var(--ink3);font-size:11px;font-variant-numeric:tabular-nums;margin-bottom:7px}
.day .blk{font-size:10px;color:var(--accent);text-transform:uppercase;letter-spacing:.04em;margin-bottom:5px;line-height:1.3}
.day ul{list-style:none;margin:0;padding:0;display:grid;gap:3px}
.day li{font-size:11px;color:var(--ink2);display:flex;gap:6px}
.day li i{font-style:normal;color:var(--ink);font-variant-numeric:tabular-nums;min-width:20px}
.day .pg{position:absolute;top:9px;right:10px;font-size:10px;color:var(--ink3);font-variant-numeric:tabular-nums}
.day.brk{border-style:dashed;border-color:#6b4f1d}
.day.brk .dn{color:var(--lock)}
.day.prep{opacity:.85}
.day.empty .dn{color:var(--ink3)}

/* ---------- Movie Magic 彩条 ---------- */
.board{display:grid;gap:2px}
.mmstrip{display:grid;grid-template-columns:42px 34px 60px 1fr 150px 54px;gap:0;align-items:stretch;
  background:var(--strip-id);color:#111;border:1px solid rgba(0,0,0,.25);font-size:12px;min-height:30px}
.mmstrip>div{padding:5px 7px;border-right:1px solid rgba(0,0,0,.14);display:flex;align-items:center;overflow:hidden}
.mmstrip>div:last-child{border-right:0}
.mmstrip .sc{font-weight:700;font-variant-numeric:tabular-nums;justify-content:center}
.mmstrip .syn{display:block;line-height:1.35;padding-top:6px;white-space:nowrap;text-overflow:ellipsis}
.mmstrip .cast{font-variant-numeric:tabular-nums;letter-spacing:.02em;font-size:11px}
.mmstrip .pg{justify-content:flex-end;font-variant-numeric:tabular-nums;font-weight:600}
.mmstrip.ed{background:var(--strip-ed)}
.mmstrip.in{background:var(--strip-in)}
.mmstrip.en{background:var(--strip-en)}
.mmstrip.tw{background:var(--strip-tw)}
.mmstrip.itw{background:var(--strip-itw)}
.daybar{background:#000;color:#fff;padding:7px 10px;font-size:12px;font-weight:600;display:flex;justify-content:space-between;gap:10px;margin-top:6px}
.daybar.brk{background:#6b4f1d}
.daybar.prep{background:#2c3550}
.daybar span{font-weight:400;color:#cbd2de;font-variant-numeric:tabular-nums}
.blockbar{background:var(--panel2);color:var(--accent);padding:6px 10px;font-size:11px;letter-spacing:.06em;text-transform:uppercase;border-left:3px solid var(--accent)}
.noterow{background:var(--panel);color:var(--ink3);padding:6px 10px;font-size:11px;font-style:italic}

/* ---------- 中式宽表 ---------- */
.cnwrap{overflow:auto;border:1px solid var(--line);border-radius:var(--radius);background:var(--panel)}
table.cn{border-collapse:collapse;width:100%;font-size:12px;white-space:nowrap}
table.cn th,table.cn td{border:1px solid var(--line);padding:5px 7px;text-align:left;vertical-align:top}
table.cn thead th{background:var(--panel2);position:sticky;top:0;z-index:2;font-weight:600;font-size:11px;color:var(--ink2)}
table.cn td.syn{white-space:normal;min-width:320px;max-width:460px;line-height:1.4}
table.cn td.sc{font-weight:700;text-align:center;font-variant-numeric:tabular-nums;position:sticky;left:0;background:var(--panel);z-index:1}
table.cn tr.dbrk td{background:#000;color:#fff;font-weight:600;text-align:center;letter-spacing:.08em}
table.cn tr.blk td{background:var(--panel2);color:var(--accent);font-size:11px;letter-spacing:.06em}
table.cn td.cno{text-align:center;font-variant-numeric:tabular-nums;width:22px;padding:5px 2px}
table.cn td.has{background:rgba(79,163,255,.18);font-weight:600}
table.cn tbody tr:hover td{background:rgba(255,255,255,.03)}
table.cn tbody tr:hover td.sc{background:var(--panel2)}

/* ---------- 通用表 ---------- */
table.grid{border-collapse:collapse;width:100%;font-size:12.5px;background:var(--panel);border-radius:var(--radius);overflow:hidden}
table.grid th,table.grid td{border-bottom:1px solid var(--line);padding:7px 9px;text-align:left;vertical-align:top}
table.grid th{background:var(--panel2);font-size:11px;color:var(--ink2);font-weight:600;position:sticky;top:52px}
table.grid td.n{font-variant-numeric:tabular-nums;text-align:center;font-weight:600}
table.grid tr:hover td{background:rgba(255,255,255,.025)}

/* ---------- 场次拆解卡 ---------- */
.bd{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:14px;margin-bottom:10px}
.bd h3{margin:0 0 3px;font-size:14px}
.bd .meta{color:var(--ink3);font-size:11.5px;margin-bottom:10px;display:flex;gap:12px;flex-wrap:wrap}
.bd .syn{font-size:12.5px;color:var(--ink2);line-height:1.5;margin-bottom:12px}
.bd dl{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:9px 16px;margin:0}
.bd dt{font-size:10px;color:var(--ink3);text-transform:uppercase;letter-spacing:.05em;margin-bottom:2px}
.bd dd{margin:0;font-size:12px;min-height:16px;border-bottom:1px dotted var(--line);padding-bottom:3px}
.bd dd:empty::after{content:"—";color:var(--ink3)}
.bd dd[contenteditable=true]{outline:0;cursor:text}
.bd dd[contenteditable=true]:focus{border-bottom-color:var(--accent);background:rgba(79,163,255,.07)}

/* ---------- 通告单 ---------- */
.cs{background:#fff;color:#111;max-width:860px;margin:0 auto;padding:16px 18px;border-radius:6px;font-size:11px;line-height:1.35}
.cs h1{font-size:17px;margin:0 0 1px;letter-spacing:.01em}
.cs .csub{font-size:10.5px;color:#444;margin-bottom:8px}
.cs table{border-collapse:collapse;width:100%;margin-bottom:7px}
.cs th,.cs td{border:1px solid #999;padding:2.5px 5px;text-align:left;vertical-align:top}
.cs th{background:#eceff3;font-size:9.5px;text-transform:uppercase;letter-spacing:.04em;font-weight:700}
.cs .band{background:#111;color:#fff;padding:3px 6px;font-size:10px;font-weight:700;letter-spacing:.06em;margin:7px 0 4px}
.cs .two{display:grid;grid-template-columns:1fr 1fr;gap:7px}
.cs .three{display:grid;grid-template-columns:repeat(3,1fr);gap:7px}
.cs .kv{font-size:10px}
.cs .kv b{display:inline-block;min-width:62px;color:#444;font-weight:600}
.cs .big{font-size:13px;font-weight:700}
.cs .warnbox{border:1.5px solid #c0392b;padding:4px 6px;font-size:10px;margin-bottom:7px}

/* ---------- 导入导出 ---------- */
.drop{border:1.5px dashed var(--line);border-radius:var(--radius);padding:26px;text-align:center;color:var(--ink3);cursor:pointer;transition:.15s;background:var(--panel)}
.drop:hover,.drop.over{border-color:var(--accent);color:var(--ink2);background:var(--panel2)}
.tpl{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:9px;margin-top:12px}
.tpl a{display:block;background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:11px 13px;text-decoration:none;color:var(--ink)}
.tpl a:hover{border-color:var(--accent)}
.tpl b{display:block;font-size:12.5px;margin-bottom:2px}
.tpl span{color:var(--ink3);font-size:11px}

/* ---------- 弹层 ---------- */
.modal{position:fixed;inset:0;background:rgba(0,0,0,.6);display:none;align-items:center;justify-content:center;z-index:80;padding:18px}
.modal.on{display:flex}
.mbox{background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:20px;max-width:420px;width:100%}
.mbox h3{margin:0 0 10px;font-size:15px}
.mbox input{width:100%;padding:9px 11px;background:var(--bg);border:1px solid var(--line);border-radius:7px;margin-bottom:11px}
.mbox .row{display:flex;gap:8px;justify-content:flex-end}
.btn{background:var(--accent2);border:0;color:#fff;padding:8px 15px;border-radius:7px;cursor:pointer;font-size:13px}
.btn.ghost{background:none;border:1px solid var(--line);color:var(--ink2)}
.toast{position:fixed;bottom:18px;left:50%;transform:translateX(-50%);background:var(--panel2);border:1px solid var(--line);
  padding:9px 16px;border-radius:9px;font-size:13px;z-index:90;opacity:0;pointer-events:none;transition:.22s}
.toast.on{opacity:1}

.ro{opacity:.55;pointer-events:none}
.en-only,.cn-only{display:none}
body.lang-cn .cn-only,body.lang-en .en-only,body.lang-bi .cn-only,body.lang-bi .en-only{display:inline}
body.lang-cn .en-only,body.lang-en .cn-only{display:none}
.bi-sep{color:var(--ink3);margin:0 4px}
body.lang-cn .bi-sep,body.lang-en .bi-sep{display:none}

/* ---------- 手机 ---------- */
@media(max-width:820px){
  main{padding:12px}
  .bar{padding:9px 12px;gap:9px}
  .brand{font-size:13px}
  .cal{grid-template-columns:1fr 1fr;gap:8px}
  .mmstrip{grid-template-columns:38px 30px 1fr 46px;grid-auto-rows:min-content}
  .mmstrip .loc{display:none}
  .mmstrip .cast{grid-column:1/-1;border-top:1px solid rgba(0,0,0,.14);border-right:0;font-size:10.5px}
  .mmstrip .syn{white-space:normal}
  .bd dl{grid-template-columns:1fr 1fr}
  .cs{padding:12px;font-size:10.5px}
  .cs .two,.cs .three{grid-template-columns:1fr}
}
@media(max-width:420px){
  .cal{grid-template-columns:1fr}
  .bd dl{grid-template-columns:1fr}
}

/* ---------- 打印：通告单 1–2 页 ---------- */
@media print{
  body{background:#fff;color:#000}
  header,.toolrow,.stat,.vsub,#gate,.modal,.toast{display:none!important}
  main{padding:0;max-width:none}
  .cs{max-width:none;padding:0;font-size:9.5pt;border-radius:0}
  .cs th,.cs td{padding:1.5px 4px}
  .cs .band{-webkit-print-color-adjust:exact;print-color-adjust:exact}
  .cs th{-webkit-print-color-adjust:exact;print-color-adjust:exact}
  .mmstrip{-webkit-print-color-adjust:exact;print-color-adjust:exact}
  .pgbreak{page-break-before:always}
  @page{size:A4;margin:10mm}
}

/* ---------- 使用说明 ---------- */
.guide{max-width:820px}
.guide h3{font-size:14px;margin:26px 0 8px;padding-bottom:6px;border-bottom:1px solid var(--line)}
.guide h3:first-child{margin-top:0}
.guide ol,.guide ul{padding-left:20px;margin:0 0 10px}
.guide li{margin-bottom:6px;font-size:13px;color:var(--ink2);line-height:1.6}
.guide p{font-size:13px;color:var(--ink2);line-height:1.6;margin:0 0 9px}
.guide .tip{font-size:12px;color:var(--ink3);background:var(--panel);border-left:2px solid var(--line);padding:8px 11px;border-radius:0 7px 7px 0}
.guide code{background:var(--panel2);padding:1px 5px;border-radius:4px;font:12px var(--mono);color:var(--accent)}
.guide table.grid{margin-top:4px}
.guide table.grid td:first-child{white-space:nowrap;width:92px}
.guide .kbd{font-family:var(--mono)}
body.lang-cn .guide .en-only,body.lang-en .guide .cn-only{display:none!important}
body.lang-bi .guide .en-only{display:block;opacity:.72;border-top:1px dashed var(--line);margin-top:8px;padding-top:8px}
body.lang-bi .guide .cn-only,body.lang-cn .guide .cn-only,body.lang-en .guide .en-only{display:block}
body.lang-bi .guide h3 .en-only,body.lang-bi .guide h3 .cn-only{display:inline;border:0;margin:0;padding:0;opacity:1}

/* ---------- 闸门第二步 / 项目设置 ---------- */
.gatelbl{display:block;font-size:11px;color:var(--ink3);margin-bottom:4px}
.gateinput{width:100%;padding:10px 11px;background:var(--panel);border:1px solid var(--line);border-radius:8px}
.gatehint{font-size:11px;color:var(--ink3);margin-top:7px;line-height:1.5}
.setgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:10px 14px}
.setgrid label{display:block;font-size:11px;color:var(--ink3);margin-bottom:4px}
.setgrid input,.setgrid select{width:100%;padding:7px 9px;background:var(--panel);border:1px solid var(--line);border-radius:7px}
.bd h3 .hd-en{display:block;font-size:11.5px;color:var(--ink3);font-weight:400;margin-top:2px;letter-spacing:.01em}

/* ---------- 地点 / 地图 ---------- */
.keybox{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:16px;max-width:760px}
.keybox h3{margin:0 0 10px;font-size:14px}
.keybox ol{padding-left:20px;margin:0;font-size:12.5px;color:var(--ink2);line-height:1.7}
.keybox a{color:var(--accent)}
.maprow{display:grid;grid-template-columns:1fr 330px;gap:12px;align-items:start}
#mapBox{height:460px;border-radius:var(--radius);border:1px solid var(--line);overflow:hidden;background:var(--panel)}
.locinfo{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:14px;min-height:460px;font-size:12.5px}
.locinfo h4{margin:0 0 3px;font-size:13.5px}
.locinfo .addr{color:var(--ink3);font-size:11.5px;margin-bottom:12px;line-height:1.5}
.locinfo .kv{display:flex;justify-content:space-between;gap:10px;padding:6px 0;border-bottom:1px solid var(--line)}
.locinfo .kv span{color:var(--ink3);font-size:11.5px}
.locinfo .kv b{font-variant-numeric:tabular-nums}
.locinfo .sec{margin-top:14px;font-size:10px;color:var(--ink3);text-transform:uppercase;letter-spacing:.06em}
.locinfo .poi{padding:7px 0;border-bottom:1px solid var(--line)}
.locinfo .poi b{display:block;font-size:12px}
.locinfo .poi span{color:var(--ink3);font-size:11px;line-height:1.45}
.locinfo .empty{color:var(--ink3);font-size:12px;padding-top:50px;text-align:center;line-height:1.7}
.sugbox{display:none;background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);margin-bottom:10px;max-height:230px;overflow:auto}
.sugbox.on{display:block}
.sugbox div{padding:8px 11px;cursor:pointer;border-bottom:1px solid var(--line);font-size:12.5px}
.sugbox div:hover{background:var(--panel2)}
.sugbox div span{display:block;color:var(--ink3);font-size:11px}
@media(max-width:900px){.maprow{grid-template-columns:1fr}#mapBox{height:320px}.locinfo{min-height:0}}
.chk{display:inline-flex;align-items:center;gap:6px;background:var(--panel);border:1px solid var(--line);border-radius:7px;padding:6px 11px;font-size:12px;color:var(--ink2);cursor:pointer}
.chk input{margin:0}
.legend{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:9px 12px;margin-bottom:10px;font-size:11.5px;line-height:1.9;color:var(--ink2)}
.legend b{color:var(--accent);font-variant-numeric:tabular-nums;margin-right:3px}
.legend i{font-style:normal;color:var(--ink3);margin:0 7px}
.cs .notes{font-size:9.5px;line-height:1.45;columns:2;column-gap:14px}
.cs .notes div{break-inside:avoid;margin-bottom:2px}
.cs .safety{background:#111;color:#fff;text-align:center;padding:4px;font-size:10px;font-weight:700;letter-spacing:.04em;margin:7px 0}
.mmstrip.nocast{grid-template-columns:42px 34px 60px 1fr 54px}
@media(max-width:820px){.mmstrip.nocast{grid-template-columns:38px 30px 1fr 46px}}

/* ---------- 通告单表头 ---------- */
.cshead{display:grid;grid-template-columns:150px 1fr 196px;gap:0;border:1px solid #999;margin-bottom:0}
.cshead table{margin:0;border:0}
.cshead .hcrew th{width:62px;font-size:9px;text-transform:none;background:#fff;color:#444;text-align:right;border-left:0}
.cshead .hcrew td{font-size:10px}
.cshead .hcrew tr:last-child td,.cshead .hcrew tr:last-child th{border-bottom:0}
.hmid{padding:8px 10px;text-align:center;border-left:1px solid #999;border-right:1px solid #999;display:flex;flex-direction:column;justify-content:center}
.hmid h1{font-size:16px;margin:0 0 3px;letter-spacing:.02em}
.hmid .slogan{color:#c0392b;font-size:13px;font-weight:700;margin-bottom:6px}
.tiles{display:grid;grid-template-columns:repeat(3,1fr);gap:3px;margin-top:4px}
.tiles div{background:#ffe680;border:1px solid #c9a227;padding:4px 2px;font-size:10px;font-weight:700;-webkit-print-color-adjust:exact;print-color-adjust:exact}
.cshead .hright th{width:74px;font-size:9px;text-transform:none;background:#fff;color:#444;text-align:left}
.cshead .hright td{font-size:10px}
.cshead .hright tr.hl td{background:#dff0d8;font-weight:700;-webkit-print-color-adjust:exact;print-color-adjust:exact}
.cshead .hright tr.hl2 td{background:#dff0d8;color:#c0392b;font-weight:700;-webkit-print-color-adjust:exact;print-color-adjust:exact}
.cshead .hright tr:last-child td,.cshead .hright tr:last-child th{border-bottom:0}
.cshead .hright th{border-right:0}
.csbar{background:#dce6f1;border:1px solid #999;border-top:0;text-align:center;padding:3px;font-size:10px;font-weight:700;-webkit-print-color-adjust:exact;print-color-adjust:exact}
.cs table.loc6{margin-bottom:0;border-top:0}
.cs table.loc6 th{font-size:9px;text-align:center}
.cs table.loc6 td{font-size:9.5px;text-align:center;line-height:1.35}
.emerg{border:1px solid #999;border-top:0;padding:3px 6px;font-size:9.5px;background:#fdf3f2;-webkit-print-color-adjust:exact;print-color-adjust:exact;margin-bottom:7px}
@media(max-width:820px){.cshead{grid-template-columns:1fr}.hmid{border-left:0;border-right:0;border-top:1px solid #999;border-bottom:1px solid #999}}
.cs .four{display:grid;grid-template-columns:repeat(4,1fr);gap:7px}
.cs .four tr.hl td{background:#dff0d8;font-weight:700;-webkit-print-color-adjust:exact;print-color-adjust:exact}
.cs .four tr.hl2 td{background:#dff0d8;color:#c0392b;font-weight:700;-webkit-print-color-adjust:exact;print-color-adjust:exact}
.cs table.dept th{width:92px;text-align:left;font-size:9px}
.cs table.dept td{font-size:9.5px;min-height:13px}
@media(max-width:820px){.cs .four{grid-template-columns:1fr 1fr}}

/* ---------- 每日拍摄计划 ---------- */
table.plan{border-collapse:collapse;width:100%;font-size:12px;background:var(--panel);border-radius:var(--radius);overflow:hidden}
table.plan th,table.plan td{border-bottom:1px solid var(--line);padding:6px 8px;text-align:left;vertical-align:top}
table.plan th{background:var(--panel2);font-size:10.5px;color:var(--ink2);white-space:nowrap}
table.plan td.tm{font-variant-numeric:tabular-nums;white-space:nowrap;font-weight:600;width:112px}
table.plan td.sh{font-weight:700;width:58px;font-variant-numeric:tabular-nums}
table.plan tr.full td{background:var(--panel2);font-weight:600;letter-spacing:.02em}
table.plan tr.meal td{background:#3a2f16;color:#f0d78a}
table.plan tr.move td{background:#16303a;color:#9ad7ef}
table.plan tr.head td{background:#1b2b1b;color:#9fe0a8}
table.plan tr.end td{background:#000;color:#fff;text-align:center;letter-spacing:.1em}
table.plan tr.cont td.tm{color:var(--ink3);font-weight:400}
.planwarn{background:#3a1b16;border:1px solid var(--warn);color:#ffb4a2;border-radius:var(--radius);padding:9px 12px;font-size:12px;margin-bottom:10px}
@media print{table.plan tr.full td,table.plan tr.meal td,table.plan tr.move td,table.plan tr.head td,table.plan tr.end td{-webkit-print-color-adjust:exact;print-color-adjust:exact}}
table.grid td.daycol{padding:7px 6px}
table.grid td.daycol>div{width:84px;font-weight:600;font-size:11px;line-height:1.3;word-break:break-word}
table.grid td.daycol .pg{display:block;color:var(--ink3);font-weight:400;font-size:10px;margin-top:3px}
.biedit{margin-bottom:12px}
.birow{display:flex;gap:9px;align-items:flex-start;margin-bottom:5px}
.birow .lbl{flex:0 0 58px;font-size:10px;color:var(--ink3);text-transform:uppercase;letter-spacing:.04em;padding-top:3px}
.birow .val{flex:1;font-size:12.5px;line-height:1.5;color:var(--ink2);border-bottom:1px dotted var(--line);padding-bottom:3px;min-height:17px}
.birow .val[contenteditable=true]{cursor:text}
.birow .val[contenteditable=true]:hover{background:rgba(255,255,255,.03)}
.birow .val[contenteditable=true]:focus{outline:0;border-bottom-color:var(--accent);background:rgba(79,163,255,.07);color:var(--ink)}
.birow .val:empty::after{content:"—";color:var(--ink3)}
/* 行内编辑：解锁后任何表里的字段都能点着改 */
.iedit{display:inline-block;min-width:16px;border-radius:3px;padding:0 2px;margin:0 -2px}
.iedit[contenteditable=true]{cursor:text;box-shadow:inset 0 -1px 0 var(--line)}
.iedit[contenteditable=true]:hover{background:rgba(255,255,255,.05)}
.iedit[contenteditable=true]:focus{outline:0;background:rgba(79,163,255,.12);box-shadow:inset 0 -1px 0 var(--accent);color:var(--ink)}
.iedit:empty::after{content:"—";color:var(--ink3)}
.en2{opacity:.62;font-size:.93em}
table.cn .iedit[contenteditable=true]{box-shadow:none}
table.cn .iedit[contenteditable=true]:hover{background:rgba(255,255,255,.07)}
.optcols{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;align-items:start}
.optcols table.grid th{position:static;width:104px;font-size:10.5px;white-space:nowrap}
.optcols table.grid td{font-size:12px}
@media(max-width:900px){.optcols{grid-template-columns:1fr}}
@media print{#csOpts,#csOpts+*{display:none!important}}
.envbar{background:#5b3a00;color:#ffd98a;padding:7px 16px;font-size:12.5px;text-align:center;border-bottom:1px solid #7a5200}
.envbar b{color:#fff}
@media print{.envbar{display:none}}
table.maptbl{border-collapse:collapse;width:100%;font-size:12.5px}
table.maptbl th{background:var(--panel2);padding:7px 10px;text-align:left;font-size:11px;color:var(--ink2);position:sticky;top:0}
table.maptbl td{padding:7px 10px;border-bottom:1px solid var(--line);vertical-align:middle}
table.maptbl td:first-child{width:56%}
table.maptbl .smp{color:var(--ink3);font-size:11px}
table.maptbl select{width:100%;padding:5px 7px;background:var(--bg);border:1px solid var(--line);border-radius:6px}
