
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
:root{
  --deep:#050D1A;--panel:#0A1A2E;--bord:#162B46;--text:#D2E7F8;--mute:#5E82A4;
  --accent:#F09A55;--accentL:#FFD4A8;--land:#D4711A;
  --c1:#E53845;--c1l:#FF949C;--c2:#F09A55;--c2l:#FFD4A8;--c3:#48AA78;--c3l:#A0E5C8;
  --viewbg:rgba(255,255,255,.012);--softbg:rgba(255,255,255,.03);--mapbox:#06111E;--link:#9FD3F0;
  --map-filter:none;--map-land-fill:#0C2036;--map-land-stroke:#2A4A68;--map-label:#D7ECFF;--map-label-strong:#FFFFFF;
  --map-label-bg:rgba(3,12,22,.82);--map-outline:#6A8CAA;--map-hover:#FFFFFF;--map-inset-bg:rgba(6,17,30,.85);
  --map-grid:rgba(255,255,255,.25);--map-route-shadow:rgba(0,8,16,.9);--map-storm-eye:#06111E;
  --map-tw-land:#0C2036;--map-tw-hi:#D4711A;--map-tw-stroke:#2A4A68;
  /* 海浪頁為純向量圖（無地形底圖），陸地需與海面拉開對比，不能沿用 --map-land-fill */
  --map-wave-land:#1D3B55;--map-wave-coast:#5C8FB5;--map-wave-grid:rgba(255,255,255,.06);
}
:root[data-theme="light"]{
  --deep:#FFFFFF;--panel:#FFFFFF;--bord:#CCCCCC;--text:#333333;--mute:rgba(50,50,50,.8);
  --accent:#4779B1;--accentL:#4779B1;--land:#666666;
  --c1:#AA3333;--c1l:#AA3333;--c2:#B66E1F;--c2l:#B66E1F;--c3:#2F7D4F;--c3l:#2F7D4F;
  --viewbg:#FFFFFF;--softbg:#F6F6F6;--mapbox:#BFEFEF;--link:#4779B1;
  --map-filter:saturate(.92) brightness(1.18) contrast(.9) sepia(.08) hue-rotate(126deg);--map-land-fill:#EEECCF;--map-land-stroke:#000000;--map-label:#000000;--map-label-strong:#000000;
  --map-label-bg:rgba(255,255,255,.98);--map-outline:#000000;--map-hover:#000000;--map-inset-bg:#FFFFFF;
  --map-grid:rgba(0,0,0,.055);--map-route-shadow:rgba(255,255,255,.95);--map-storm-eye:#FFFFFF;
  --map-tw-land:#E9E4D6;--map-tw-hi:#E68A2E;--map-tw-stroke:#5A5A5A;
  --map-wave-land:#EEECCF;--map-wave-coast:#3E3E3E;--map-wave-grid:rgba(0,0,0,.05);
}
body{background:var(--deep);color:var(--text);
 font-family:'PingFang TC','Microsoft JhengHei',system-ui,sans-serif;
 min-height:100vh;padding:14px 12px 28px;display:flex;flex-direction:column;align-items:center;gap:11px}
