/* sv-log.css — 油壓試驗記錄（v8r52）。現場用：大字、大按鈕、高對比；手機優先。 */
.svl{--c-ctrl:#1d5f93;--c-ctrl-bg:#e6f0f8;--c-field:#b04b1c;--c-field-bg:#fbeee6;--c-rec:#24704d;--c-rec-bg:#e5f3ec;
  --svl-r:14px;font-variant-numeric:tabular-nums}
.svl-intro h1{margin-bottom:.4rem}
.svl-how{list-style:none;margin:.9rem 0 1rem;padding:0;display:grid;gap:.6rem;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));counter-reset:svlhow}
.svl-how li{counter-increment:svlhow;position:relative;background:var(--paper);border:1px solid var(--line2);border-radius:12px;padding:.75rem .9rem .8rem 3rem;box-shadow:var(--shadow)}
.svl-how li::before{content:counter(svlhow);position:absolute;left:.85rem;top:.75rem;width:1.65rem;height:1.65rem;border-radius:50%;background:var(--brand);color:#fff;font-weight:800;display:grid;place-items:center;font-size:.95rem}
.svl-how b{display:block;font-size:1.02rem;margin-bottom:.15rem}
.svl-how span{color:var(--ink2);font-size:.92rem;line-height:1.55}
.svl-section{padding-top:.4rem}
.svl-h2{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}
.svl-ic{display:inline-grid;place-items:center;width:1.5em;height:1.5em;flex:none}
.svl-ic svg{width:100%;height:100%;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.svl-mini{appearance:none;border:1px solid var(--line);background:var(--paper);color:var(--ink);border-radius:999px;padding:.38rem .8rem;font:inherit;font-size:.88rem;font-weight:600;cursor:pointer;text-decoration:none;display:inline-flex;align-items:center;gap:.3rem;min-height:36px}
.svl-mini:hover{border-color:var(--brand);color:var(--brand)}
.svl-go{appearance:none;border:0;background:var(--brand);color:#fff;border-radius:var(--svl-r);padding:.95rem 1.4rem;font:inherit;font-size:1.12rem;font-weight:800;cursor:pointer;width:100%;min-height:56px;box-shadow:0 6px 18px -8px rgba(20,71,143,.65)}
.svl-go:hover{background:var(--brand-ink)}
.svl-go:focus-visible,.svl button:focus-visible,.svl input:focus-visible,.svr button:focus-visible,.svr input:focus-visible{outline:3px solid #f2b705;outline-offset:2px}

/* ---------- 加入場次 ---------- */
.svl-join{display:grid;gap:1rem;max-width:860px}
.svl-step{background:var(--paper);border:1px solid var(--line2);border-radius:var(--svl-r);padding:1rem 1rem 1.1rem;box-shadow:var(--shadow)}
.svl-step h3{margin:0 0 .7rem;font-size:1.08rem}
.svl-daterow{display:flex;align-items:center;gap:.6rem;margin-bottom:.6rem;font-weight:600;color:var(--ink2)}
.svl-date{font:inherit;font-size:1rem;padding:.45rem .6rem;border:1px solid var(--line);border-radius:10px;min-height:42px}
.svl-rooms{display:grid;gap:.6rem;grid-template-columns:repeat(auto-fit,minmax(240px,1fr))}
.svl-room,.svl-role{appearance:none;text-align:left;background:var(--surface);border:2px solid var(--line2);border-radius:var(--svl-r);padding:.85rem 1rem;font:inherit;color:var(--ink);cursor:pointer;display:flex;flex-direction:column;gap:.2rem;min-height:74px;transition:border-color .15s,background .15s,transform .1s}
.svl-room b,.svl-role b{font-size:1.08rem}
.svl-room small,.svl-role small{color:var(--muted);font-size:.86rem;line-height:1.45}
.svl-room:hover,.svl-role:hover{border-color:var(--line)}
.svl-room[aria-pressed="true"]{border-color:var(--brand);background:var(--brand-soft)}
.svl-room.is-prac[aria-pressed="true"]{border-color:#8a6d1a;background:#fbf3dc}
.svl-coderow{display:flex;gap:.5rem;margin-top:.7rem;flex-wrap:wrap}
.svl-coderow input{flex:1 1 200px;font:inherit;font-size:1rem;padding:.5rem .7rem;border:1px solid var(--line);border-radius:10px;min-height:42px;text-transform:uppercase}
.svl-roomnow{margin:.75rem 0 0;font-size:.95rem;display:flex;gap:.35rem;flex-wrap:wrap;align-items:baseline}
.svl-roomnow b{font-size:1.1rem;letter-spacing:.04em;color:var(--brand-ink)}
.svl-roomnow small{color:var(--muted)}
.svl-roles{display:grid;gap:.6rem;grid-template-columns:repeat(auto-fit,minmax(200px,1fr))}
.svl-role{flex-direction:row;flex-wrap:wrap;align-items:center;column-gap:.6rem}
.svl-role .svl-ic{width:2.4rem;height:2.4rem;border-radius:12px;padding:.4rem}
.svl-role small{flex-basis:100%}
.svl-role.is-ctrl .svl-ic{background:var(--c-ctrl-bg);color:var(--c-ctrl)}
.svl-role.is-field .svl-ic{background:var(--c-field-bg);color:var(--c-field)}
.svl-role.is-rec .svl-ic{background:var(--c-rec-bg);color:var(--c-rec)}
.svl-role.is-ctrl[aria-pressed="true"]{border-color:var(--c-ctrl);background:var(--c-ctrl-bg)}
.svl-role.is-field[aria-pressed="true"]{border-color:var(--c-field);background:var(--c-field-bg)}
.svl-role.is-rec[aria-pressed="true"]{border-color:var(--c-rec);background:var(--c-rec-bg)}
.svl-roles.is-shake{animation:svlshake .4s}
@keyframes svlshake{20%,60%{transform:translateX(-6px)}40%,80%{transform:translateX(6px)}}
.svl-name{font:inherit;font-size:1.05rem;padding:.6rem .8rem;border:1px solid var(--line);border-radius:10px;width:100%;max-width:360px;min-height:46px}

/* ---------- 頂列 ---------- */
.svl-bar{background:var(--paper);border:1px solid var(--line2);border-radius:var(--svl-r);padding:.55rem .7rem;margin-bottom:.8rem;display:flex;flex-wrap:wrap;gap:.45rem .7rem;align-items:center;box-shadow:var(--shadow)}
.svl-bar-top{display:flex;flex-wrap:wrap;gap:.45rem .6rem;align-items:center;flex:1 1 auto}
.svl-status{display:inline-flex;align-items:center;gap:.4rem;font-weight:700;font-size:.92rem;padding:.3rem .7rem;border-radius:999px;background:var(--surface)}
.svl-status i{width:.65rem;height:.65rem;border-radius:50%;background:var(--muted)}
.svl-status.is-ok{background:var(--ok-bg);color:var(--ok)}
.svl-status.is-ok i{background:var(--ok);box-shadow:0 0 0 0 rgba(15,122,61,.5);animation:svlpulse 1.8s infinite}
.svl-status.is-bad{background:var(--stop-bg);color:var(--stop)}
.svl-status.is-bad i{background:var(--stop)}
.svl-status.is-wait{background:var(--warn-bg);color:var(--warn)}
.svl-status.is-wait i{background:var(--warn)}
.svl-status small{font-weight:600;opacity:.85}
@keyframes svlpulse{0%{box-shadow:0 0 0 0 rgba(15,122,61,.45)}70%{box-shadow:0 0 0 8px rgba(15,122,61,0)}100%{box-shadow:0 0 0 0 rgba(15,122,61,0)}}
.svl-roombox{display:inline-flex;gap:.35rem;align-items:baseline;font-size:.88rem;color:var(--muted)}
.svl-roombox b{font-size:1rem;color:var(--ink);letter-spacing:.04em}
.svl-share{appearance:none;border:1px solid var(--brand);background:var(--brand-soft);color:var(--brand-ink);border-radius:999px;padding:.32rem .75rem;font:inherit;font-size:.88rem;font-weight:700;display:inline-flex;gap:.3rem;align-items:center;cursor:pointer;min-height:36px}
.svl-share .svl-ic{width:1.15em;height:1.15em}
.svl-peers{display:flex;flex-wrap:wrap;gap:.3rem;flex:1 1 100%}
.svl-peer{display:inline-flex;align-items:center;gap:.2rem;font-size:.8rem;padding:.12rem .55rem .12rem .3rem;border-radius:999px;background:var(--surface);color:var(--ink2);border:1px solid var(--line2)}
.svl-peer .svl-ic{width:1.15em;height:1.15em}
.svl-peer.is-me{border-color:var(--brand);color:var(--brand-ink)}
.svl-peer.is-none{padding-left:.6rem;color:var(--muted)}
.svl-switch{appearance:none;margin-left:auto;border:0;background:none;color:var(--muted);font:inherit;font-size:.84rem;font-weight:600;text-decoration:underline;text-underline-offset:3px;cursor:pointer;min-height:36px;padding:0 .2rem}
.svl-switch:hover{color:var(--brand)}

/* ---------- 跳脫提醒 ---------- */
.svl-alert{display:flex;flex-wrap:wrap;align-items:center;gap:.4rem .7rem;background:#c2410c;color:#fff;border-radius:16px;padding:.85rem 1rem;font-size:1.05rem;animation:svlflash 1s ease-in-out 4;position:fixed;left:50%;transform:translateX(-50%);bottom:calc(1rem + env(safe-area-inset-bottom));width:min(94vw,620px);z-index:60;box-shadow:0 16px 40px -12px rgba(124,45,18,.75)}
.svl-alert[hidden]{display:none}
.svl-alert b{font-size:1.25rem}
.svl-alert .svl-ic{width:1.8rem;height:1.8rem}
.svl-alert .svl-mini{margin-left:auto;background:#fff;color:#7c2d12;border-color:#fff}
@keyframes svlflash{50%{background:#7c2d12}}

/* ---------- 目前這一次 ---------- */
.svl-now{background:var(--paper);border:2px solid var(--brand);border-radius:18px;padding:1rem;box-shadow:0 10px 30px -18px rgba(20,71,143,.6);scroll-margin-top:170px}
.svl-now-h{display:grid;grid-template-columns:auto 1fr auto;gap:.4rem 1rem;align-items:center}
.svl-now-id{display:flex;flex-direction:column;line-height:1.1}
.svl-now-id b{font-size:2.3rem;letter-spacing:.01em;color:var(--brand-ink)}
.svl-now-id span{font-weight:700;color:var(--ink2);margin-top:.2rem;white-space:nowrap}
.svl-now-meta{display:flex;flex-wrap:wrap;gap:.3rem .5rem;font-size:.9rem;color:var(--ink2)}
.svl-now-meta span{background:var(--surface);border-radius:8px;padding:.15rem .5rem}
.svl-now-meta .svl-113{background:transparent;color:var(--muted);padding-left:0}
.svl-now-nav{display:flex;gap:.4rem}
.svl-navbtn{appearance:none;border:1px solid var(--line);background:var(--paper);border-radius:12px;padding:.55rem .85rem;font:inherit;font-weight:700;cursor:pointer;min-height:44px;white-space:nowrap}
.svl-navbtn.is-next{background:var(--brand);color:#fff;border-color:var(--brand)}
.svl-navbtn:disabled{opacity:.4;cursor:default}
.svl-detached{margin:.7rem 0 0;padding:.5rem .7rem;background:var(--warn-bg);border:1px solid var(--warn-line);border-radius:10px;display:flex;flex-wrap:wrap;gap:.4rem .6rem;align-items:center;font-size:.92rem}
.svl-ttabs{display:flex;flex-wrap:wrap;gap:.4rem;margin:.85rem 0 .2rem}
.svl-ttab{appearance:none;border:1px solid var(--line);background:var(--surface);border-radius:999px;padding:.4rem .9rem;font:inherit;font-weight:700;cursor:pointer;min-height:40px}
.svl-ttab[aria-pressed="true"]{background:var(--ink);color:#fff;border-color:var(--ink)}
.svl-ttab.is-ok{color:var(--ok);border-color:var(--ok-line)}
.svl-ttab.is-bad{color:var(--stop);border-color:var(--stop-line)}
.svl-ttab[aria-pressed="true"].is-ok{background:var(--ok);color:#fff}
.svl-ttab[aria-pressed="true"].is-bad{background:var(--stop);color:#fff}
.svl-ttab.is-add{border-style:dashed;background:transparent;color:var(--muted)}
.svl-io{display:grid;gap:.7rem;margin-top:.8rem;grid-template-columns:repeat(auto-fit,minmax(240px,1fr))}
.svl-field{border:1px solid var(--line2);border-radius:var(--svl-r);padding:.7rem .8rem .6rem;background:var(--surface);position:relative}
.svl-field.is-steam{border-left:6px solid var(--c-ctrl)}
.svl-field.is-oil{border-left:6px solid var(--c-field)}
.svl-flab{display:flex;align-items:baseline;gap:.45rem;font-weight:800;font-size:1rem}
.svl-flab small{font-weight:600;color:var(--muted);font-size:.82rem}
.svl-fhead{display:flex;align-items:center;justify-content:space-between;gap:.5rem;flex-wrap:wrap}
.svl-unitseg{display:inline-flex;border:1px solid var(--c-ctrl);border-radius:999px;overflow:hidden}
.svl-unitseg button{appearance:none;border:0;background:var(--paper);color:var(--c-ctrl);font:inherit;font-size:.86rem;font-weight:800;padding:.3rem .75rem;min-height:36px;cursor:pointer}
.svl-unitseg button[aria-pressed="true"]{background:var(--c-ctrl);color:#fff}
.svl-conv{margin-top:.3rem;font-size:.9rem;color:var(--ink2);min-height:1.2em}
.svl-conv.is-radio{display:flex;align-items:baseline;gap:.45rem;background:var(--c-ctrl);color:#fff;border-radius:12px;padding:.35rem .8rem;margin-top:.45rem}
.svl-conv.is-radio span{font-weight:700;font-size:.92rem;opacity:.9}
.svl-conv.is-radio b{font-size:2.4rem;line-height:1.1;letter-spacing:.01em}
.svl-unitwarn{margin:.35rem 0 0;color:var(--stop);font-weight:700;font-size:.88rem}
.svl-unitwarn[hidden]{display:none}
.svl-inwrap{display:flex;align-items:baseline;gap:.4rem;margin-top:.3rem}
.svl-inwrap input{flex:1;min-width:0;font:inherit;font-size:1.6rem;font-weight:800;padding:.35rem .6rem;border:2px solid var(--line);border-radius:12px;background:var(--paper);min-height:52px;font-variant-numeric:tabular-nums}
.svl-field.is-big .svl-inwrap input{font-size:2.4rem;min-height:68px;border-color:var(--ink2)}
.svl-inwrap input:focus{border-color:var(--brand)}
.svl-unit{font-weight:700;color:var(--muted)}
.svl-by{min-height:1.2em;font-size:.8rem;color:var(--muted);margin-top:.25rem}
.svl-field.is-bad .svl-inwrap input{border-color:var(--stop);background:var(--stop-bg)}
.svl-field.is-flash{animation:svlnew 1.6s ease-out}
@keyframes svlnew{0%{background:#fff3b0;box-shadow:0 0 0 4px #f6d55c}100%{background:var(--surface);box-shadow:none}}
.svl-same{appearance:none;border:1px dashed var(--c-ctrl);background:var(--paper);color:var(--c-ctrl);border-radius:999px;padding:.3rem .75rem;font:inherit;font-size:.86rem;font-weight:700;cursor:pointer;margin-top:.35rem;min-height:34px}
.svl-expect{margin-top:.8rem;padding:.7rem .9rem;border-radius:var(--svl-r);background:linear-gradient(90deg,var(--c-field-bg),var(--paper));border:1px solid #efcfbd}
.svl-expect p{margin:0;display:flex;flex-wrap:wrap;align-items:baseline;gap:.3rem .45rem}
.svl-expect .svl-big{font-size:1.7rem;color:var(--c-field)}
.svl-range{background:var(--paper);border:1px solid #efcfbd;border-radius:999px;padding:.05rem .55rem;font-weight:700;font-size:.92rem}
.svl-expect small{color:var(--muted);font-size:.82rem}
.svl-stop{margin-top:.35rem!important;font-size:.92rem}
.svl-stop b{color:var(--stop)}
.svl-warnline{margin:.4rem 0 0;color:var(--warn);font-weight:700;font-size:.9rem}
.svl-poprow{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem .8rem;margin-top:.8rem}
.svl-pop{appearance:none;border:0;border-radius:16px;background:linear-gradient(180deg,#e2591f,#b8400f);color:#fff;font:inherit;cursor:pointer;display:grid;grid-template-columns:auto 1fr;grid-template-rows:auto auto;column-gap:.6rem;align-items:center;text-align:left;padding:.75rem 1.2rem;min-height:64px;box-shadow:0 8px 20px -10px rgba(184,64,15,.9);flex:1 1 280px;max-width:520px}
.svl-pop .svl-ic{grid-row:1/3;width:2.2rem;height:2.2rem}
.svl-pop span:not(.svl-ic){font-size:1.4rem;font-weight:900}
.svl-pop small{font-size:.86rem;opacity:.92}
.svl-pop:active{transform:scale(.98)}
.svl-popinfo{color:var(--c-field);font-weight:700;font-size:.9rem}
.svl-res{margin-top:.85rem;border-radius:var(--svl-r);padding:.85rem 1rem;border:2px solid var(--line2);background:var(--surface)}
.svl-res-h{margin:0;font-size:1.45rem;font-weight:900}
.svl-res.is-wait .svl-res-h{font-size:1.05rem;color:var(--muted);font-weight:700}
.svl-res.is-ok{background:var(--ok-bg);border-color:var(--ok-line)}
.svl-res.is-ok .svl-res-h{color:var(--ok)}
.svl-res.is-near{background:var(--warn-bg);border-color:var(--warn-line)}
.svl-res.is-near .svl-res-h{color:var(--warn)}
.svl-res.is-bad{background:var(--stop-bg);border-color:var(--stop-line)}
.svl-res.is-bad .svl-res-h{color:var(--stop)}
.svl-res-nums{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.5rem;margin:.6rem 0 .2rem}
.svl-res-nums div{background:rgba(255,255,255,.75);border-radius:10px;padding:.4rem .6rem}
.svl-res-nums span{display:block;font-size:.8rem;color:var(--ink2);font-weight:600}
.svl-res-nums b{font-size:1.3rem}
.svl-res-sub{margin:.35rem 0 0;font-size:.95rem;color:var(--ink)}
.svl-res-sum{margin:.5rem 0 0;font-weight:700;font-size:.95rem}
.svl-gonext{appearance:none;margin-top:.7rem;border:0;background:var(--ink);color:#fff;border-radius:12px;padding:.65rem 1rem;font:inherit;font-weight:800;font-size:1rem;cursor:pointer;min-height:48px}
.svl-more{margin-top:.8rem;border-top:1px dashed var(--line);padding-top:.6rem}
.svl-more summary{cursor:pointer;font-weight:700;color:var(--ink2);font-size:.92rem}
.svl-moregrid{display:grid;gap:.6rem;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));margin-top:.6rem}
.svl-note{display:flex;flex-direction:column;gap:.25rem;font-size:.86rem;font-weight:700;color:var(--ink2)}
.svl-note input{font:inherit;font-size:1rem;padding:.45rem .6rem;border:1px solid var(--line);border-radius:10px;min-height:42px;font-weight:400}
.svl-formula{font-size:.85rem;color:var(--muted);margin:.6rem 0 0}
.svl-radio{margin:.8rem 0 0;font-size:.85rem;color:var(--ink2);display:flex;gap:.5rem;align-items:baseline;flex-wrap:wrap}
.svl-radio b{background:var(--ink);color:#fff;border-radius:6px;padding:.05rem .45rem;font-size:.78rem}
.role-ctrl .svl-now{border-color:var(--c-ctrl)}
.role-field .svl-now{border-color:var(--c-field)}
.role-rec .svl-now{border-color:var(--c-rec)}

/* ---------- 全部閥號 ---------- */
.svl-board{margin-top:1rem;display:grid;gap:.9rem}
.svl-bgroup{background:var(--paper);border:1px solid var(--line2);border-radius:var(--svl-r);padding:.8rem}
.svl-bhead{display:flex;flex-wrap:wrap;justify-content:space-between;gap:.3rem .8rem;align-items:baseline}
.svl-bhead span{font-size:.86rem;color:var(--muted)}
.svl-bhint{margin:.3rem 0 .6rem;font-size:.84rem;color:var(--ink2)}
.svl-tiles{display:grid;gap:.45rem;grid-template-columns:repeat(auto-fill,minmax(88px,1fr))}
.svl-tile{appearance:none;border:2px solid var(--line2);background:var(--surface);border-radius:12px;padding:.5rem .4rem .45rem;font:inherit;cursor:pointer;display:flex;flex-direction:column;align-items:center;gap:.1rem;min-height:72px;position:relative}
.svl-tile b{font-size:1.02rem}
.svl-tile span{font-size:.78rem;color:var(--muted)}
.svl-dots{display:flex;gap:.25rem;margin-top:.15rem}
.svl-dots i{width:.6rem;height:.6rem;border-radius:50%;background:var(--line);display:block}
.svl-dots i.ok{background:var(--ok)}
.svl-dots i.bad{background:var(--stop)}
.svl-tile.is-pass{background:var(--ok-bg);border-color:var(--ok-line)}
.svl-tile.is-fail{background:var(--stop-bg);border-color:var(--stop-line)}
.svl-tile.is-part{background:var(--warn-bg);border-color:var(--warn-line)}
.svl-tile.is-cur{box-shadow:0 0 0 3px var(--brand)}
.svl-tile.is-cur::after{content:"進行中";position:absolute;top:-.55rem;right:-.3rem;background:var(--brand);color:#fff;font-size:.68rem;font-weight:800;padding:.05rem .35rem;border-radius:6px}
.svl-tile.is-view{outline:2px dashed var(--ink2);outline-offset:2px}

/* ---------- 進度與結束 ---------- */
.svl-finish{margin-top:1rem;background:var(--paper);border:1px solid var(--line2);border-radius:var(--svl-r);padding:.9rem;display:grid;gap:.55rem}
.svl-prog{height:12px;border-radius:999px;background:var(--surface2);overflow:hidden}
.svl-prog i{display:block;height:100%;background:linear-gradient(90deg,var(--brand),#3c8dcc);border-radius:999px;transition:width .4s}
.svl-prog-t{margin:0;font-size:.95rem}
.svl-prog-n{color:var(--muted)}

/* ---------- 完整記錄表 ---------- */
.svl-sheet,.svl-log{margin-top:1rem;background:var(--paper);border:1px solid var(--line2);border-radius:var(--svl-r);padding:.7rem .8rem}
.svl-sheet summary,.svl-log summary{cursor:pointer;font-weight:800}
.svl-tablewrap{overflow-x:auto;margin-top:.7rem}
.svl-tcap{margin:.2rem 0 .3rem;font-weight:700;color:var(--ink2);font-size:.9rem}
.svl-table{border-collapse:collapse;width:100%;min-width:640px;font-size:.9rem}
.svl-table th,.svl-table td{border:1px solid var(--line);padding:.32rem .4rem;text-align:center}
.svl-table thead th{background:var(--surface);font-size:.82rem}
.svl-table tbody tr{cursor:pointer}
.svl-table tbody tr:hover td{background:var(--brand-soft)}
.svl-table td.is-ok{color:var(--ok);font-weight:700}
.svl-table td.is-bad,.svl-table td.is-fail{color:var(--stop);font-weight:800}
.svl-table td.is-pass{color:var(--ok);font-weight:700}
.svl-table td.is-man{text-decoration:underline dotted}
.svl-table td.is-lim{color:var(--muted);font-size:.82rem}
.svl-loglist{margin:.6rem 0 0;padding-left:1.2rem;font-size:.86rem;max-height:320px;overflow:auto;font-variant-numeric:tabular-nums}

/* ---------- 說明 ---------- */
.svl-facts{display:grid;gap:.7rem;grid-template-columns:repeat(auto-fit,minmax(230px,1fr))}
.svl-facts article{background:var(--paper);border:1px solid var(--line2);border-radius:12px;padding:.8rem .9rem}
.svl-facts h3{margin:0 0 .3rem;font-size:1rem}
.svl-facts p{margin:0;font-size:.92rem;line-height:1.6;color:var(--ink2)}
.svl-roles-doc .is-ctrl{border-left:5px solid #1d5f93}
.svl-roles-doc .is-field{border-left:5px solid #b04b1c}
.svl-roles-doc .is-rec{border-left:5px solid #24704d}

/* ---------- 提示 ---------- */
.svl-toast{position:fixed;left:50%;top:calc(.8rem + env(safe-area-inset-top));transform:translateX(-50%);background:var(--ink);color:#fff;padding:.65rem 1.1rem;border-radius:12px;font-weight:700;z-index:999;box-shadow:0 10px 30px -10px rgba(0,0,0,.5);max-width:min(92vw,520px);transition:opacity .4s,transform .4s}
.svl-toast.is-ok{background:var(--ok)}
.svl-toast.is-warn{background:#9a6200}
.svl-toast.is-info{background:var(--brand-ink)}
.svl-toast.is-out{opacity:0;transform:translate(-50%,-10px)}

/* ---------- 報告 ---------- */
.svr{display:grid;gap:.8rem}
.svr-tools{display:flex;flex-wrap:wrap;gap:.6rem;align-items:center}
.svr-dlab{display:inline-flex;align-items:center;gap:.4rem;font-weight:700;color:var(--ink2)}
.svr-dlab input{font:inherit;font-size:1rem;padding:.4rem .6rem;border:1px solid var(--line);border-radius:10px;width:8.5em;min-height:40px}
.svr-acts{display:flex;flex-wrap:wrap;gap:.5rem}
.svr-act{appearance:none;border:2px solid var(--brand);background:var(--paper);color:var(--brand-ink);border-radius:12px;padding:.65rem 1.1rem;font:inherit;font-weight:800;cursor:pointer;min-height:48px;flex:1 1 180px}
.svr-act:hover{background:var(--brand-soft)}
.svr-mail{background:var(--paper);border:1px solid var(--line2);border-radius:var(--svl-r);padding:.8rem;display:flex;flex-wrap:wrap;gap:.5rem .7rem;align-items:flex-end}
.svr-mail label{display:flex;flex-direction:column;gap:.3rem;font-weight:700;font-size:.9rem;color:var(--ink2);flex:1 1 260px}
.svr-mail input{font:inherit;font-size:1.05rem;padding:.55rem .7rem;border:1px solid var(--line);border-radius:10px;min-height:46px;font-weight:400}
.svr-send{appearance:none;border:0;background:var(--brand);color:#fff;border-radius:12px;padding:.7rem 1.2rem;font:inherit;font-weight:800;cursor:pointer;min-height:46px}
.svr-send:disabled{opacity:.5}
.svr-mstat{flex-basis:100%;margin:0;font-size:.92rem;min-height:1.2em}
.svr-mstat.is-ok{color:var(--ok);font-weight:700}
.svr-mstat.is-bad{color:var(--stop);font-weight:700}
.svr-fb{display:flex;flex-wrap:wrap;gap:.4rem;margin-top:.4rem}
.svr-sum{border-radius:var(--svl-r);padding:.7rem .9rem;display:flex;flex-wrap:wrap;gap:.2rem .8rem;align-items:baseline;border:1px solid var(--line2);background:var(--surface)}
.svr-sum b{font-size:1.1rem}
.svr-sum.is-ok{background:var(--ok-bg);border-color:var(--ok-line);color:var(--ok)}
.svr-sum.is-bad{background:var(--stop-bg);border-color:var(--stop-line);color:var(--stop)}
.svr-sum.is-wait{background:var(--warn-bg);border-color:var(--warn-line);color:var(--warn)}
.svr-sum span,.svr-sum small{color:var(--ink2)}
.svr-paper{display:grid;gap:1rem;justify-items:center;background:var(--surface2);border-radius:var(--svl-r);padding:1rem .5rem;overflow-x:auto}
.svr-page{position:relative;background:#fff;color:#111;width:min(100%,760px);min-width:600px;padding:34px 40px 28px;box-shadow:0 8px 24px -12px rgba(0,0,0,.45);font-family:"DFKai-SB","BiauKai","標楷體","Kaiti TC","Noto Serif TC","PMingLiU",serif;overflow:hidden}
.svr-wm{position:absolute;inset:0;display:grid;place-items:center;font-size:140px;font-weight:900;color:rgba(200,30,30,.09);transform:rotate(-22deg);pointer-events:none}
.svr-title{text-align:center;font-size:22px;margin:0;letter-spacing:.06em;font-weight:700}
.svr-sub{text-align:center;margin:.3rem 0 .4rem;font-size:16px}
.svr-date{text-align:right;margin:0 0 .4rem;font-size:15px}
.svr-table{width:100%;border-collapse:collapse;table-layout:fixed;font-size:15px;font-variant-numeric:tabular-nums;border:2px solid #222}
.svr-table th,.svr-table td{border:1px solid #222;text-align:center;padding:5px 3px;line-height:1.25}
.svr-table th{font-weight:400;font-size:14px}
.svr-table td.is-no{font-size:15px}
.svr-table td.is-bad{color:#c00000;font-weight:700}
.svr-table td.is-pc{text-align:right;font-size:12px;border-right:0}
.svr-table td.is-lim{border-left:0}
.svr-signs{display:flex;justify-content:space-between;gap:1rem;margin:22px 0 26px;font-size:16px}
.svr-signs span{flex:1}
.svr-note{font-size:13.5px;margin:.2rem 0;line-height:1.5}
.svr-foot{display:flex;justify-content:center;gap:5rem;margin-top:14px;font-size:13px}

@media (max-width:640px){
  .svl-now{padding:.8rem}
  .svl-now-h{grid-template-columns:1fr auto}
  .svl-now-meta{grid-column:1/-1;grid-row:2}
  .svl-now-id b{font-size:2rem}
  .svl-field.is-big .svl-inwrap input{font-size:2.1rem}
  .svl-res-nums b{font-size:1.1rem}
  .svl-bar{padding:.5rem .6rem;gap:.35rem}
  .svl-navbtn{padding:.5rem .6rem;font-size:.92rem}
  .svl-now{scroll-margin-top:150px}
  .svl-bar-top{gap:.35rem .5rem}
  .svl-roombox{font-size:.8rem}
  .svl-roombox b{font-size:.92rem}
}
@media (prefers-reduced-motion:reduce){
  .svl-status.is-ok i,.svl-alert,.svl-field.is-flash{animation:none}
}

/* ---------- 列印：只印報告表 ---------- */
@media print{
  @page{size:A4 portrait;margin:12mm}
  html.svr-printing body *,html:has(.svl.is-report) body *{visibility:hidden}
  html.svr-printing .svr-paper,html.svr-printing .svr-paper *,html:has(.svl.is-report) .svr-paper,html:has(.svl.is-report) .svr-paper *{visibility:visible}
  html.svr-printing .svr-paper,html:has(.svl.is-report) .svr-paper{position:absolute;left:0;top:0;width:100%;background:none;padding:0;display:block}
  .svr-page{box-shadow:none;width:100%;min-width:0;padding:0;page-break-after:always;break-after:page}
  .svr-page:last-child{page-break-after:auto;break-after:auto}
}
