/* 樣式：米白底、橘色重點、圓角卡片、膠囊按鈕（淺色／深色）。
   報表（#repBody／列印）另外鎖回白紙黑框，見檔案最後。 */
:root{
  --bg:#f3f0ea; --card:#fffdf9; --paper:var(--card); --ink:#2b2724; --mute:#8b847b; --line:#e5dfd5; --rule:var(--line); --rule-soft:var(--line); --shade:#efebe4;
  --acc:#e07b1f; --acc-ink:#fff; --acc-soft:#fbe8d4; --red:#d4473f; --red-soft:#fbe3e1; --green:#2e9468; --green-soft:#d6efe2; --amber:#c58a14; --amber-soft:#f6e9cc; --teal:#2a9d9f; --blue:#3a7bd5;
  --r:16px; --r-sm:11px; --shadow:0 1px 2px rgba(60,40,20,.05),0 4px 14px rgba(60,40,20,.05);
  --sans:"Noto Sans TC","Microsoft JhengHei",system-ui,sans-serif; --serif:var(--sans);
}
:root[data-theme="dark"]{
  --bg:#171513; --card:#221f1c; --ink:#efe9e1; --mute:#a59d92; --line:#38332d; --shade:#2b2723;
  --acc:#f08b30; --acc-soft:#4a3320; --red:#ef6b62; --red-soft:#4a2624; --green:#4cc08a; --green-soft:#1f3a2c; --amber:#e3ac3d; --amber-soft:#43361a;
  --shadow:0 1px 2px rgba(0,0,0,.3);
}
*{box-sizing:border-box;margin:0;padding:0}
html,body{background:#dcdcd8;color:var(--ink);font-family:var(--sans);font-size:15px;line-height:1.5;-webkit-tap-highlight-color:transparent}
#app{max-width:520px;margin:0 auto;min-height:100vh;background:var(--paper);position:relative;padding-bottom:calc(68px + env(safe-area-inset-bottom));box-shadow:0 0 0 1px var(--rule-soft)}
@media (min-width:900px){#app{max-width:980px}}
button,input,select,textarea{font:inherit;color:inherit}
button{cursor:pointer;background:none;border:0}
img{display:block;max-width:100%}
[hidden]{display:none!important}

/* 表頭 */
#hdr{position:sticky;top:0;z-index:20;background:var(--paper);border-bottom:2px solid var(--rule);padding:10px 14px 8px}
.hrow{display:flex;align-items:center;justify-content:space-between;gap:8px}
.siteSel{flex:1;min-width:0;border:0;background:none;font-family:var(--serif);font-weight:700;font-size:18px;padding:4px 0;appearance:none;-webkit-appearance:none;background-image:linear-gradient(45deg,transparent 50%,var(--ink) 50%),linear-gradient(135deg,var(--ink) 50%,transparent 50%);background-position:calc(100% - 12px) 55%,calc(100% - 7px) 55%;background-size:5px 5px;background-repeat:no-repeat;padding-right:24px}
.badge{font-size:12px;border:1px solid var(--ink);padding:1px 8px;white-space:nowrap}
.badge.co{background:var(--ink);color:#fff}

/* 版面 */
main{padding:14px}
h2.t{font-family:var(--serif);font-size:17px;font-weight:700;display:flex;justify-content:space-between;align-items:baseline;margin:16px 0 8px}
h2.t:first-child{margin-top:0}
h2.t small{font-family:var(--sans);font-weight:400;font-size:12px;color:var(--mute)}
.mute{color:var(--mute);font-size:13px}
.empty{border:1px dashed var(--rule-soft);padding:22px 14px;text-align:center;color:var(--mute);font-size:14px;margin:8px 0}
.empty b{display:block;color:var(--ink);font-weight:500;margin-bottom:4px}

/* 表格 */
table.f{width:100%;border-collapse:collapse;font-size:14px}
table.f th,table.f td{border:1px solid var(--rule);padding:8px 9px;text-align:left;vertical-align:top}
table.f th{width:62px;background:var(--shade);font-weight:500;font-size:13px;white-space:nowrap}
table.f td input,table.f td textarea,table.f td select{width:100%;border:0;border-bottom:1px dashed var(--rule-soft);background:none;padding:2px 0;font-size:15px;outline:none;border-radius:0}
table.f td textarea{min-height:48px;resize:vertical}
table.f td select{appearance:auto}
table.f.cmp th,table.f.cmp td{padding:5px 7px;font-size:13px}

/* 選項 chips */
.chips{display:flex;flex-wrap:wrap;gap:6px}
.chip{border:1px solid #8a8a86;border-radius:3px;padding:3px 10px;font-size:14px;background:#fff;line-height:1.4}
.chip.on{background:var(--ink);color:#fff;border-color:var(--ink)}
.chip.add{border-style:dashed;color:var(--mute)}
.chip.x{border-color:var(--red);color:var(--red)}

/* 按鈕 */
.btn{display:block;width:100%;border:2px solid var(--ink);background:var(--ink);color:#fff;padding:12px;font-weight:700;font-size:16px;text-align:center;border-radius:0}
.btn.o{background:#fff;color:var(--ink)}
.btn.r{background:#fff;color:var(--red);border-color:var(--red)}
.btn.g{background:var(--green);border-color:var(--green)}
.btn.sm{padding:7px 10px;font-size:14px;width:auto;display:inline-block;border-width:1px;font-weight:500}
.btn:disabled{opacity:.4}
.btnrow{display:flex;gap:8px;margin-top:10px}
.btnrow .btn{flex:1}
.shutter{display:block;width:100%;border:3px solid var(--red);color:var(--red);background:#fff;padding:18px;font-family:var(--serif);font-weight:700;font-size:22px;letter-spacing:.35em;text-indent:.35em;margin-top:14px}
.shutter:active{background:var(--red);color:#fff}

/* 拍照頁 */
.capture{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-bottom:12px}
.capture button{border:1px solid var(--rule);padding:22px 8px;font-weight:700;font-size:16px;background:#fff}
.capture button i{display:block;font-style:normal;font-size:30px;margin-bottom:2px}
.strip{display:flex;gap:6px;overflow-x:auto;margin:0 0 12px;padding-bottom:4px}
.strip .th{flex:none;width:84px;height:84px;position:relative;border:1px solid var(--rule)}
.strip .th img{width:100%;height:100%;object-fit:cover}
.strip .th b{position:absolute;right:-1px;top:-1px;background:var(--red);color:#fff;width:22px;height:22px;font-size:14px;display:flex;align-items:center;justify-content:center}
.strip .th.add{display:flex;align-items:center;justify-content:center;border-style:dashed;color:var(--mute);font-size:26px}

/* 照片庫 */
.filters{display:flex;gap:6px;overflow-x:auto;padding-bottom:6px;margin-bottom:6px;border-bottom:1px solid var(--rule-soft)}
.filters .chip{flex:none}
.filters select.chip{appearance:none;-webkit-appearance:none;padding-right:22px;background-image:linear-gradient(45deg,transparent 50%,#555 50%),linear-gradient(135deg,#555 50%,transparent 50%);background-position:calc(100% - 10px) 55%,calc(100% - 6px) 55%;background-size:4px 4px;background-repeat:no-repeat}
.filters select.chip.on{background-image:linear-gradient(45deg,transparent 50%,#fff 50%),linear-gradient(135deg,#fff 50%,transparent 50%)}
.search{width:100%;border:1px solid var(--rule);padding:8px 10px;margin-bottom:8px;font-size:15px;outline:none;border-radius:0}
.grp{margin-top:14px}
.grp .gh{font-family:var(--serif);font-weight:700;font-size:15px;display:flex;justify-content:space-between;align-items:baseline;margin-bottom:6px}
.grp .gh small{font-family:var(--sans);font-weight:400;color:var(--mute);font-size:12px}
.grid{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;background:var(--rule);border:1px solid var(--rule)}
@media (min-width:600px){.grid{grid-template-columns:repeat(4,1fr)}}
@media (min-width:900px){.grid{grid-template-columns:repeat(6,1fr)}}
.tile{aspect-ratio:1;position:relative;background:#eee;overflow:hidden}
.tile img{width:100%;height:100%;object-fit:cover}
.tile .tm{position:absolute;left:0;bottom:0;right:0;font-size:10px;color:#fff;background:linear-gradient(transparent,rgba(0,0,0,.65));padding:10px 5px 3px}
.tile .fl{position:absolute;top:0;left:0;background:var(--red);color:#fff;font-size:10px;padding:1px 5px}
.tile.sel:after{content:"✓";position:absolute;inset:0;background:rgba(192,57,43,.45);color:#fff;font-size:28px;display:flex;align-items:center;justify-content:center}

/* 缺失 */
.dcard{border:1px solid var(--rule);margin-bottom:10px;display:grid;grid-template-columns:86px 1fr;cursor:pointer}
.dcard .dimg{background:#eee;position:relative}
.dcard .dimg img{width:100%;height:100%;object-fit:cover;aspect-ratio:1}
.dcard .dbody{padding:8px 10px;min-width:0}
.dcard .dt{font-weight:700;font-size:15px;line-height:1.35;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}
.dcard .dm{font-size:12px;color:var(--mute);margin-top:4px}
.st{display:inline-block;font-size:12px;border:1px solid currentColor;padding:0 7px;margin-right:6px;vertical-align:1px;white-space:nowrap}
.st.open{color:var(--red)}.st.replied{color:var(--amber)}.st.closed{color:var(--green)}
.late{color:var(--red);font-weight:700}
.stamp{display:inline-block;border:2px solid var(--red);color:var(--red);border-radius:4px;padding:1px 9px;font-family:var(--serif);font-weight:700;transform:rotate(-6deg);font-size:15px;letter-spacing:.12em}
.stamp.closed{border-color:var(--green);color:var(--green)}
.stamp.replied{border-color:var(--amber);color:var(--amber)}
.ba{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:12px 0}
.ba>div{border:1px solid var(--rule);min-height:120px;position:relative}
.ba>div span{position:absolute;top:0;left:0;background:var(--ink);color:#fff;font-size:11px;padding:1px 7px;z-index:1}
.ba .thumbs{display:grid;grid-template-columns:1fr 1fr;gap:1px;background:var(--rule)}
.ba .thumbs img{aspect-ratio:1;object-fit:cover;width:100%}
.ba .none{height:120px;display:flex;align-items:center;justify-content:center;color:var(--mute);font-size:13px}
.tl{margin:10px 0;font-size:13px}
.tl div{padding:6px 0;border-bottom:1px dotted #aaa;display:grid;grid-template-columns:64px 1fr;gap:8px}
.tl b{font-weight:500;color:var(--mute);font-size:12px}
.tl .tlimgs{display:flex;gap:4px;margin-top:4px}
.tl .tlimgs img{width:52px;height:52px;object-fit:cover;border:1px solid var(--rule)}

/* 列表 */
.list{border-top:1px solid var(--rule)}
.list .it{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:11px 2px;border-bottom:1px solid var(--rule-soft);cursor:pointer}
.list .it .l{min-width:0}
.list .it .l b{display:block;font-weight:500}
.list .it .l small{color:var(--mute);font-size:12px}
.list .it .r{color:var(--mute);font-size:13px;white-space:nowrap}
.list .it.plain{cursor:default}

/* 導覽列 */
nav{position:fixed;bottom:0;left:50%;transform:translateX(-50%);width:100%;max-width:520px;background:#fff;border-top:1px solid var(--rule);display:flex;z-index:20;padding-bottom:env(safe-area-inset-bottom)}
@media (min-width:900px){nav{max-width:980px}}
nav button{flex:1;padding:8px 0 9px;font-size:11px;color:var(--mute);display:flex;flex-direction:column;align-items:center;gap:1px;position:relative}
nav button i{font-style:normal;font-size:20px;line-height:1.2}
nav button.on{color:var(--ink);font-weight:700}
nav button.on:after{content:"";position:absolute;top:-1px;left:20%;right:20%;height:3px;background:var(--red)}
nav button .n{position:absolute;top:4px;right:calc(50% - 22px);background:var(--red);color:#fff;font-size:10px;min-width:16px;height:16px;border-radius:8px;display:flex;align-items:center;justify-content:center;padding:0 4px;font-weight:700}

/* 彈窗 */
.modal{position:fixed;inset:0;background:rgba(0,0,0,.55);z-index:50;display:flex;align-items:flex-end;justify-content:center}
.sheet{background:#fff;width:100%;max-width:520px;max-height:94vh;overflow:auto;padding:14px 14px calc(16px + env(safe-area-inset-bottom));border-top:3px solid var(--ink)}
@media (min-width:900px){.modal{align-items:center}.sheet{max-width:640px;border:2px solid var(--ink)}}
.sheet h3{font-family:var(--serif);font-size:18px;display:flex;justify-content:space-between;align-items:center;margin-bottom:10px}
.sheet h3 .cls{font-family:var(--sans);font-size:22px;padding:0 6px;color:var(--mute)}
.viewer img.full{width:100%;max-height:52vh;object-fit:contain;background:#111;margin-bottom:10px}
.dlg{position:fixed;inset:0;background:rgba(0,0,0,.5);z-index:90;display:flex;align-items:center;justify-content:center;padding:20px}
.dbox{background:#fff;border:2px solid var(--ink);width:100%;max-width:360px;padding:16px}
.dbox .dtitle{font-family:var(--serif);font-weight:700;font-size:16px;margin-bottom:8px}
.dbox .dtext{font-size:14px;white-space:pre-wrap;margin-bottom:10px;line-height:1.6}
.dbox input,.dbox select{width:100%;border:1px solid var(--rule);padding:9px 10px;font-size:16px;outline:none;border-radius:0;margin-bottom:12px;background:#fff}
.dbox .btnrow{margin-top:4px}
.toast{position:fixed;left:50%;bottom:90px;transform:translateX(-50%);background:var(--ink);color:#fff;padding:8px 16px;font-size:13px;opacity:0;transition:.25s;pointer-events:none;z-index:60;white-space:nowrap}
.toast.on{opacity:1}
.sel{display:flex;gap:8px;align-items:center;margin:8px 0}
label.lb{display:block;font-size:13px;color:var(--mute);margin:10px 0 4px}
.radio{display:flex;border:1px solid var(--rule)}
.radio button{flex:1;padding:9px;font-size:14px;border-right:1px solid var(--rule)}
.radio button:last-child{border-right:0}
.radio button.on{background:var(--ink);color:#fff}
.note{font-size:12px;color:var(--mute);margin-top:6px;line-height:1.5}
.kv{display:grid;grid-template-columns:auto 1fr;gap:4px 12px;font-size:14px;margin:8px 0}
.kv b{font-weight:500;color:var(--mute);font-size:13px}
.progress{height:4px;background:var(--shade);margin:8px 0}
.progress i{display:block;height:100%;background:var(--red)}

/* 數量核對 */
.yrow{border:1px solid var(--rule);padding:8px;margin-bottom:8px}
.yrow.bad{border-color:var(--red);box-shadow:inset 3px 0 0 var(--red)}
.ygrid{display:grid;grid-template-columns:repeat(4,1fr);gap:6px;margin-top:6px;font-size:12px}
.ygrid input{width:100%;border:1px solid var(--rule-soft);padding:5px 4px;text-align:right;font-size:14px}
.ycalc{display:flex;justify-content:space-between;gap:6px;font-size:12px;color:var(--mute);margin-top:6px;flex-wrap:wrap}
.ycalc b{color:var(--ink)}
.yrow.bad .ycalc b{color:var(--red)}

/* 進度表甘特 */
.gRow{display:grid;grid-template-columns:64px 1fr 36px;gap:6px;align-items:center;font-size:12px;padding:3px 0}
.gName{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.gTrack{position:relative;height:12px;background:var(--shade)}
.gTrack b{position:absolute;top:0;bottom:0;background:#d9d9d5}
.gTrack i{position:absolute;top:0;bottom:0;background:var(--ink)}
.gTrack i.late{background:var(--red)}.gTrack i.done{background:var(--green)}
.gToday{position:absolute;top:-2px;bottom:-2px;width:2px;background:var(--red)}
.gPct{text-align:right;font-weight:700}.gPct.late{color:var(--red)}.gPct.done{color:var(--green)}
.st.done,.st.going,.st.todo{color:var(--mute)}.st.done{color:var(--green)}.st.late{color:var(--red)}
/* 進度圖表（動畫） */
.sdash{border:1px solid var(--rule);padding:10px;margin-bottom:10px}
.sgrid{display:grid;grid-template-columns:auto 1fr;gap:8px 14px;align-items:center}
.sgrid .scurve{grid-column:1/-1}
.sgrid.big{grid-template-columns:auto 1fr}
.sring{position:relative;width:84px;height:84px}
.sgrid.big .sring{width:124px;height:124px}
.sring svg{width:100%;height:100%;transform:rotate(-90deg)}
.sring circle{fill:none;stroke-width:9}
.sring .bg{stroke:var(--shade)}
.sring .fg{stroke:var(--ink);stroke-linecap:butt;transition:stroke-dashoffset 1.4s cubic-bezier(.2,.8,.2,1)}
.sval{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;font-family:var(--serif);font-weight:700;font-size:17px;line-height:1;white-space:nowrap}
.sgrid.big .sval{font-size:28px}
.sval small{font-family:var(--sans);font-weight:400;font-size:10px;color:var(--mute);margin-top:4px}
.sstats{display:grid;grid-template-columns:repeat(4,1fr);gap:4px;font-size:11px;color:var(--mute);text-align:center}
.sstats b{display:block;font-family:var(--serif);font-size:20px;color:var(--ink);line-height:1.1}
.sstats .late b{color:var(--red)}
.sgap{grid-column:1/-1;font-size:12px;font-weight:700;color:var(--green);text-align:left;padding-top:2px}
.sgap.late{color:var(--red)}
.scurve svg{width:100%;height:auto;display:block}
.scurve .ax{stroke:var(--ink);stroke-width:1}
.scurve .grid{stroke:var(--rule-soft);stroke-width:.6;stroke-dasharray:2 3}
.scurve .lb{font-size:8px;fill:var(--mute);font-family:var(--sans)}
.scurve .plan{fill:none;stroke:#9a9a94;stroke-width:1.6;stroke-dasharray:1;stroke-dashoffset:1}
.scurve .act{fill:none;stroke:var(--ink);stroke-width:2.4;stroke-dasharray:1;stroke-dashoffset:1}
.scurve .today{stroke:var(--red);stroke-width:1;stroke-dasharray:3 2}
.scurve .lplan{fill:#9a9a94}.scurve .lact{fill:var(--ink);font-weight:700}
.sgantt{grid-column:1/-1;border-top:1px solid var(--rule-soft);padding-top:8px}
.gTrack i{transition:width .9s cubic-bezier(.2,.8,.2,1)}
@media (prefers-reduced-motion:reduce){.sring .fg,.gTrack i,.scurve path{transition:none!important}}

/* 勾選項（分享） */
label.opt{display:flex;gap:8px;align-items:flex-start;padding:9px 2px;border-bottom:1px solid var(--rule-soft);font-size:14px;cursor:pointer}
label.opt input{width:20px;height:20px;accent-color:var(--ink);flex:none;margin-top:1px}
label.opt small{font-size:12px}

/* 每日登錄進度 */
.plRow{border:1px solid var(--rule);padding:8px;margin-bottom:8px}
.plTop{display:flex;justify-content:space-between;align-items:baseline;font-size:14px}
.plTop .mute{font-size:11px}
.plCtl{display:flex;gap:4px;align-items:center;margin-top:6px}
.plCtl button{border:1px solid var(--rule);background:#fff;padding:6px 0;font-size:12px;width:38px;flex:none}
.plCtl input[type=range]{flex:1;accent-color:var(--ink);min-width:0}
.plCtl .plPct{width:48px;text-align:right;font-family:var(--serif);font-size:16px;flex:none}

/* 自主檢查表 */
.ckRow{border:1px solid var(--rule);padding:8px;margin-bottom:8px}
.ckRow.ok{border-color:var(--green)}.ckRow.ng{border-color:var(--red);box-shadow:inset 3px 0 0 var(--red)}.ckRow.na{opacity:.6}
.ckTop{display:flex;gap:6px;align-items:center}
.ckBtns{display:flex;gap:6px;margin-top:6px}
.ckBtns button{flex:1;border:1px solid var(--rule);padding:8px 4px;font-size:13px;background:#fff}
.ckBtns button.on{background:var(--ink);color:#fff;border-color:var(--ink)}
.ckBtns button[data-r=ok].on{background:var(--green);border-color:var(--green)}
.ckBtns button[data-r=ng].on{background:var(--red);border-color:var(--red)}
.ckBtns button.cam{flex:0 0 56px}

/* 圖面 */
.dwgrid{display:grid;grid-template-columns:1fr 1fr;gap:10px}
@media (min-width:900px){.dwgrid{grid-template-columns:repeat(4,1fr)}}
.dwcard{border:1px solid var(--rule);cursor:pointer}
.dwth{aspect-ratio:4/3;background:#eee;position:relative;border-bottom:1px solid var(--rule)}
.dwth img{width:100%;height:100%;object-fit:contain}
.dwn{position:absolute;right:4px;bottom:4px;background:#fff;border:1px solid var(--red);color:var(--red);font-size:11px;padding:0 5px}
.dwcap{padding:6px 8px;font-size:13px}
.dwcap b{display:block;font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.dwcap small{color:var(--mute);font-size:11px}
#dwg{position:fixed;inset:0;z-index:45;background:#2b2b2b;display:flex;flex-direction:column;max-width:100vw;overflow:hidden}
.dwBar{display:flex;align-items:center;gap:5px;padding:8px 8px;background:var(--ink);color:#fff;font-size:14px;padding-top:calc(8px + env(safe-area-inset-top));overflow:hidden}
.dwBar span{flex:1 1 0;min-width:0;text-align:center;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-family:var(--serif);font-weight:700;font-size:14px}
.dwBar button{flex:none;color:#fff;border:1px solid #fff;padding:5px 7px;font-size:12px;white-space:nowrap}
.dwBar #dwBack{border:0;font-size:15px;padding:5px 4px}
.dwBar #dwPinBtn.on{background:var(--red);border-color:var(--red)}
#dwStage{flex:1;overflow:hidden;position:relative;touch-action:none;cursor:grab}
#dwInner{position:absolute;left:0;top:0;transform-origin:0 0;background:#fff}
#dwInner img{display:block;width:100%;height:100%;user-select:none;-webkit-user-drag:none;pointer-events:none}
#dwLayers{position:absolute;inset:0}
#dwLayers .lvl{position:absolute;inset:0}
#dwLayers img{position:absolute;display:block;pointer-events:none;user-select:none}
#dwPins{position:absolute;inset:0}
.pin{position:absolute;width:30px;height:38px;transform-origin:50% 100%;cursor:pointer}
.pin b{position:absolute;left:0;top:0;width:30px;height:30px;border-radius:50%;background:var(--red);border:2px solid #fff;box-shadow:0 2px 6px rgba(0,0,0,.4);color:#fff;font-size:13px;font-weight:700;display:flex;align-items:center;justify-content:center}
.pin:after{content:"";position:absolute;left:50%;bottom:0;width:2px;height:10px;background:#fff;transform:translateX(-50%);box-shadow:0 1px 3px rgba(0,0,0,.4)}
.pin.def b{background:var(--amber)}
.pin.txt b{background:#1d3557}
#dwMeasure{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;overflow:visible}
#dwMeasure .ms{fill:none;stroke:#c0392b;stroke-width:2.5}
#dwMeasure .ms.area{fill:rgba(192,57,43,.12)}
#dwMeasure .ms.live{stroke:#1d3557;stroke-dasharray:6 4}
#dwMeasure .mv{fill:#1d3557;stroke:#fff;stroke-width:1.5}
#dwMeasure .mc{fill:#c0392b;stroke:#fff;stroke-width:2}
#dwMeasure .mc.live{fill:#1d3557}
#dwMeasure .mt{fill:#fff;font-weight:700;text-anchor:middle;font-family:var(--sans)}
#dwMeasure .ml{fill:#c0392b;font-weight:700;font-family:var(--sans);paint-order:stroke;stroke:#fff;stroke-width:3px}
.dwBar #dwMsBtn.on{background:#1d3557;border-color:#1d3557}
.msBar{position:absolute;left:0;right:0;bottom:0;background:#fff;border-top:2px solid var(--ink);padding:6px 8px calc(6px + env(safe-area-inset-bottom));font-size:13px}
.msRow{display:flex;gap:5px;align-items:center;margin-top:5px}
.msRow:first-child{margin-top:0}
.msRow button{border:1px solid var(--rule);padding:6px 8px;font-size:13px;background:#fff;white-space:nowrap}
.msRow button.on{background:#1d3557;color:#fff;border-color:#1d3557}
.msRow button.pri{background:var(--ink);color:#fff;border-color:var(--ink);font-weight:700}
.msRow button:disabled{opacity:.4}
.msRead{flex:1;font-weight:700;font-size:14px;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.dwHint{position:absolute;left:50%;bottom:calc(16px + env(safe-area-inset-bottom));transform:translateX(-50%);background:var(--red);color:#fff;font-size:13px;padding:6px 12px;white-space:nowrap;max-width:92vw;overflow:hidden;text-overflow:ellipsis}

/* 報表（PDF／列印） */
#report{display:none;position:fixed;inset:0;z-index:80;background:#8a8a86;overflow:auto;color:#000;font-family:var(--sans)}
body.repOn #report{display:block}
.repBar{position:sticky;top:0;z-index:2;background:var(--ink);color:#fff;display:flex;align-items:center;gap:6px;padding:8px 10px;font-size:14px}
.repBar span{flex:1;text-align:center;font-family:var(--serif);font-weight:700}
.repBar button{color:#fff;border:1px solid #fff;padding:5px 10px;font-size:13px}
.repBar #repClose{border:0;font-size:15px}
#repBody{width:210mm;transform-origin:top left;margin:10px auto}
.pg{width:210mm;min-height:296mm;padding:14mm 14mm 12mm;page-break-after:always;break-after:page;position:relative;background:#fff;margin-bottom:10px;box-shadow:0 2px 8px rgba(0,0,0,.3)}
.pg:last-child{page-break-after:auto;break-after:auto}
.pg h1{font-family:var(--serif);font-size:20px;text-align:center;letter-spacing:.3em;margin-bottom:8px}
.pg table.f{font-size:12px}
.pg table.f th{width:auto}
.pg .photos{display:grid;grid-template-columns:1fr 1fr;gap:6mm;margin-top:6mm}
.pg .photos .pc{border:1px solid #000}
.pg .photos .pc img{width:100%;height:58mm;object-fit:cover;display:block;border-bottom:1px solid #000}
.pg .photos .pc table.f td,.pg .photos .pc table.f th{border:0;border-bottom:1px solid #999;padding:3px 6px;font-size:11px}
.pg .photos .pc table.f tr:last-child td,.pg .photos .pc table.f tr:last-child th{border-bottom:0}
.pg .foot{position:absolute;bottom:8mm;left:14mm;right:14mm;font-size:10px;color:#666;display:flex;justify-content:space-between;border-top:1px solid #999;padding-top:3px}
.pg .dblock{border:1px solid #000;margin-top:6mm;page-break-inside:avoid;break-inside:avoid}
.pg .dblock .dhd{display:flex;justify-content:space-between;align-items:center;padding:4px 8px;border-bottom:1px solid #000;font-weight:700;font-size:13px}
.pg .dblock .dba{display:grid;grid-template-columns:1fr 1fr}
.pg .dblock .dba>div{padding:4px 6px;font-size:11px}
.pg .dblock .dba>div:first-child{border-right:1px solid #000}
.pg .dblock .dba img{width:100%;height:50mm;object-fit:cover;border:1px solid #999;margin-top:3px}
.pg .dblock .dlog{font-size:11px;padding:4px 8px;border-top:1px solid #000}
@media print{
  body{background:#fff}
  #app>*:not(#report){display:none!important}
  #app{max-width:none;padding:0;box-shadow:none}
  #report{display:block;position:static;background:#fff;overflow:visible}
  .repBar{display:none}
  #repBody{width:auto;transform:none!important;margin:0}
  .pg{width:auto;min-height:0;padding:0;box-shadow:none;margin:0}
  @page{size:A4;margin:14mm}
}