.hdr{width:100%;max-width:1060px;display:flex;flex-direction:column;gap:4px}
.hdr-row{display:flex;justify-content:space-between;align-items:baseline;flex-wrap:wrap;gap:8px}
.hdr h1{font-size:clamp(1.05rem,2.6vw,1.4rem);font-weight:700;letter-spacing:.04em;color:#BDD6F0}
:root[data-theme="light"] .hdr h1{color:#4779B1}
.hdr .src{font-size:.72rem;color:var(--mute)}
.theme-switch{display:flex;gap:4px;align-items:center;flex-wrap:wrap;justify-content:flex-end}
.theme-btn{border:1px solid var(--bord);background:var(--softbg);color:var(--mute);border-radius:999px;padding:4px 9px;font-family:inherit;font-size:.68rem;font-weight:700;cursor:pointer;line-height:1.2}
.theme-btn:hover{color:var(--text);border-color:var(--accent)}
.theme-btn.on{color:var(--accentL);border-color:var(--accent);background:rgba(240,154,85,.14)}
:root[data-theme="light"] .theme-btn.on{background:#FFFFFF;color:#4779B1}
.banner{font-size:.74rem;padding:6px 12px;border-radius:5px;letter-spacing:.03em;display:none}
.banner.demo{display:block;background:rgba(240,154,85,.12);border:1px solid var(--accent);color:var(--accentL)}
.banner.err{display:block;background:rgba(229,56,69,.12);border:1px solid var(--c1);color:var(--c1l)}
.tabs{display:flex;gap:7px;flex-wrap:wrap;width:100%;max-width:1060px}
.tab{padding:6px 16px;border-radius:4px;border:1px solid var(--bord);
 background:rgba(255,255,255,.03);color:var(--mute);cursor:pointer;
 font-family:inherit;font-size:.82rem;letter-spacing:.04em;transition:all .2s;user-select:none}
.tab:hover{border-color:#3A6A9A;color:var(--text)}
.tab.on1{border-color:var(--c1);color:var(--c1l);background:rgba(229,56,69,.12)}
.tab.on2{border-color:var(--c2);color:var(--c2l);background:rgba(240,154,85,.12)}
.tab.on3{border-color:var(--c3);color:var(--c3l);background:rgba(72,170,120,.12)}
.layout{display:flex;gap:12px;width:100%;max-width:1060px;align-items:flex-start}
#dash-map-slot{flex:1;min-width:0}
.map-wrap{position:relative;border-radius:8px;overflow:hidden;border:1px solid var(--bord);background:var(--mapbox)}
.map-wrap img{display:block;width:100%;height:auto;filter:var(--map-filter)}
.map-wrap canvas{position:absolute;top:0;left:0;width:100%;height:100%}
.side{width:242px;flex-shrink:0;display:flex;flex-direction:column;gap:9px}
.card{background:var(--panel);border:1px solid var(--bord);border-radius:8px;padding:12px 13px}
.lbl{font-size:.6rem;letter-spacing:.12em;text-transform:uppercase;color:var(--mute);margin-bottom:5px}
.val{font-size:1rem;font-weight:700;color:var(--text);font-variant-numeric:tabular-nums}
.sub{font-size:.7rem;color:var(--mute);margin-top:2px;font-variant-numeric:tabular-nums}
.chip{display:inline-block;padding:2px 9px;border-radius:20px;font-size:.72rem;font-weight:700;margin-top:2px}
.chip.lv0{background:rgba(94,130,164,.2);color:#9FBFDA}
.chip.lv1{background:rgba(72,170,120,.15);color:var(--c3l)}
.chip.lv2{background:rgba(240,154,85,.15);color:var(--c2l)}
.chip.lv3{background:rgba(229,56,69,.15);color:var(--c1l)}
.board-row{display:flex;justify-content:space-between;font-size:.76rem;padding:4px 0;border-top:1px solid var(--bord)}
.board-row:first-of-type{border-top:none}
.board-row .k{color:var(--mute)}
.board-row .v{color:var(--text);font-variant-numeric:tabular-nums;text-align:right}
.warnpill{font-size:.68rem;color:#C89A6A}
.tchip{display:block;text-align:center;padding:7px 10px;border-radius:7px;font-size:.88rem;font-weight:800;letter-spacing:.05em;margin-bottom:8px}
.tlv0{background:rgba(72,170,120,.16);color:#A0E5C8;border:1px solid rgba(72,170,120,.5)}
.tlv1{background:rgba(240,200,66,.13);color:#F5DE9E;border:1px solid rgba(240,200,66,.5)}
.tlv2{background:rgba(240,154,85,.15);color:#FFD4A8;border:1px solid rgba(240,154,85,.6)}
.tlv3{background:rgba(229,56,69,.17);color:#FF949C;border:1px solid rgba(229,56,69,.65)}
:root[data-theme="light"] .tlv0{background:#F6F6F6;color:#2F7D4F;border-color:#CCCCCC}
:root[data-theme="light"] .tlv1{background:#FFF9E6;color:#8A6500;border-color:#CCCCCC}
:root[data-theme="light"] .tlv2{background:#FFF0DF;color:#B66E1F;border-color:#CCCCCC}
:root[data-theme="light"] .tlv3{background:#FFF0F0;color:#AA3333;border-color:#CCCCCC}
.treason{font-size:.7rem;line-height:1.65;color:#96B8D4;padding-left:1em;text-indent:-1em}
.tact{margin-top:7px;padding-top:7px;border-top:1px solid var(--bord);font-size:.7rem;line-height:1.65;color:#C8B08A}
/* 頂部頁簽 */
.topnav{display:flex;gap:6px;width:100%;max-width:1060px}
.topnav-btn{padding:9px 20px;border:1px solid var(--bord);border-bottom:none;border-radius:8px 8px 0 0;
 background:var(--softbg);color:var(--mute);cursor:pointer;font-family:inherit;
 font-size:.9rem;font-weight:700;letter-spacing:.03em;transition:all .2s;position:relative;top:1px}
.topnav-btn:hover{color:var(--text)}
.topnav-btn.on{color:var(--accentL);background:var(--panel);border-color:var(--bord);box-shadow:inset 0 3px 0 var(--accent)}
.topnav-btn .badge{display:inline-block;min-width:18px;padding:0 5px;margin-left:6px;border-radius:10px;
 background:rgba(229,56,69,.85);color:#fff;font-size:.68rem;font-weight:800;text-align:center}
.topnav-btn .badge.zero{background:rgba(94,130,164,.4)}
#view-typhoon,#view-ncdr,#view-rain,#view-wind,#view-wave,#view-tp,#view-eq,#view-usage,#view-ceoc{width:100%;max-width:1060px;display:flex;flex-direction:column;align-items:center;gap:12px;
 border:1px solid var(--bord);border-radius:0 8px 8px 8px;padding:14px;background:var(--viewbg)}
#view-typhoon>*{max-width:100%!important}
#view-rain>*,#view-wind>*,#view-wave>*,#view-usage>*,#view-ceoc>*{width:100%}
/* 應變中心頁（中央災害應變中心工作會報摘要） */
.ceoc-kpis{display:flex;flex-wrap:wrap;gap:10px;margin-top:8px}
.ceoc-kpi{flex:1 1 110px;min-width:100px;background:rgba(94,130,164,.12);border:1px solid var(--bord);border-radius:8px;padding:8px 10px;text-align:center}
.ceoc-kpi .k{font-size:.7rem;color:var(--mute)}
.ceoc-kpi .v{font-size:1.15rem;font-weight:700;color:var(--text)}
.ceoc-headline{font-size:1.02rem;font-weight:700;margin:6px 0 2px;line-height:1.5}
.ceoc-badge{display:inline-block;padding:2px 10px;border-radius:12px;font-size:.75rem;font-weight:700;margin-right:8px;background:rgba(255,148,156,.18);color:#FF949C}
.ceoc-badge.calm{background:rgba(126,231,135,.15);color:#7EE787}
.ceoc-dir-item{margin:6px 0;padding-left:14px;position:relative;font-size:.86rem;line-height:1.55}
.ceoc-dir-item:before{content:'▸';position:absolute;left:0;color:var(--accentL)}
.ceoc-row{display:flex;gap:10px;align-items:baseline;padding:6px 4px;border-bottom:1px dashed var(--bord);font-size:.85rem}
.ceoc-row:last-child{border-bottom:none}
.ceoc-row .no{font-weight:700;color:var(--accentL);white-space:nowrap}
.ceoc-row .dt{color:var(--mute);white-space:nowrap}
.ceoc-row a{color:var(--accentL);text-decoration:none;white-space:nowrap}
.ceoc-links a{color:var(--accentL);text-decoration:none;margin-right:14px}
/* 使用統計儀表板 */
.u-kpis{display:grid;grid-template-columns:repeat(5,1fr);gap:9px}
@media(max-width:720px){.u-kpis{grid-template-columns:repeat(2,1fr)}}
.u-kpi{background:var(--softbg);border:1px solid var(--bord);border-radius:10px;padding:11px 12px;text-align:center}
.u-kpi .k{font-size:.72rem;color:var(--mute);margin-bottom:3px}
.u-kpi .v{font-size:1.55rem;font-weight:800;color:var(--text);font-variant-numeric:tabular-nums;line-height:1.1}
.u-kpi.live .v{color:#48D18B}
.u-grid{display:grid;grid-template-columns:1fr 1fr;gap:11px}
@media(max-width:720px){.u-grid{grid-template-columns:1fr}}
.u-card .lbl{margin-bottom:8px}
.u-bypage,.u-rows{display:flex;flex-direction:column;gap:6px}
.u-brow{display:flex;align-items:center;gap:8px;font-size:.8rem}
.u-brow .nm{flex:0 0 92px;color:#C9E0F2}
.u-brow .track{flex:1;height:14px;background:var(--softbg);border-radius:7px;overflow:hidden}
.u-brow .fill{height:100%;background:linear-gradient(90deg,#3A7FD5,#48D18B);border-radius:7px}
.u-brow .val{flex:0 0 auto;color:var(--text);font-weight:700;font-variant-numeric:tabular-nums;min-width:34px;text-align:right}
.u-bars{display:flex;align-items:flex-end;gap:2px;height:120px;padding-top:4px}
.u-bars .col{flex:1;display:flex;flex-direction:column;justify-content:flex-end;align-items:center;height:100%;min-width:0}
.u-bars .col .bar{width:78%;background:#3A7FD5;border-radius:3px 3px 0 0;min-height:1px}
.u-bars .col .cap{font-size:.56rem;color:var(--mute);margin-top:3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}
.u-bars .col.hot .bar{background:#F09A55}
/* 頂部公開使用小列 */
.usage-strip{display:flex;flex-wrap:wrap;gap:6px 16px;align-items:center;font-size:.75rem;color:var(--mute);margin-bottom:4px}
.usage-strip b{color:var(--text);font-weight:800;font-variant-numeric:tabular-nums;font-size:.92rem;margin-left:3px}
.us-item{display:inline-flex;align-items:center;gap:4px}
.us-dot{width:7px;height:7px;border-radius:50%;background:#48D18B;box-shadow:0 0 6px #48D18B;animation:uspulse 2.2s infinite}
@keyframes uspulse{0%,100%{opacity:1}50%{opacity:.35}}
.tp-wsc{font-size:.86rem;line-height:1.8;color:#C9E0F2}
.tp-wsc .county{display:inline-block;margin:2px 4px 2px 0;padding:2px 10px;border-radius:14px;background:rgba(229,56,69,.15);color:#FF949C;font-weight:700;font-size:.8rem}
.tp-wsc.normal{color:#A0E5C8}
.tp-dgpa-head{display:flex;justify-content:space-between;gap:12px 16px;flex-wrap:wrap;align-items:center;margin-bottom:8px;color:var(--mute);font-size:.78rem}
.tp-cnts{display:flex;flex-wrap:wrap;gap:10px;align-items:center}
.tp-cnt{display:inline-flex;align-items:center;gap:9px;padding:4px 11px 4px 9px;border-radius:9px;background:var(--softbg);border:1px solid var(--bord);border-left:3px solid var(--bord);font-size:.8rem}
.tp-cnt.today{border-left-color:#F09A55}
.tp-cnt.tomo{border-left-color:#4FA3D1}
.tp-cnt-day{font-weight:800;color:var(--text)}
:root[data-theme="light"] .tp-cnt.today{border-left-color:#E68A2E}
:root[data-theme="light"] .tp-cnt.tomo{border-left-color:#4779B1}
.tp-dgpa-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px 10px}
.tp-dgpa-row{display:grid;grid-template-columns:66px 70px 1fr;gap:8px;align-items:start;padding:7px 9px;border-radius:7px;border-left:3px solid var(--bord);background:var(--softbg);font-size:.82rem;line-height:1.5}
.tp-dgpa-region{color:var(--mute);font-size:.72rem}
.tp-dgpa-city{font-weight:800;color:var(--text)}
.tp-dgpa-status{font-weight:700;line-height:1.7}
.tp-seg{display:block}                        /* 逐句（今天/明天）各自一行、各自上色 */
.tp-seg.stop{color:#FF6B77}
.tp-seg.normal{color:#7EE0B0}
.tp-seg.pending{color:#F7D56B;font-weight:500}
.tp-seg.other{color:#C9E0F2}
.tp-dgpa-k{font-weight:800}.tp-dgpa-k.stop{color:#FF6B77}.tp-dgpa-k.normal{color:#7EE0B0}.tp-dgpa-k.pending{color:#F7D56B}
@media(max-width:760px){.tp-dgpa-list{grid-template-columns:1fr}}
.tp-grid{display:flex;flex-direction:column;gap:2px}
.tp-row{display:flex;gap:12px;align-items:baseline;padding:9px 0;border-top:1px solid var(--bord)}
.tp-row:first-child{border-top:none}
.tp-k{font-weight:800;font-size:.9rem;min-width:70px;flex-shrink:0}
.tp-v{font-size:.84rem;line-height:1.6;color:#C9E0F2}
.tp-v.red{color:#FF949C;font-weight:700}.tp-v.green{color:#A0E5C8;font-weight:700}
.tp-tra-row{align-items:flex-start}
.tp-v a{color:#9FD3F0;text-decoration:none}.tp-v a:hover{text-decoration:underline}
.tp-newsitem{display:block;padding:2px 0;font-size:.8rem}
/* NCDR 獨立頁 */
.ncdr-summary{font-size:.82rem;color:#9FBFDA;line-height:2}
.ncdr-summary b{color:var(--text);font-size:1.1rem}
.ncdr-tag{display:inline-block;margin:2px 3px;padding:2px 10px;background:rgba(255,255,255,.05);border-radius:12px;font-size:.74rem}
.ncdr-item{display:flex;gap:12px;align-items:flex-start;padding:11px 13px;border:1px solid var(--bord);
 border-left-width:4px;border-radius:8px;background:var(--panel);margin-bottom:8px}
.ncdr-item.g{border-left-color:#E53845}.ncdr-item.y{border-left-color:#F09A55}.ncdr-item.b{border-left-color:#4FA3D1}
.ncdr-ic{font-weight:800;font-size:.9rem;min-width:88px;flex-shrink:0}
.ncdr-item.g .ncdr-ic{color:#FF949C}.ncdr-item.y .ncdr-ic{color:#FFD4A8}.ncdr-item.b .ncdr-ic{color:#9FD3F0}
.ncdr-bd{flex:1;min-width:0}
.ncdr-cos2{font-size:.82rem;color:#C9E0F2;line-height:1.6}
.ncdr-cos2 b{color:var(--accent);font-weight:600}
.ncdr-sum2{font-size:.72rem;color:#7FA0BE;line-height:1.55;margin-top:3px}
.ncdr-meta2{font-size:.68rem;color:var(--mute);text-align:right;flex-shrink:0;line-height:1.5}
.ncdr-note{font-size:.68rem;color:var(--mute);line-height:1.7;border-top:1px solid var(--bord);padding-top:9px;width:100%}
/* 維生中斷摺疊 */
.ncdr-life{width:100%;background:var(--panel);border:1px solid var(--bord);border-radius:8px;padding:11px 14px;margin-bottom:8px}
.ncdr-life summary{cursor:pointer;font-size:.82rem;color:#C8B08A;font-weight:700;list-style:none}
.ncdr-life summary::-webkit-details-marker{display:none}
.ncdr-life summary::before{content:'▸ ';color:var(--mute)}
.ncdr-life[open] summary::before{content:'▾ '}
.ncdr-life .li{font-size:.74rem;color:#9FBFDA;padding:4px 0 0 1.2em;line-height:1.5}
/* 雨量頁 */
.wbtn{padding:8px 18px;border:1px solid var(--bord);border-radius:7px;background:rgba(255,255,255,.03);color:var(--mute);cursor:pointer;font-family:inherit;font-size:.84rem;font-weight:700;transition:all .2s}
.wbtn:hover{color:var(--text)}
.wbtn.on{border-color:var(--accent);color:var(--accentL);background:rgba(240,154,85,.13)}
.rain-ctrl{display:flex;gap:7px;flex-wrap:wrap;width:100%;margin-bottom:2px}
.rain-main{display:flex;gap:16px;align-items:flex-start;flex-wrap:wrap;width:100%}
.rain-mapbox{flex:0 1 430px;min-width:0;max-width:460px;border:1px solid var(--bord);border-radius:10px;overflow:hidden;background:var(--mapbox)}
.rain-mapbox canvas{display:block;width:100%;height:auto}
.wind-rank-card{border:1px solid var(--bord);border-radius:8px;padding:10px;margin-bottom:10px;background:var(--softbg)}
.wind-rank-title{font-weight:800;font-size:.82rem;color:var(--text);margin-bottom:6px}
.wind-rank-row{display:grid;grid-template-columns:28px minmax(0,1fr) 72px 60px;gap:8px;align-items:center;padding:5px 0;border-top:1px solid var(--bord);font-size:.78rem}
.wind-rank-row:first-of-type{border-top:none}.wind-rank-row .name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.wind-rank-row .v{font-weight:800;text-align:right;color:var(--accentL);font-variant-numeric:tabular-nums}.wind-rank-row .time{font-size:.7rem;color:var(--mute);text-align:right}
.rain-side{flex:1 1 200px;min-width:180px;display:flex;flex-direction:column;gap:12px}
.rstat{display:flex;gap:10px}.rstat .s{flex:1;text-align:center}.rstat .s .k{font-size:.6rem;color:var(--mute)}.rstat .s .v{font-size:1.05rem;font-weight:800;font-variant-numeric:tabular-nums}
.wind-time-main{font-size:.98rem;font-weight:800;color:var(--accentL);font-variant-numeric:tabular-nums;margin-top:4px}
.wind-time-sub{font-size:.68rem;color:var(--mute);line-height:1.55;margin-top:4px}
.rscale{display:flex;flex-direction:column-reverse}.rscale .sc{display:flex;align-items:center;gap:8px;font-size:.7rem}.rscale .bar{width:18px;height:13px;flex-shrink:0}.rscale .n{color:#C9E0F2;font-variant-numeric:tabular-nums}
.rtop .trow{display:flex;justify-content:space-between;font-size:.79rem;padding:5px 0;border-top:1px solid var(--bord);font-variant-numeric:tabular-nums}.rtop .trow:first-child{border-top:none}.rtop .trow .v{font-weight:700}
.rain-load{padding:40px 10px;text-align:center;color:var(--mute);font-size:.85rem}
/* 雨量頁：觀測／預報 切換（沿用 .wbtn） */
.rf-loc{margin-bottom:10px}
.rf-loc-name{font-weight:800;font-size:.86rem;color:var(--accentL);margin-bottom:5px}
.rf-row{display:flex;gap:10px;align-items:center;padding:5px 0;border-top:1px solid var(--bord);font-size:.78rem}
.rf-row:first-child{border-top:none}
.rf-t{color:var(--mute);min-width:96px;flex-shrink:0;font-variant-numeric:tabular-nums}
.rf-pop{font-weight:800;min-width:44px;color:#9FD3F0}
.rf-qpf{font-weight:800;min-width:58px;color:#FFD4A8;font-variant-numeric:tabular-nums}
.rf-wx{flex:1;color:#C9E0F2}
.rf-temp{color:var(--mute);font-variant-numeric:tabular-nums;flex-shrink:0}
.rf-mm-note{font-size:.68rem;color:#C89A6A;border-top:1px solid var(--bord);padding-top:8px;margin-top:2px;line-height:1.6}
.rf-qpfbox{border:1px solid var(--bord);border-radius:8px;background:rgba(240,154,85,.08);padding:8px 10px;margin-bottom:8px;font-size:.78rem;color:#C9E0F2;line-height:1.55}
.rf-qpfbox b{color:#FFD4A8;font-size:.96rem}
.rf-layout{display:flex;gap:12px;width:100%;align-items:flex-start;flex-wrap:wrap}
.rf-mapbox{flex:0 1 420px;min-width:0;max-width:440px;border:1px solid var(--bord);border-radius:10px;overflow:hidden;background:var(--mapbox);position:relative}
.rf-mapbox img{display:block;width:100%;height:auto;filter:var(--map-filter)}
.rf-mapbox canvas{position:absolute;top:0;left:0;width:100%;height:100%;cursor:default}
.rf-side{flex:1 1 260px;min-width:240px;display:flex;flex-direction:column;gap:8px}
.rf-picklist{display:flex;flex-wrap:wrap;gap:5px;margin-bottom:4px}
.rf-chip{padding:4px 10px;border:1px solid var(--bord);border-radius:12px;background:rgba(255,255,255,.03);color:var(--mute);cursor:pointer;font-size:.72rem;transition:all .2s}
.rf-chip:hover{color:var(--text);border-color:#3A6A9A}
.rf-chip.sel{border-color:var(--accent);color:var(--accentL);background:rgba(240,154,85,.13)}
.ncdr48{width:100%;display:flex;flex-direction:column;gap:8px}
.ncdr48-head{display:flex;justify-content:space-between;gap:8px;align-items:baseline;flex-wrap:wrap}
.ncdr48-title{font-weight:800;font-size:.86rem;color:var(--text)}
.ncdr48-meta{font-size:.68rem;color:var(--mute);line-height:1.5}
.ncdr48-actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.ncdr48-body{display:flex;flex-direction:column;gap:8px}
.ncdr48-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:8px;width:100%}
.ncdr48-card{border:1px solid var(--bord);border-radius:8px;background:var(--panel);overflow:hidden}
.ncdr48-card img{display:block;width:100%;height:auto;background:var(--mapbox)}
.ncdr48-cap{padding:7px 8px;border-top:1px solid var(--bord);font-size:.72rem;color:var(--text);line-height:1.45}
.ncdr48-cap span{display:block;color:var(--mute);font-size:.66rem}
.ncdr48-link{color:var(--link);text-decoration:none}
.ncdr48-link:hover{text-decoration:underline}
/* 地震頁 */
.eq-layout{display:flex;gap:12px;width:100%;align-items:flex-start;flex-wrap:wrap}
.eq-mapbox{flex:0 1 420px;min-width:0;max-width:440px;border:1px solid var(--bord);border-radius:10px;overflow:hidden;background:var(--mapbox);position:relative}
.eq-mapbox img{display:block;width:100%;height:auto;filter:var(--map-filter)}
.eq-mapbox canvas{position:absolute;top:0;left:0;width:100%;height:100%}
.eq-list{flex:1 1 260px;min-width:240px;display:flex;flex-direction:column;gap:8px}
.eq-item{background:var(--panel);border:1px solid var(--bord);border-left-width:4px;border-radius:8px;padding:10px 13px;cursor:pointer;transition:border-color .2s}
.eq-item:hover{border-color:#3A6A9A}
.eq-item.sel{border-color:var(--accent)}
.eq-item .eq-mag{font-weight:800;font-size:1rem}
.eq-item .eq-time{font-size:.7rem;color:var(--mute);float:right}
.eq-item .eq-loc{font-size:.8rem;color:#C9E0F2;margin-top:2px}
.eq-item .eq-meta{font-size:.72rem;color:#7FA0BE;margin-top:3px}
.eq-int-badge{display:inline-block;padding:1px 8px;border-radius:10px;font-size:.7rem;font-weight:800;margin-left:6px}
.eq-empty{padding:30px 10px;text-align:center;color:var(--mute);font-size:.85rem}
.brief{white-space:pre-wrap;font-size:.73rem;line-height:1.7;color:#96B8D4;max-height:280px;overflow:auto}
.btns{display:flex;gap:7px;flex-wrap:wrap}
.btn{flex:1;min-width:70px;padding:8px;border:1px solid var(--bord);border-radius:6px;background:transparent;color:var(--mute);
 cursor:pointer;font-family:inherit;font-size:.76rem;letter-spacing:.04em;transition:all .2s}
.btn:hover{border-color:#3A6A9A;color:var(--text)}
.btn.primary{border-color:var(--accent);color:var(--accentL);background:rgba(240,154,85,.1)}
.btn.primary:hover{background:rgba(240,154,85,.22)}
.anim-ctrl{display:flex;gap:7px;margin-top:9px;align-items:center}
.anim-ctrl .btn{min-width:70px;flex:1}
.anim-speed{flex:1;min-width:74px;border:1px solid var(--bord);border-radius:6px;background:#06111E;color:var(--text);padding:8px;font-family:inherit;font-size:.76rem}
.leg{font-size:.7rem;color:#6A8EA8;line-height:1.8}
.leg-row{display:flex;align-items:center;gap:6px}
.leg-dot{width:9px;height:9px;border-radius:50%;flex-shrink:0}
.leg-line{width:22px;border-top:3px dashed #58E6FF;flex-shrink:0}
.ext-source{font-size:.7rem;color:#8DD7FF;line-height:1.55}
.ext-list{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:6px}
.ext-btn{border:1px solid var(--bord);border-radius:13px;background:rgba(255,255,255,.03);color:var(--mute);padding:4px 10px;font-family:inherit;font-size:.7rem;font-weight:800;cursor:pointer;transition:all .18s}
.ext-btn:hover{color:var(--text);border-color:#3A6A9A}
.ext-btn.on{color:#041019;background:var(--ext-color,#58E6FF);border-color:var(--ext-color,#9EF3FF);box-shadow:0 0 0 2px rgba(88,230,255,.16),0 0 18px rgba(88,230,255,.36)}
.ext-meta{color:#7FA0BE;font-size:.68rem;line-height:1.6}
.sat-card{width:100%;max-width:1060px}
.sat-head{display:flex;justify-content:space-between;gap:10px;align-items:baseline;flex-wrap:wrap;margin-bottom:8px}
.sat-title{font-size:.86rem;font-weight:800;color:#C9E0F2}
.sat-meta{font-size:.68rem;color:#7FA0BE;line-height:1.6}
.sat-actions{display:flex;justify-content:flex-end;margin:8px 0}
.sat-actions .btn{flex:0 0 auto;min-width:118px;padding:7px 12px}
.sat-imgwrap{width:100%;border:1px solid var(--bord);border-radius:8px;background:#06111E;overflow:hidden}
.sat-img{display:block;width:100%;height:auto;max-height:560px;object-fit:contain}
.note{font-size:.66rem;color:var(--mute);text-align:center;max-width:1060px;line-height:1.6}
@media(max-width:660px){.layout{flex-direction:column}.side{width:100%}}

/* ── 簡報模式 ─────────────────────────────── */
.bf{position:fixed;inset:0;z-index:50;background:#041019;display:none;overflow:hidden}
.bf.open{display:block}
.bf-scene{position:absolute;inset:0;display:flex;flex-direction:column;
 padding:5.5vh 6vw;opacity:0;transform:translateY(22px);
 transition:opacity .55s ease,transform .55s ease;pointer-events:none}
.bf-scene.on{opacity:1;transform:none;pointer-events:auto}
.bf-eyebrow{display:flex;align-items:center;gap:14px;color:var(--c3l);
 font-size:clamp(.7rem,1.4vw,.95rem);font-weight:700;letter-spacing:.18em}
.bf-eyebrow::before{content:'';width:44px;height:4px;background:var(--accent);border-radius:99px}
.bf-title{font-size:clamp(1.7rem,5.6vw,4.2rem);font-weight:900;line-height:1.12;
 letter-spacing:-.02em;margin-top:2.4vh}
.bf-title .ac{color:var(--accent)}
.bf-subtitle{margin-top:2vh;max-width:760px;color:#C9D8DC;
 font-size:clamp(.85rem,1.9vw,1.35rem);font-weight:350;line-height:1.6}
.bf-stamp{margin-top:2.6vh;width:fit-content;padding:12px 20px;border:1px solid rgba(242,247,245,.2);
 border-radius:8px;background:rgba(13,58,82,.72);font-size:clamp(.8rem,1.7vw,1.2rem);
 font-variant-numeric:tabular-nums}
.bf-footer{margin-top:auto;display:flex;justify-content:space-between;align-items:center;
 padding-top:2vh;border-top:1px solid rgba(145,171,183,.24);
 color:#91ABB7;font-size:clamp(.68rem,1.4vw,.95rem)}
.bf-status{display:flex;align-items:center;gap:10px;color:#F2F7F5}
.bf-dot{width:10px;height:10px;border-radius:50%;background:var(--accent);
 box-shadow:0 0 18px rgba(241,138,69,.8);animation:bfpulse 1.6s ease-in-out infinite}
@keyframes bfpulse{50%{transform:scale(1.45);opacity:.4}}
.bf-radar{position:absolute;right:-8vw;top:-14vh;width:46vw;height:46vw;max-width:620px;max-height:620px;
 border:2px solid rgba(169,217,123,.18);border-radius:50%;pointer-events:none}
.bf-radar::before,.bf-radar::after{content:'';position:absolute;border:2px solid rgba(169,217,123,.15);border-radius:50%}
.bf-radar::before{inset:15%}.bf-radar::after{inset:32%}
.bf-sweep{position:absolute;left:50%;top:50%;width:50%;height:2px;transform-origin:left center;
 background:linear-gradient(90deg,rgba(169,217,123,0),rgba(169,217,123,.85));
 animation:bfsweep 5.5s linear infinite}
@keyframes bfsweep{to{transform:rotate(360deg)}}
.bf-s2-body{display:flex;gap:3.4vw;flex:1;min-height:0;margin-top:2.6vh;align-items:flex-start}
#bf-map-slot{flex:1.35;min-width:0}
.bf-facts{flex:1;display:flex;flex-direction:column}
.bf-fact{display:grid;grid-template-columns:minmax(64px,84px) 1fr;gap:14px;align-items:center;
 padding:1.6vh 0;border-top:1px solid rgba(145,171,183,.24)}
.bf-fact-t{color:var(--c3l);font-weight:700;font-size:clamp(.72rem,1.5vw,1.05rem);font-variant-numeric:tabular-nums}
.bf-fact-x{color:#F2F7F5;font-size:clamp(.74rem,1.6vw,1.1rem);line-height:1.45;font-variant-numeric:tabular-nums}
.bf-caption{margin-top:1.8vh;color:#91ABB7;font-size:clamp(.65rem,1.3vw,.9rem);line-height:1.5}
.bf-list{margin-top:3vh;border-top:1px solid rgba(242,247,245,.22)}
.bf-item{display:grid;grid-template-columns:minmax(48px,88px) minmax(150px,38%) 1fr;align-items:center;
 min-height:11vh;border-bottom:1px solid rgba(242,247,245,.18);gap:2vw}
.bf-num{color:var(--accent);font-weight:700;font-size:clamp(1rem,2.4vw,1.7rem);font-variant-numeric:tabular-nums}
.bf-key{font-size:clamp(1rem,2.6vw,1.9rem);font-weight:800;letter-spacing:-.01em}
.bf-value{color:#C9D8DC;font-size:clamp(.76rem,1.7vw,1.2rem);font-weight:350;line-height:1.55}
.bf-cards{display:flex;gap:1.6vw;margin-top:3vh}
.bf-card{flex:1;display:flex;flex-direction:column;gap:1.4vh;min-height:24vh;padding:2.4vh 1.6vw;
 border:1px solid rgba(242,247,245,.18);border-radius:14px;background:rgba(13,58,82,.62)}
.bf-card-i{color:var(--c3l);font-weight:700;font-size:clamp(.66rem,1.4vw,.95rem);letter-spacing:.08em}
.bf-card-n{font-size:clamp(.95rem,2.2vw,1.6rem);font-weight:850;line-height:1.3}
.bf-card-d{color:#C9D8DC;font-size:clamp(.7rem,1.5vw,1rem);font-weight:350;line-height:1.5}
.bf-final{margin-top:auto;display:flex;justify-content:space-between;align-items:center;
 padding-top:2vh;border-top:1px solid rgba(145,171,183,.24)}
.bf-callout{color:var(--accent);font-size:clamp(.85rem,1.9vw,1.35rem);font-weight:800}
.bf-close{position:absolute;top:18px;right:20px;z-index:60;width:38px;height:38px;border-radius:50%;
 border:1px solid rgba(242,247,245,.3);background:rgba(4,16,25,.6);color:#C9D8DC;
 font-size:1rem;cursor:pointer;transition:all .2s}
.bf-close:hover{border-color:var(--accent);color:var(--accentL)}
.bf-dots{position:absolute;bottom:20px;left:50%;transform:translateX(-50%);z-index:60;display:flex;gap:9px}
.bf-pd{width:9px;height:9px;border-radius:50%;background:rgba(145,171,183,.3);transition:all .3s}
.bf-pd.on{background:var(--accent);transform:scale(1.3)}
.bf-hint{position:absolute;bottom:16px;right:22px;z-index:60;color:#5E82A4;font-size:.68rem}
/* 說明簡報版型（承 PDF：影響評估暨防颱建議） */
.bf-kpis{display:flex;gap:1.2vw;margin-top:3vh;flex-wrap:wrap}
.bf-kpi{min-width:150px;padding:1.8vh 1.4vw;border:1px solid rgba(242,247,245,.18);border-radius:10px;background:rgba(13,58,82,.55)}
.bf-kpi .k{color:#91ABB7;font-size:clamp(.7rem,1.4vw,1rem);margin-bottom:6px}
.bf-kpi .v{font-size:clamp(1.1rem,2.8vw,2rem);font-weight:900;font-variant-numeric:tabular-nums}
.bf-kpi .v.red{color:var(--c1l)}.bf-kpi .v.org{color:var(--accentL)}.bf-kpi .v.grn{color:var(--c3l)}
.bf-sec{color:#7FB3D6;font-size:clamp(.78rem,1.7vw,1.15rem);font-weight:800;letter-spacing:.06em;margin:2.2vh 0 1vh;border-bottom:1px solid rgba(145,171,183,.25);padding-bottom:.8vh}
.bf-kv{display:flex;justify-content:space-between;gap:2vw;padding:.9vh 0;font-size:clamp(.78rem,1.7vw,1.15rem)}
.bf-kv .k{color:#91ABB7}.bf-kv .v{font-weight:700;font-variant-numeric:tabular-nums;text-align:right}
.bf-2col{display:flex;gap:3vw;flex:1;min-height:0;margin-top:1.4vh;align-items:flex-start}
.bf-2col>.txtcol{flex:1;min-width:0}
.bf-2col>.mapcol{flex:1.25;min-width:0}
.bf-scns{display:flex;flex-direction:column;gap:1.4vh}
.bf-scn{border-left:4px solid;border-radius:8px;background:rgba(13,58,82,.5);padding:1.4vh 1.2vw}
.bf-scn .t{font-weight:900;font-size:clamp(.85rem,1.9vw,1.3rem)}
.bf-scn .d{color:#C9D8DC;font-size:clamp(.72rem,1.5vw,1rem);line-height:1.5;margin-top:.5vh}
.bf-badge{display:inline-block;padding:4px 14px;border-radius:6px;font-weight:900;font-size:clamp(.8rem,1.8vw,1.2rem);margin-left:1vw;vertical-align:middle}
.bf-bullets{margin-top:2vh}
.bf-bullet{display:flex;gap:12px;padding:1.1vh 0;font-size:clamp(.82rem,1.9vw,1.3rem);line-height:1.5;border-bottom:1px solid rgba(242,247,245,.1)}
.bf-bullet::before{content:'▸';color:var(--accent);flex-shrink:0}
.bf-warnline{margin-top:2vh;padding:1.2vh 1.4vw;border:1px solid rgba(229,56,69,.5);border-radius:8px;background:rgba(229,56,69,.08);color:#FFB0A8;font-size:clamp(.72rem,1.6vw,1.05rem)}
.bf-cols{display:flex;gap:1.6vw;margin-top:2vh}
.bf-col{flex:1;border-top:4px solid;border-radius:10px;background:rgba(13,58,82,.5);padding:1.8vh 1.4vw;min-height:30vh}
.bf-col .h{font-weight:900;font-size:clamp(.85rem,1.9vw,1.3rem);margin-bottom:1.2vh}
.bf-col .li{display:flex;gap:8px;padding:.7vh 0;color:#DCE9EE;font-size:clamp(.72rem,1.6vw,1.05rem);line-height:1.45}
.bf-col .li::before{content:'▸';flex-shrink:0;color:#91ABB7}
.bf-tl{display:flex;align-items:flex-start;margin-top:3vh;position:relative}
.bf-tl::before{content:'';position:absolute;left:2%;right:2%;top:calc(1.2vh + 26px);height:4px;background:rgba(145,171,183,.3);border-radius:2px}
.bf-node{flex:1;text-align:center;position:relative;padding-top:1.2vh}
.bf-node .top{color:#C9D8DC;font-size:clamp(.62rem,1.35vw,.92rem);line-height:1.4;min-height:5vh}
.bf-node .sq{width:16px;height:16px;border-radius:4px;margin:8px auto;position:relative;z-index:1}
.bf-node .dt{font-weight:900;font-size:clamp(.8rem,1.9vw,1.3rem);font-variant-numeric:tabular-nums}
.bf-node .lb{color:#91ABB7;font-size:clamp(.66rem,1.4vw,.95rem)}
.bf-corebox{margin-top:3vh;border:1px solid rgba(242,247,245,.16);border-radius:10px;background:rgba(13,58,82,.45);padding:1.8vh 1.8vw}
.bf-corebox .h{color:#7FB3D6;font-weight:900;font-size:clamp(.85rem,1.9vw,1.25rem);margin-bottom:1vh}
.bf-minis{display:flex;gap:1.4vw;margin-top:2vh}
.bf-mini{flex:1;border-top:4px solid;border-radius:8px;background:rgba(13,58,82,.5);padding:1.4vh 1.2vw}
.bf-mini .t{font-weight:900;font-size:clamp(.8rem,1.7vw,1.15rem)}
.bf-mini .d{color:#C9D8DC;font-size:clamp(.68rem,1.4vw,.95rem);line-height:1.5;margin-top:.6vh}
.bf-slot-note{margin-top:1vh;color:#91ABB7;font-size:clamp(.62rem,1.3vw,.88rem);line-height:1.5}
:root[data-theme="light"] .tab,
:root[data-theme="light"] .wbtn,
:root[data-theme="light"] .btn,
:root[data-theme="light"] .ext-btn,
:root[data-theme="light"] .rf-chip{background:#F6F6F6;color:#333333;border-color:#CCCCCC}
:root[data-theme="light"] .tab:hover,
:root[data-theme="light"] .btn:hover,
:root[data-theme="light"] .ext-btn:hover,
:root[data-theme="light"] .rf-chip:hover{border-color:#AAAAAA;color:#000000}
:root[data-theme="light"] .topnav-btn.on,
:root[data-theme="light"] .tab.on1,
:root[data-theme="light"] .tab.on2,
:root[data-theme="light"] .tab.on3,
:root[data-theme="light"] .wbtn.on,
:root[data-theme="light"] .rf-chip.sel{border-color:#4779B1;color:#4779B1;background:#FFFFFF}
:root[data-theme="light"] .sub,
:root[data-theme="light"] .treason,
:root[data-theme="light"] .tp-v,
:root[data-theme="light"] .ncdr-summary,
:root[data-theme="light"] .ncdr-cos2,
:root[data-theme="light"] .brief,
:root[data-theme="light"] .rscale .n,
:root[data-theme="light"] .rf-wx,
:root[data-theme="light"] .eq-item .eq-loc,
:root[data-theme="light"] .sat-title{color:#333333}
:root[data-theme="light"] .ext-source,
:root[data-theme="light"] .leg,
:root[data-theme="light"] .sat-meta,
:root[data-theme="light"] .ncdr-sum2,
:root[data-theme="light"] .eq-item .eq-meta{color:rgba(50,50,50,.8)}
:root[data-theme="light"] .rf-pop{color:#4779B1}
:root[data-theme="light"] .rf-qpf,
:root[data-theme="light"] .rf-mm-note,
:root[data-theme="light"] .rf-qpfbox b,
:root[data-theme="light"] .tact{color:#333333}
:root[data-theme="light"] .rf-qpfbox{background:#F6F6F6;color:#333333}
:root[data-theme="light"] .card,
:root[data-theme="light"] .ncdr-item,
:root[data-theme="light"] .eq-item{box-shadow:0 2px 5px 0 rgba(50,50,50,.12)}
:root[data-theme="light"] .ncdr-item.g{border-left-color:#AA3333}
:root[data-theme="light"] .ncdr-item.y{border-left-color:#D06A1E}
:root[data-theme="light"] .ncdr-item.b{border-left-color:#4779B1}
:root[data-theme="light"] .ncdr-item.g .ncdr-ic{color:#AA3333}
:root[data-theme="light"] .ncdr-item.y .ncdr-ic{color:#B85F18}
:root[data-theme="light"] .ncdr-item.b .ncdr-ic{color:#4779B1}
:root[data-theme="light"] #eq-summary{color:#4779B1!important;font-weight:700}
:root[data-theme="light"] .lbl,
:root[data-theme="light"] .board-row .k,
:root[data-theme="light"] .rf-t{color:rgba(50,50,50,.8)}
:root[data-theme="light"] .rf-loc-name,
:root[data-theme="light"] .ncdr48-title,
:root[data-theme="light"] .val{color:#000000}
:root[data-theme="light"] #rn-max,
:root[data-theme="light"] #wd-max{color:#AA3333!important}
:root[data-theme="light"] .anim-speed{background:#FFFFFF;color:var(--text)}
/* 交通停班停課頁：白底補色（原深色模式的淺字在白底對比不足） */
:root[data-theme="light"] .tp-wsc,
:root[data-theme="light"] .tp-newsitem{color:#2A2A2A}
:root[data-theme="light"] .tp-wsc.normal,
:root[data-theme="light"] .tp-v.green{color:#2F7D4F}
:root[data-theme="light"] .tp-v.red{color:#C0392B}
:root[data-theme="light"] .tp-v a{color:#2F6DA8}
:root[data-theme="light"] .tp-wsc .county{color:#AA3333;background:#FBE3E3}
:root[data-theme="light"] .tp-dgpa-row{background:#F4F4F4;border-left-color:#CCCCCC}
:root[data-theme="light"] .tp-seg.stop{color:#C0392B}
:root[data-theme="light"] .tp-seg.normal{color:#2F7D4F}
:root[data-theme="light"] .tp-seg.pending{color:#8A6D00}
:root[data-theme="light"] .tp-seg.other{color:#333333}
:root[data-theme="light"] .tp-dgpa-k.stop{color:#C0392B}
:root[data-theme="light"] .tp-dgpa-k.normal{color:#2F7D4F}
:root[data-theme="light"] .tp-dgpa-k.pending{color:#8A6D00}
    /* 2026-07-05 浮空重建：外殼改為「參考站風格浮空角色」——去背角色置中浮在右下、
       回答用白色氣泡、快捷問題浮動白藥丸、輸入為圓角懸浮列、環境檢測／語音控制收進小齒輪浮層。
       元件 id 與事件接線、後端呼叫、朗讀/語音/權限邏輯完全不動，這裡只換 HTML 結構＋CSS。 */
    .ga-fab{position:fixed;right:20px;bottom:20px;z-index:999990;width:58px;height:58px;border-radius:50%;
      background:linear-gradient(135deg,#1f4e8c,#2f6fb0);color:#fff;border:none;box-shadow:0 6px 18px rgba(0,0,0,.28);
      font-size:12px;font-weight:700;display:flex;flex-direction:column;align-items:center;justify-content:center;
      cursor:pointer;line-height:1.1;}
    .ga-fab:hover{filter:brightness(1.08);}
    .ga-fab .ga-fab-icon{font-size:20px;margin-bottom:1px;}

    /* ---- 開啟後：透明容器，由上到下堆疊 氣泡／藥丸／角色／輸入列，右對齊浮在右下 ---- */
    .ga-panel{position:fixed;right:20px;bottom:20px;z-index:999991;width:auto;max-width:92vw;max-height:86vh;
      background:transparent;border:none;box-shadow:none;border-radius:0;
      display:none;flex-direction:column;align-items:flex-end;gap:10px;overflow:visible;}
    .ga-panel.ga-open{display:flex;}

    /* 回答氣泡：白底圓角、帶尾角、深色字 */
    .ga-stage-row{display:flex;align-items:center;justify-content:flex-end;gap:8px;}
    #gaAnswerBox{max-width:230px;background:#fff;color:#25313f;border:1px solid #cfe0f2;border-radius:14px 14px 2px 14px;
      box-shadow:0 8px 22px rgba(20,50,90,.18);padding:10px 12px;font-size:12.5px;line-height:1.55;
      max-height:34vh;overflow-y:auto;}
    #gaAnswerBox:empty{display:none;padding:0;border:none;box-shadow:none;}
    /* 對話框可暫時收起：完全隱藏文字層；點題目或送出新問題時才恢復。 */
    #gaAnswerLayer.ga-answer-hidden{display:none;}
    #gaAnswerBox:not(:empty){padding-right:48px;}
    #gaAnswerCloseBtn{position:absolute;z-index:5;top:4px;right:4px;width:34px;height:34px;border:0;border-radius:50%;
      background:rgba(237,244,252,.94);color:#456b94;font-size:16px;line-height:1;cursor:pointer;pointer-events:auto;}
    #gaAnswerCloseBtn:hover{background:#dcebfa;color:#1f4e8c;}
    #gaAnswerBox:empty ~ #gaAnswerCloseBtn{display:none;}
    .ga-answer{margin-top:6px;font-size:12.5px;line-height:1.55;white-space:pre-wrap;color:#25313f;}
    .ga-tts-unavailable{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin-top:8px;padding:8px 10px;
      border:1px solid #efd28b;border-radius:9px;background:#fff7df;color:#5d4815;pointer-events:auto;}
    .ga-tts-unavailable-message{flex:1 1 220px;font-size:12px;font-weight:700;line-height:1.45;}
    .ga-tts-unavailable .ga-tts-retry-btn{flex:0 0 auto;margin:0;}
    .ga-hist{font-size:11.5px;color:#6c7f93;}
    .ga-hist b{color:#25313f;}

    /* 快捷藥丸：直向靠右堆疊，白底藍字 */
    .ga-chips{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:6px;max-width:260px;}
    .ga-chip{background:#fff;color:#1f4e8c;border:1px solid #bcd6f2;border-radius:16px;padding:6px 13px;
      font-size:12px;font-weight:600;cursor:pointer;box-shadow:0 3px 10px rgba(20,50,90,.14);white-space:nowrap;}
    .ga-chip:hover{background:#eaf2fc;}
    .ga-chip.ga-chip-more{color:#5a6b7d;border-color:#dbe4ee;font-weight:700;}
    #gaChipsMore{display:none;flex-wrap:wrap;justify-content:flex-end;gap:6px;max-width:260px;}
    #gaChipsMore.ga-open{display:flex;}

    /* 角色：去背 SVG 置中，加大並加陰影立體 */
    .ga-head-avatar-wrap{display:flex;flex-direction:column;align-items:center;gap:2px;}
    .ga-head-avatar{width:150px;height:150px;flex:0 0 auto;display:flex;align-items:center;justify-content:center;
      overflow:visible;border:none;background:transparent;box-shadow:none;
      filter:drop-shadow(0 10px 16px rgba(20,40,70,.35));}
    .ga-head-avatar svg{width:100%;height:100%;display:block;}
    .ga-head-name-sub{font-size:10.5px;font-weight:400;color:#eef4fc;text-shadow:0 1px 3px rgba(0,0,0,.35);opacity:.85;}

    /* 齒輪／收合鈕：浮在角色右上 */
    .ga-mini-btns{display:flex;gap:6px;}
    .ga-mini-btn{background:#fff;color:#1f4e8c;border:1px solid #bcd6f2;border-radius:50%;width:30px;height:30px;
      font-size:14px;cursor:pointer;box-shadow:0 3px 10px rgba(20,50,90,.16);display:flex;align-items:center;justify-content:center;}
    .ga-mini-btn:hover{background:#eaf2fc;}
    .ga-close{background:#fff;color:#1f4e8c;border:1px solid #bcd6f2;border-radius:50%;width:30px;height:30px;
      cursor:pointer;font-size:14px;line-height:1;box-shadow:0 3px 10px rgba(20,50,90,.16);}

    /* 輸入列：白色圓角懸浮列 */
    .ga-qa-input{display:flex;align-items:center;gap:4px;background:#fff;border-radius:22px;
      box-shadow:0 8px 22px rgba(20,50,90,.18);padding:5px 6px 5px 14px;width:100%;box-sizing:border-box;}
    .ga-qa-input input{flex:1;border:none;background:transparent;color:#25313f;padding:6px 2px;font-size:12.5px;outline:none;}
    .ga-qa-input .ga-round-btn{border:none;border-radius:50%;width:34px;height:34px;flex:0 0 auto;cursor:pointer;
      font-size:14px;display:flex;align-items:center;justify-content:center;}
    .ga-qa-input #gaAskBtn{background:#2f6fb0;color:#fff;}
    .ga-qa-input #gaAskBtn:hover{filter:brightness(1.1);}
    .ga-qa-input #gaVoiceAskBtn{background:#eef4fc;color:#1f4e8c;}
    .ga-qa-input #gaVoiceAskBtn:hover{background:#dcebfa;}

    /* 齒輪設定浮層：白底小卡，原「環境檢測」＋「語音控制」原封搬入 */
    #gaGearPop{display:none;position:fixed;right:20px;bottom:20px;z-index:999993;width:280px;max-width:82vw;max-height:72vh;overflow:auto;background:#fff;border-radius:14px;box-shadow:0 8px 22px rgba(20,50,90,.18);
      padding:10px 12px;font-size:12.5px;color:#25313f;max-height:50vh;overflow-y:auto;box-sizing:border-box;}
    #gaGearPop.ga-open{display:block;}
    .ga-gear-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px;}
    .ga-gear-head b{font-size:13px;color:#1f4e8c;}
    .ga-gear-close{background:#eef2f7;border:none;border-radius:50%;width:24px;height:24px;cursor:pointer;font-size:13px;color:#1f4e8c;line-height:1;}
    #gaGearPop .ga-gear-section{margin-bottom:10px;}
    #gaGearPop .ga-gear-title{font-size:11.5px;font-weight:700;color:#1f4e8c;margin-bottom:4px;}
    .ga-row{display:flex;justify-content:space-between;gap:8px;font-size:12px;padding:5px 0;
      border-bottom:1px dashed #e4ecf5;}
    .ga-row span:first-child{color:#5a6b7d;}
    .ga-ok{color:#1e9e57;font-weight:700;}
    .ga-bad{color:#d1483a;font-weight:700;}
    .ga-warn{color:#b8860b;font-weight:700;}
    .ga-btn{background:#2f6fb0;color:#fff;border:none;border-radius:9px;padding:7px 10px;font-size:12.5px;
      font-weight:700;cursor:pointer;margin:4px 4px 0 0;}
    .ga-btn:hover{filter:brightness(1.1);}
    .ga-btn.ga-secondary{background:#eef4fc;color:#1f4e8c;}
    .ga-btn.ga-danger{background:#a4402f;}
    .ga-log{margin-top:8px;background:#0f1f33;border-radius:10px;padding:8px;font-size:11.5px;
      max-height:150px;overflow-y:auto;font-family:ui-monospace,Menlo,Consolas,monospace;color:#bcd4ee;}
    .ga-log div{padding:2px 0;border-bottom:1px solid rgba(255,255,255,.08);white-space:pre-wrap;word-break:break-all;}
    .ga-switch{display:flex;align-items:center;gap:8px;font-size:12.5px;margin:6px 0;color:#25313f;}

    /* 2026-07-05 新增：慈濟智慧專案秘書 SVG 動畫人像（浮動按鈕圖 + 面板頭像，取代原 JPEG） */
    .ga-fab-avatar{width:100%;height:100%;border-radius:50%;display:flex;align-items:center;justify-content:center;overflow:hidden;}
    .ga-fab-avatar svg{width:100%;height:100%;display:block;}
    .ga-fab-emoji-fallback{position:absolute;bottom:-2px;right:-2px;font-size:13px;background:rgba(15,31,51,.85);
      border-radius:50%;width:18px;height:18px;display:flex;align-items:center;justify-content:center;
      border:1px solid rgba(255,255,255,.25);}
    /* ---- SVG 動畫人像：眨眼／浮動為常駐；點頭／揮手／開心搖擺為事件觸發 ---- */
    .gaAvEye{transform-box:fill-box;transform-origin:center;animation:gaAvBlink 4.6s ease-in-out infinite;}
    #gaAvFig .gaAvEye:nth-of-type(2), #gaFabFig .gaAvEye:nth-of-type(2){animation-delay:.05s;}
    @keyframes gaAvBlink{
      0%,92%,100%{transform:scaleY(1);}
      95%{transform:scaleY(.12);}
      97%{transform:scaleY(1);}
    }
    #gaAvFig, #gaFabFig{animation:gaAvFloat 3.2s ease-in-out infinite;}
    @keyframes gaAvFloat{
      0%,100%{transform:translateY(0);}
      50%{transform:translateY(-2px);}
    }
    #gaAvHead.talking{animation:gaAvBob .32s ease-in-out infinite;}
    @keyframes gaAvBob{
      0%,100%{transform:translateY(0) rotate(0deg);}
      50%{transform:translateY(1.5px) rotate(.6deg);}
    }
    #gaAvHand{transform-box:fill-box;transform-origin:center bottom;}
    #gaAvHand.waving{animation:gaAvWave .45s ease-in-out 4;}
    @keyframes gaAvWave{
      0%,100%{transform:rotate(0deg);}
      50%{transform:rotate(-22deg);}
    }
    #gaAvAll.happy{animation:gaAvSway .5s ease-in-out 3;}
    @keyframes gaAvSway{
      0%,100%{transform:rotate(0deg);}
      50%{transform:rotate(3deg);}
    }
    @media (max-width:480px){
      .ga-panel{right:10px;bottom:78px;width:auto;max-width:88vw;max-height:78vh;}
      .ga-fab{right:14px;bottom:14px;}
      .ga-head-avatar{width:110px;height:110px;}
      #gaAnswerBox{max-width:210px;}
      .ga-stage-row{flex-direction:column;align-items:flex-end;}
      .ga-chip{font-size:11px;padding:5px 11px;}
      #gaAnswerCloseBtn{width:40px;height:40px;top:2px;right:2px;}
      #gaAnswerBox:not(:empty){padding-right:54px;}
    }
  /*
   * 2026-07-22 半身重疊構圖：使用本案自有分層角色，只參考透明舞台與前後景原則。
   * 人物層固定在後、對話與所有控制在前；不改 renderer 、對嘴、眼睛或動作狀態機。
   */
  .ga-panel{
    right:12px !important;
    bottom:12px !important;
    width:min(340px,calc(100vw - 32px)) !important;
    height:min(480px,calc(100vh - 24px)) !important;
    height:min(480px,calc(100dvh - 24px)) !important;
    max-width:calc(100vw - 32px) !important;
    max-height:calc(100vh - 24px) !important;
    max-height:calc(100dvh - 24px) !important;
    padding:0 !important;
    overflow:visible !important;
    background:transparent !important;
    border:0 !important;
    border-radius:0 !important;
    box-shadow:none !important;
    isolation:isolate;
    box-sizing:border-box;
    pointer-events:none;
  }
  .ga-panel.ga-open{
    display:block !important;
  }
  .ga-composition{
    position:relative;
    width:100%;
    height:100%;
    overflow:visible;
    isolation:isolate;
    pointer-events:none;
  }
  .ga-avatar-visual{
    position:absolute;
    inset:0;
    z-index:1;
    overflow:hidden;
    background:transparent;
    border:0;
    pointer-events:none;
  }
  .ga-assistant-ui{
    position:absolute;
    inset:0;
    z-index:20;
    pointer-events:none;
  }
  .ga-ui-top{
    position:absolute;
    top:auto;
    bottom:80px;
    left:auto;
    right:calc(100% + 14px);
    z-index:22;
    width:min(520px,calc(100vw - 390px));
    pointer-events:none;
  }
  .ga-answer-layer{
    position:relative;
    width:100%;
    pointer-events:none;
  }
  #gaAnswerBox{
    width:100%;
    max-width:100% !important;
    max-height:min(48vh,280px) !important;
    align-self:auto;
    box-sizing:border-box;
    overflow-wrap:anywhere;
    font-size:14px;
    line-height:1.5;
    pointer-events:auto;
  }
  .ga-answer-tail{
    position:absolute;
    z-index:1;
    top:auto;
    bottom:30px;
    right:-8px;
    width:16px;
    height:16px;
    background:#fff;
    border-top:1px solid #cfe0f2;
    border-right:1px solid #cfe0f2;
    transform:rotate(45deg);
    box-shadow:5px -5px 12px rgba(20,50,90,.06);
    pointer-events:none;
  }
  #gaAnswerBox:empty + .ga-answer-tail{
    display:none;
  }
  .ga-suggestions-layer{
    position:absolute;
    left:3%;
    right:3%;
    bottom:112px;
    z-index:24;
    display:flex;
    flex-direction:column-reverse;
    gap:6px;
    pointer-events:none;
  }
  .ga-suggestions-layer .ga-chips{
    width:100%;
    max-width:none;
    justify-content:center;
    pointer-events:none;
  }
  .ga-suggestions-layer .ga-chip{
    max-width:100%;
    box-sizing:border-box;
    pointer-events:auto;
  }
  #gaChipsMore{
    width:100%;
    max-width:none;
    max-height:132px;
    justify-content:center;
    overflow-x:hidden;
    overflow-y:auto;
    overscroll-behavior:contain;
    scrollbar-width:thin;
    touch-action:pan-y;
    pointer-events:auto;
  }
  .ga-control-deck{
    position:absolute;
    left:3%;
    right:3%;
    bottom:6px;
    z-index:30;
    padding:6px;
    overflow:hidden;
    border:1px solid rgba(211,232,244,.20);
    border-radius:18px;
    background:rgba(8,28,47,.62);
    box-shadow:0 10px 30px rgba(3,18,31,.22);
    -webkit-backdrop-filter:blur(10px);
    backdrop-filter:blur(10px);
    box-sizing:border-box;
    pointer-events:auto;
  }
  .ga-control-deck .ga-qa-input{
    width:100%;
    min-width:0;
    padding:3px 4px 3px 11px;
    border:1px solid rgba(255,255,255,.42);
    box-shadow:none;
    box-sizing:border-box;
  }
  .ga-control-deck .ga-qa-input input{
    min-width:0;
  }
  .ga-control-subrow{
    display:grid;
    grid-template-columns:minmax(0,1fr) auto;
    align-items:center;
    gap:6px;
    min-width:0;
    margin-top:5px;
  }
  .ga-mini-btns{
    position:relative;
    z-index:2;
    flex:0 0 auto;
    pointer-events:auto;
  }
  .ga-avatar-meta{
    display:grid;
    grid-template-columns:minmax(0,1fr) auto;
    gap:2px 5px;
    min-width:0;
    color:#eef7fb;
    pointer-events:none;
  }
  .ga-avatar-meta .ga-head-name-sub{
    grid-column:1;
    color:#eef7fb;
    font-size:10px;
    font-weight:800;
    line-height:1.2;
    text-shadow:0 1px 2px rgba(0,0,0,.55);
    white-space:nowrap;
    overflow:hidden;
    text-overflow:ellipsis;
  }
  .ga-avatar-meta .ga-head-mode-sub{
    grid-column:1 / -1;
  }
  .ga-avatar-meta .ga-voice-mode-sub{
    grid-column:2;
    grid-row:1;
  }
  .ga-avatar-meta .ga-head-mode-sub,
  .ga-avatar-meta .ga-voice-mode-sub{
    min-width:0;
    color:#dcecf4;
    font-size:8.5px;
    line-height:1.25;
    white-space:nowrap;
    overflow:hidden;
    text-overflow:ellipsis;
  }
  .ga-avatar-meta .ga-voice-mode-sub[data-mode="rms"]{
    color:#8ff0df;
  }
  .ga-avatar-meta .ga-model-copyright{
    grid-column:1 / -1;
    min-width:0;
    color:#b9ced9;
    font-size:7.5px;
    line-height:1.2;
    white-space:nowrap;
    overflow:hidden;
    text-overflow:ellipsis;
  }
  #gaGearPop{
    pointer-events:auto;
  }
  .ga-head-avatar-wrap{
    position:absolute;
    inset:0;
    z-index:1;
    width:100%;
    height:100%;
    flex:none;
    gap:0 !important;
    pointer-events:none;
  }
  .ga-avatar-host{
    --ga-mouth-level:0;
    position:relative;
    isolation:isolate;
    overflow:hidden;
    box-sizing:border-box;
  }
  .ga-head-avatar.ga-avatar-host{
    position:absolute;
    inset:0;
    width:100% !important;
    height:100% !important;
    flex:none !important;
    overflow:hidden;
    border:0;
    border-radius:0;
    background:transparent;
    box-shadow:none;
    filter:none;
    pointer-events:none;
  }
  .ga-avatar-host .ga-original-avatar-preview,
  .ga-avatar-host .ga-svg-avatar-fallback,
  .ga-avatar-host .ga-puppet-canvas,
  .ga-avatar-host .ga-live2d-canvas{
    position:absolute;
    box-sizing:border-box;
  }
  .ga-avatar-host .ga-original-avatar-preview img{
    width:100%;
    height:100%;
    display:block;
    object-fit:cover;
    object-position:50% 50%;
    user-select:none;
    -webkit-user-drag:none;
  }
  .ga-avatar-host .ga-svg-avatar-fallback{
    align-items:center;
    justify-content:center;
  }
  .ga-avatar-host .ga-svg-avatar-fallback svg{
    width:100%;
    height:100%;
    display:block;
  }
  .ga-head-avatar .ga-original-avatar-preview img,
  .ga-head-avatar .ga-svg-avatar-fallback svg,
  .ga-head-avatar .ga-puppet-canvas:not(.ga-avatar-v2-canvas),
  .ga-head-avatar .ga-live2d-canvas{
    object-fit:contain;
  }
  .ga-head-avatar .ga-original-avatar-preview,
  .ga-head-avatar .ga-svg-avatar-fallback{
    display:none;
    z-index:1;
    left:50%;
    top:11%;
    width:74%;
    height:auto;
    aspect-ratio:1;
    transform:translateX(-50%);
    overflow:visible;
    border:0;
    border-radius:0;
    background:transparent;
    box-shadow:none;
    filter:drop-shadow(0 12px 18px rgba(13,35,57,.26));
  }
  .ga-avatar-host .ga-puppet-canvas,
  .ga-avatar-host .ga-live2d-canvas{
    z-index:1;
    display:none;
    inset:0;
    width:100% !important;
    height:100% !important;
    border-radius:0;
    transform:translate3d(0,12.5%,0) scale(2.15);
    transform-origin:50% 0;
    filter:drop-shadow(0 13px 18px rgba(13,35,57,.25));
    pointer-events:none;
  }
  /* v2 backing store 固定 1024×1536；以高度驅動、水平置中，任何 viewport 都不拉寬人物。 */
  .ga-avatar-host .ga-avatar-v2-canvas{
    left:50%;
    right:auto;
    width:auto !important;
    height:100% !important;
    max-width:none;
    transform:translate3d(-50%,12.5%,0) scale(2.15);
  }
  /* 揮手 feature flag 可回復：預設 false 仍不擋 UI；只在 host 有旗標時恢復角色互動。 */
  .ga-head-avatar.ga-wave-enabled .ga-puppet-canvas,
  .ga-head-avatar.ga-wave-enabled .ga-live2d-canvas,
  .ga-head-avatar.ga-wave-enabled .ga-original-avatar-preview,
  .ga-head-avatar.ga-wave-enabled .ga-svg-avatar-fallback{
    pointer-events:auto;
  }
  .ga-head-avatar.ga-puppet-ready .ga-puppet-canvas{
    display:block;
  }
  .ga-head-avatar.ga-puppet-ready .ga-live2d-canvas,
  .ga-head-avatar.ga-puppet-ready .ga-original-avatar-preview,
  .ga-head-avatar.ga-puppet-ready .ga-svg-avatar-fallback{
    display:none !important;
  }
  .ga-head-avatar.ga-model-ready .ga-live2d-canvas{
    display:block;
  }
  .ga-head-avatar.ga-model-ready .ga-original-avatar-preview,
  .ga-head-avatar.ga-model-ready .ga-svg-avatar-fallback{
    display:none !important;
  }
  /* 主舞台不顯示不透明 JPEG 卡片；載入失敗時改用透明原創 SVG。 */
  .ga-head-avatar.ga-model-failed .ga-original-avatar-preview{
    display:none !important;
  }
  .ga-head-avatar.ga-model-failed .ga-svg-avatar-fallback{
    display:flex !important;
  }
  .ga-head-avatar.ga-puppet-loading::before,
  .ga-head-avatar.ga-model-loading::before{
    content:attr(data-ga-loading-label);
    position:absolute;
    z-index:2;
    left:50%;
    top:49%;
    transform:translate(-50%,-50%);
    width:72%;
    padding:7px 9px;
    color:#f3fbff;
    font-size:10.5px;
    font-weight:700;
    line-height:1.45;
    text-align:center;
    border-radius:999px;
    background:rgba(8,28,47,.64);
    box-sizing:border-box;
  }
  .ga-head-avatar.ga-puppet-loading::after,
  .ga-head-avatar.ga-model-loading::after{
    content:"";
    position:absolute;
    z-index:2;
    left:calc(50% - 13px);
    top:calc(49% - 50px);
    width:26px;
    height:26px;
    border-radius:50%;
    border:3px solid rgba(132,211,222,.28);
    border-top-color:#6bd9cf;
    animation:gaLive2DSpin .8s linear infinite;
  }
  @keyframes gaLive2DSpin{
    to{transform:rotate(360deg);}
  }

  /* FAB 使用同一位 V2 男角的靜態頭肩合成，不建立第二個動畫 runtime。 */
  .ga-fab .ga-fab-avatar.ga-avatar-host{
    position:absolute;
    inset:4px;
    width:auto;
    height:auto;
    border-radius:50%;
    overflow:hidden;
    border:1px solid rgba(255,255,255,.92);
    background:transparent;
  }
  .ga-fab-v2-canvas,
  .ga-fab-v2-static-fallback{
    position:absolute;
    inset:0;
    width:100%;
    height:100%;
    display:block;
    box-sizing:border-box;
  }
  .ga-fab-v2-canvas{
    z-index:2;
    opacity:0;
    transition:opacity .12s linear;
    image-rendering:auto;
  }
  .ga-fab-v2-static-fallback{
    z-index:1;
    opacity:1;
    visibility:visible;
    object-fit:cover;
    transition:opacity .12s linear,visibility 0s linear .12s;
    user-select:none;
    -webkit-user-drag:none;
  }
  .ga-fab-avatar.ga-fab-v2-ready .ga-fab-v2-canvas{
    opacity:1;
  }
  .ga-fab-avatar.ga-fab-v2-ready .ga-fab-v2-static-fallback{
    opacity:0;
    visibility:hidden;
  }
  .ga-fab-avatar.ga-fab-v2-failed .ga-fab-v2-canvas{
    opacity:0;
    visibility:hidden;
  }
  .ga-fab-avatar.ga-fab-v2-failed .ga-fab-v2-static-fallback{
    opacity:1;
    visibility:visible;
    transition:none;
  }

  @media (max-width:639px){
    .ga-ui-top{
      top:6px;
      bottom:auto;
      left:4%;
      right:auto;
      width:92%;
    }
    .ga-answer-tail{
      top:auto;
      right:24%;
      bottom:-8px;
      border-top:0;
      border-right:1px solid #cfe0f2;
      border-bottom:1px solid #cfe0f2;
      box-shadow:5px 5px 12px rgba(20,50,90,.05);
    }
    #gaAnswerBox{
      max-height:min(24vh,142px) !important;
    }
  }

  @media (max-width:480px){
    .ga-panel{
      right:12px !important;
      bottom:12px !important;
      width:min(340px,calc(100vw - 32px)) !important;
      height:min(480px,calc(100vh - 24px)) !important;
      height:min(480px,calc(100dvh - 24px)) !important;
      max-width:calc(100vw - 32px) !important;
      max-height:calc(100vh - 24px) !important;
      max-height:calc(100dvh - 24px) !important;
      overflow:visible !important;
    }
    #gaAnswerBox{
      max-height:min(22vh,126px) !important;
      font-size:13.5px;
    }
    .ga-suggestions-layer{
      left:2%;
      right:2%;
    }
    .ga-suggestions-layer .ga-chip{
      white-space:normal;
      overflow-wrap:anywhere;
      text-align:center;
    }
    .ga-control-deck{
      left:2%;
      right:2%;
    }
    .ga-control-deck .ga-qa-input .ga-round-btn{
      width:34px;
      height:34px;
    }
  }
  @media (max-width:359px){
    #gaChipsMore{
      max-height:112px;
    }
    .ga-avatar-meta{
      grid-template-columns:minmax(0,1fr);
    }
    .ga-avatar-meta .ga-head-name-sub,
    .ga-avatar-meta .ga-model-copyright{
      display:none;
    }
    .ga-avatar-meta .ga-head-mode-sub,
    .ga-avatar-meta .ga-voice-mode-sub{
      grid-column:1;
      grid-row:auto;
    }
    .ga-mini-btn,
    .ga-close{
      width:28px;
      height:28px;
    }
  }
  @media (max-height:520px) and (orientation:landscape){
    #gaAnswerBox{
      max-height:72px !important;
      font-size:12.5px;
      line-height:1.4;
    }
    #gaChipsMore{
      max-height:52px;
    }
    .ga-suggestions-layer{
      bottom:112px;
    }
    .ga-suggestions-layer .ga-chip{
      padding:4px 9px;
      font-size:10.5px;
    }
  }
  @media (prefers-reduced-motion:reduce){
    .ga-head-avatar.ga-puppet-loading::after,
    .ga-head-avatar.ga-model-loading::after{
      animation:none !important;
    }
    #gaAvFig,
    #gaFabFig,
    #gaAvHead.talking,
    #gaAvHand.waving,
    #gaAvAll.happy,
    .gaAvEye{
      animation:none !important;
      transition:none !important;
      transform:none !important;
    }
  }
  /* 氣象測試站只接上原版人物 iframe；可見外殼、尺寸、色彩均沿用上方任務系統原碼。 */
  .ga-avatar-frame{position:absolute;right:-12px;bottom:-12px;z-index:3;width:calc(100% + 32px);height:calc(100% + 24px);border:0;background:transparent;opacity:0;transition:opacity .18s ease;pointer-events:none}
  .ga-avatar-frame.ready{opacity:1}
  #gaAvatarFallback[hidden]{display:none!important}
  #gaAvatarFallback.ga-model-failed::before{content:attr(data-ga-loading-label)}
  #gaAvatarFallback.ga-model-failed::after{display:none}
  .ga-btn:disabled,.ga-round-btn:disabled{opacity:.48;cursor:not-allowed}
  @media (prefers-reduced-motion:reduce){.ga-avatar-frame{transition:none}}
