@font-face{font-family:"Instrument Sans";src:url("fonts/instrument_sans_regular.ttf") format("truetype");font-weight:400;font-display:swap}
@font-face{font-family:"Instrument Sans";src:url("fonts/instrument_sans_medium.ttf") format("truetype");font-weight:500;font-display:swap}
@font-face{font-family:"Instrument Sans";src:url("fonts/instrument_sans_semibold.ttf") format("truetype");font-weight:600 900;font-display:swap}
@font-face{font-family:"JetBrains Mono";src:url("fonts/jetbrains_mono_regular.ttf") format("truetype");font-weight:400 900;font-display:swap}

/* Sora Semantic colors; report text uses the stronger label contrast for long reading. */
:root{
  color-scheme:light dark;
  --bg:#f3f2ef;--tile:#e8e7e1;--tile-hover:#dfded7;--field:#e2e1dd;
  --ink:#1a1a18;--secondary:#8a8882;--muted:#0000009e;
  --line:#0000001a;--line-strong:#00000029;
  --primary:#2b2b28;--on-primary:#f3f2ef;
  --vivid:#f5ea36;--on-vivid:#1a1a18;
  --target-bg:var(--vivid);--target-ring:var(--primary);
  --max:1240px;
  --sans:"Instrument Sans",-apple-system,BlinkMacSystemFont,"Noto Sans TC","PingFang TC","Microsoft JhengHei",sans-serif;
  --mono:"JetBrains Mono",monospace;
  font-family:var(--sans);font-size:16px;line-height:1.8;
}
@media(prefers-color-scheme:dark){
  :root{
    --bg:#191a1b;--tile:#232527;--tile-hover:#2c2e31;--field:#313335;
    --ink:#edeff0;--secondary:#8c8f91;--muted:#ffffffad;
    --line:#ffffff21;--line-strong:#ffffff38;
    --primary:#edeff0;--on-primary:#1b1c1d;
    --vivid:#edeff0;--on-vivid:#1b1c1d;
    --target-bg:var(--field);--target-ring:var(--vivid);
  }
}
*{box-sizing:border-box}
body{margin:0;background:var(--bg);color:var(--ink)}
a{color:inherit;text-underline-offset:4px}
a:hover{text-decoration-thickness:2px}
a:focus-visible,.table-wrap:focus-visible{outline:2px solid var(--ink);outline-offset:4px}
h1,h2,h3,p{margin-top:0}
h1,h2,h3{overflow-wrap:anywhere}
h1{font-size:1.875rem;font-weight:600;line-height:1.4;letter-spacing:-.8px;margin-bottom:12px}
h2{font-size:1.3125rem;font-weight:600;line-height:1.5;letter-spacing:-.4px;margin-bottom:16px}
h3{font-size:1.25rem;font-weight:600;line-height:1.5;letter-spacing:-.4px;margin-bottom:12px}
h2,h3{scroll-margin-top:176px}
p{margin-bottom:16px}
strong{font-weight:600}
small{font-size:.875rem}
code{font-family:var(--mono);font-size:.85em;background:var(--field);padding:2px 4px;border-radius:4px;overflow-wrap:anywhere}
ul,ol{padding-left:24px}
li{margin-bottom:8px}
.skip{position:fixed;top:-100px;left:20px;z-index:10;background:var(--bg);padding:12px}
.skip:focus{top:8px}
.masthead{position:sticky;top:0;z-index:3;background:var(--field);border-radius:0 0 30px 30px}
.masthead-inner{max-width:var(--max);margin:auto;padding:20px 32px 12px;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:16px}
.brand{font-size:1.625rem;font-weight:600;letter-spacing:-.8px;text-decoration:none;white-space:nowrap}
.header-meta{display:flex;align-items:center;gap:24px}
.edition{font-family:var(--mono);font-size:.8125rem;letter-spacing:.4px;color:var(--muted);white-space:nowrap}
.language-switch{display:flex;padding:4px;background:var(--tile);border-radius:12px}
.language-switch a{padding:4px 12px;min-height:36px;display:flex;align-items:center;font-size:.875rem;text-decoration:none;color:var(--muted);border-radius:8px}
.language-switch a[aria-current]{background:var(--bg);color:var(--ink);font-weight:600}
.masthead>nav{max-width:var(--max);margin:auto;padding:0 32px 16px;display:flex;gap:8px}
.masthead>nav a{font-size:.9375rem;min-height:44px;padding:8px 16px;display:flex;align-items:center;text-decoration:none;color:var(--muted);border-radius:12px}
.masthead>nav a:hover{color:var(--ink);background:var(--tile-hover)}
.masthead>nav a[aria-current]{color:var(--ink);background:var(--bg);font-weight:600}
.page{max-width:var(--max);margin:0 auto;padding:40px 32px 64px}
main{min-width:0}
.eyebrow{display:block;font-family:var(--mono);font-size:.8125rem;letter-spacing:1.4px;color:var(--muted);margin-bottom:8px}
.lead{font-size:1rem;color:var(--muted);max-width:48em;margin-bottom:24px}
.basis{display:flex;gap:40px;border-block:1px solid var(--line);padding:20px 0;margin-bottom:32px;color:var(--muted);font-size:.875rem}
.basis strong{display:block;font-family:var(--mono);font-size:1.25rem;line-height:1.6;color:var(--ink)}
.section-heading{display:flex;align-items:baseline;justify-content:space-between;gap:16px}
.unit{font-size:.875rem;color:var(--muted)}
section{margin-bottom:40px}
.cost-definition{color:var(--muted);max-width:65em}
.cost-definition strong{color:var(--ink)}
.table-guide{font-size:.875rem;color:var(--muted);margin-bottom:12px}
.table-wrap{overflow-x:auto;border:1px solid var(--line);border-radius:20px;background:var(--tile);margin:16px 0;overscroll-behavior-x:contain}
table{border-collapse:collapse;width:100%;font-size:1rem;font-variant-numeric:tabular-nums;line-height:1.65}
th,td{padding:16px;border-bottom:1px solid var(--line);vertical-align:top}
thead th{background:var(--field);font-size:.875rem;color:var(--muted);font-weight:500;text-align:left;white-space:nowrap}
th[scope=row]{font-weight:500;text-align:left}
tr:last-child>*{border-bottom:0}
.cost-link{font-family:var(--mono);font-size:.94em;white-space:nowrap;text-decoration-line:underline;text-decoration-style:dotted;text-decoration-color:var(--secondary);text-underline-offset:5px}
.cost-link:hover{text-decoration-style:solid;text-decoration-color:currentColor}
.comparison td,.comparison thead th:nth-child(n+3){text-align:right;white-space:nowrap}
.comparison .platform-cell{width:20%;font-size:1.25rem;font-weight:600;text-align:left;vertical-align:middle;background:var(--field)}
.comparison tbody+tbody{border-top:12px solid var(--bg)}
.comparison tbody th[scope=row]{width:27%}
.total{background:var(--field);color:var(--ink);font-weight:600}
.total th,.total .cost-link{font-weight:600}
.total>*{border-top:1px solid var(--line-strong)}
.per-user{font-size:.875rem;color:var(--muted)}
.caption{font-size:.875rem;color:var(--muted);line-height:1.85;margin-top:16px}
.mobile-costs{display:none}
.assessment{display:grid;grid-template-columns:1fr 1fr;gap:20px}
.assessment>div{padding:28px;background:var(--tile);border-radius:26px;min-width:0}
.assessment h3{font-size:1.625rem;font-weight:600;letter-spacing:-.4px}
.assessment p{color:var(--muted);min-height:3.6em}
.scale-costs{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,5rem),1fr));gap:12px;padding-top:20px;border-top:1px solid var(--line);margin:24px 0 0}
.scale-costs dt{font-size:.875rem;color:var(--muted);margin-bottom:4px}
.scale-costs dd{margin:0}
.scale-costs dd span{display:block;font-size:.8125rem;color:var(--muted)}
.cost-split{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));border-radius:26px;background:var(--tile);overflow:hidden}
.cost-split>div{padding:24px 28px;display:flex;flex-direction:column;gap:4px}
.cost-split>div+div{border-left:1px solid var(--line)}
.cost-split strong{font-size:1.875rem;line-height:1.6}
.cost-split small{color:var(--muted)}
.cost-split .sum{background:var(--field);color:var(--ink)}
.note{margin-top:24px;border-left:2px solid var(--line-strong);padding-left:16px;font-size:.9375rem}
.note p{margin:4px 0;color:var(--muted)}
.report-links{display:grid;grid-template-columns:1fr 1fr;gap:20px}
.report-links>a{display:flex;gap:20px;padding:28px;border:1px solid transparent;border-radius:26px;text-decoration:none;background:var(--tile)}
.report-links>a>div{min-width:0;overflow-wrap:anywhere}
.report-links>a:hover{border-color:var(--line-strong);background:var(--tile-hover)}
.report-number{font-family:var(--mono);font-size:1.5rem;color:var(--muted);line-height:1.4}
.report-links h3{font-size:1.25rem}
.report-links p{color:var(--muted);font-size:.9375rem}
.link-label{font-size:.875rem;text-decoration:underline;text-underline-offset:5px}
.with-toc{display:grid;grid-template-columns:200px minmax(0,1fr);gap:40px}
.toc{position:sticky;top:176px;align-self:start;font-size:.875rem}
.toc nav{display:flex;flex-direction:column;gap:12px;margin:20px 0 32px}
.toc a{text-decoration:none;color:var(--muted)}
.toc a:hover{color:var(--ink);text-decoration:underline}
.toc .download{display:inline-block;border-top:1px solid var(--line);padding-top:16px}
.report h1+p,.report h1+p+p{font-size:.875rem;color:var(--muted)}
.report h2{padding-top:32px;border-top:1px solid var(--line);margin-top:40px}
.report h3{margin-top:28px}
.report p{overflow-wrap:anywhere}
.report th,.report td{padding:12px 16px;min-width:100px}
.report th:first-child,.report td:first-child{min-width:145px}
.report table{font-size:.9375rem}
.report td[align=right]{font-family:var(--mono);font-size:.93em;white-space:nowrap}
.report a{font-size:inherit}
.report p:has(>a){line-height:1.95}
.report tr:has(strong){background:var(--field)}
footer{max-width:var(--max);margin:0 auto;padding:24px 32px 32px;border-top:1px solid var(--line);display:flex;justify-content:space-between;gap:20px;color:var(--muted);font-size:.8125rem}

/* Emphasis is restricted to the linked figure, never the whole row or title. */
.cost-target{display:inline-block;position:relative;border-radius:4px;scroll-margin:176px 24px}
.cost-target:focus{outline:none}
.cost-highlight{animation:cost-target-pulse 2s ease-in-out;z-index:1}
@keyframes cost-target-pulse{
  0%,50%,100%{background-color:transparent;box-shadow:0 0 0 6px transparent;outline:2px solid transparent;outline-offset:6px}
  12%,38%,62%,88%{background-color:var(--target-bg);box-shadow:0 0 0 6px var(--target-bg);outline:2px solid var(--target-ring);outline-offset:6px}
}
@media(prefers-reduced-motion:reduce){.cost-highlight{animation-name:cost-target-hold}}
@keyframes cost-target-hold{
  0%,85%{background-color:var(--target-bg);box-shadow:0 0 0 6px var(--target-bg);outline:2px solid var(--target-ring);outline-offset:6px}
  100%{background-color:transparent;box-shadow:0 0 0 6px transparent;outline:2px solid transparent;outline-offset:6px}
}
@media(max-width:1000px){
  .with-toc{grid-template-columns:1fr;gap:24px}
  .toc{position:static;border-bottom:1px solid var(--line);padding-bottom:20px}
  .toc nav{flex-direction:row;flex-wrap:wrap;gap:8px 20px;margin:12px 0}
  .toc .download{border:0;padding:4px 0}
  .assessment>div{padding:24px}
  .comparison th,.comparison td{padding:12px}
  .comparison tbody th[scope=row]{width:auto}
}
@media(max-width:760px){
  .desktop-costs{display:none}
  .mobile-costs{display:grid;gap:20px}
  .scenario-card{margin:0;border:1px solid var(--line);border-radius:26px;overflow-x:auto;background:var(--tile)}
  .scenario-title{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:16px 20px;background:var(--field)}
  .scenario-title h3{font-family:var(--mono);font-size:1.25rem;font-weight:400;line-height:1.4;margin:0;white-space:nowrap}
  .scenario-title h3 span{font-family:var(--sans);font-size:.875rem}
  .scenario-title>span{font-size:.875rem;color:var(--muted)}
  .scenario-card table{font-size:.9375rem}
  .scenario-card td,.scenario-card thead th:not(:first-child){text-align:right;white-space:nowrap}
  .scenario-card thead th{font-size:.875rem;background:var(--tile)}
  .scenario-card td,.scenario-card th{padding:12px 16px}
  .scenario-card .per-user{font-size:.875rem}
  .assessment,.report-links{grid-template-columns:1fr}
  .assessment p{min-height:0}
  .cost-split{grid-template-columns:1fr}
  .cost-split>div{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:4px 12px;align-items:center;padding:20px 24px;overflow-wrap:anywhere}
  .cost-split>div+div{border-left:0;border-top:1px solid var(--line)}
  .cost-split strong{grid-column:2;grid-row:1/3;font-size:1.625rem}
  .cost-split small{grid-column:1}
  .section-heading{display:block}
  .unit{display:block;margin-top:-8px;margin-bottom:16px}
  .report table{min-width:560px}
  .report .table-wrap::before{content:"詳細表格可左右滑動";display:block;padding:12px 16px;font-size:.875rem;color:var(--muted);background:var(--field);position:sticky;left:0}
  :lang(en) .report .table-wrap::before{content:"Scroll horizontally to view all columns"}
}
@media(max-width:600px){
  .masthead-inner{padding:16px 20px 12px;gap:12px}
  .header-meta{gap:12px}
  .header-meta .edition{display:none}
  .language-switch a{padding:4px 8px}
  .masthead>nav{padding:0 12px 12px;gap:4px;overflow-x:auto}
  .masthead>nav a{font-size:.875rem;padding:8px;white-space:nowrap}
  .page{padding:28px 24px 40px}
  .basis{gap:12px;justify-content:space-between;flex-wrap:wrap;font-size:.875rem}
  .basis strong{font-size:1rem}
  .basis>span{flex:1 1 6rem;min-width:0;overflow-wrap:anywhere}
  .scenario-card td,.scenario-card th{padding:12px 8px}
  .scenario-card th:first-child{width:30%}
  .scenario-card td{width:35%}
  .scenario-card .cost-link{font-size:.875rem}
  .scale-costs{gap:8px}
  .scale-costs .cost-link{font-size:.875rem}
  .assessment>div{padding:24px 20px}
  .report-links>a{padding:24px 20px;gap:16px}
  .report-number{font-size:1.25rem}
  footer{padding-inline:24px;flex-direction:column;gap:4px}
}
@media print{
  :root{color-scheme:light;--bg:#fff;--tile:#fff;--ink:#111;--muted:#444;--line:#bbb;--field:#eee;--primary:#111;--on-primary:#fff;font-size:11pt}
  .masthead,.toc,.skip,.download,footer,.mobile-costs{display:none}
  .desktop-costs{display:block}
  .page,.with-toc{display:block;padding:0;max-width:none}
  .report h1{font-size:23pt}
  h2{break-after:avoid}
  tr,.assessment,.cost-split{break-inside:avoid}
  .table-wrap{overflow:visible;border-radius:0}
  .report .table-wrap::before{display:none}
  table,.report table{min-width:0;font-size:9pt}
  .report th,.report td{min-width:0;padding:8px}
  .cost-link,a{text-decoration:none}
  .cost-highlight{animation:none}
  .report h2{margin-top:24px;padding-top:20px}
  section{margin-bottom:24px}
}
