.tools-intro{padding-block:20px 32px}.tools-intro h1{font-size:clamp(2rem,3.4vw,3.1rem);line-height:1.35;margin-bottom:14px;letter-spacing:-.025em}.tools-intro>p{max-width:78ch;margin-bottom:0;color:var(--ink-2);font-size:1rem}.tools-directory{padding-bottom:80px}.tools-directory>h2{font-size:1.45rem;margin-bottom:24px}.tools-entry{display:grid;grid-template-columns:70px minmax(0,1fr) 240px;gap:28px;padding-block:32px;border-block:1px solid var(--line);align-items:start}.tools-entry h3{font-size:1.55rem;line-height:1.4}.tools-entry p{max-width:65ch;color:var(--ink-2)}.tools-entry-symbol{color:var(--blue);padding-top:4px}.tools-entry-facts{margin:0;padding-left:20px;font-size:.9rem;line-height:2.2;color:var(--ink-2)}
.cctv-workspace{display:grid;grid-template-columns:minmax(0,1fr) 340px;gap:32px;align-items:start;padding-bottom:60px}.cctv-workspace [hidden]{display:none!important}.cctv-workspace button,.cctv-workspace input,.cctv-workspace select,.cctv-workspace textarea{caret-color:var(--blue);font-variant-numeric:tabular-nums}.cctv-workspace ::selection{background:#dceaff;color:#102033}.cctv-workspace input:focus-visible,.cctv-workspace select:focus-visible,.cctv-workspace textarea:focus-visible,.cctv-workspace button:focus-visible{outline:3px solid var(--blue);outline-offset:3px}.cctv-mode-switch{border:0;padding:0;margin:0 0 24px;display:grid;grid-template-columns:1fr 1fr;gap:0;background:var(--soft);border-radius:var(--radius-control)}.cctv-mode-switch label{position:relative;cursor:pointer}.cctv-mode-switch input{position:absolute;opacity:0;inset:0;width:100%;height:100%;margin:0;cursor:pointer}.cctv-mode-switch span{display:flex;align-items:center;justify-content:center;padding:13px 12px;min-height:52px;text-align:center;border:1px solid var(--line);color:var(--ink-2);font-weight:500;font-size:.94rem;line-height:1.5}.cctv-mode-switch label:first-of-type span{border-radius:8px 0 0 8px}.cctv-mode-switch label:last-of-type span{border-radius:0 8px 8px 0}.cctv-mode-switch input:checked+span{background:var(--navy);border-color:var(--navy);color:#fff}.cctv-mode-switch input:focus-visible+span{outline:3px solid var(--blue);outline-offset:3px;position:relative;z-index:1}.cctv-target-grid{display:grid;grid-template-columns:1fr 1fr;gap:20px;margin-bottom:32px}.cctv-field{min-width:0}.cctv-field>label{display:block;font-weight:500;font-size:.86rem;line-height:1.5;margin-bottom:8px;color:var(--ink)}.cctv-field input,.cctv-field select{width:100%;min-width:0;height:48px;border:1px solid #afbfcd;border-radius:var(--radius-control);background:#fff;color:var(--ink);font-size:1rem;padding:10px 12px}.cctv-field input:hover,.cctv-field select:hover{border-color:#627a90}.cctv-field input[readonly]{background:#edf3f9;color:#23374a}.cctv-field input[aria-invalid=true],.cctv-field select[aria-invalid=true]{border-color:var(--danger);outline-color:var(--danger)}.cctv-input-unit{position:relative}.cctv-input-unit input{padding-right:58px}.cctv-input-unit>span{position:absolute;right:30px;top:50%;transform:translateY(-50%);pointer-events:none;font-size:.8rem;color:#475d70}.cctv-field small,.cctv-help{display:block;color:#475d70;font-size:.76rem;line-height:1.7;margin-top:8px}.cctv-section-title h2{font-size:1.3rem;line-height:1.5;margin-bottom:5px}.cctv-section-title p{font-size:.84rem;color:#475d70;margin-bottom:18px}.cctv-group{padding:22px 0 24px;border:0;border-top:1px solid var(--line);margin:0;min-width:0}.cctv-group-heading{display:flex;justify-content:space-between;gap:16px;align-items:center;margin-bottom:18px}.cctv-group h3{font-size:1rem;margin:0}.cctv-group-fields{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px 16px}.cctv-remove-group,.cctv-text-button{display:inline-flex;align-items:center;justify-content:center;min-height:44px;background:#fff;border:1px solid #afbfcd;border-radius:var(--radius-control);color:var(--blue-dark);font-size:.84rem;font-weight:500;line-height:1.6;padding:10px 14px;white-space:normal;text-align:center;overflow-wrap:anywhere}.cctv-remove-group:hover,.cctv-text-button:hover{background:var(--soft-blue);border-color:var(--blue-dark)}.cctv-remove-group:active,.cctv-text-button:active{background:#dceaff}.cctv-remove-group{color:var(--danger);border-color:#d7a39d;min-width:64px;padding:10px 12px}.cctv-remove-group:hover{color:var(--danger);border-color:var(--danger);background:#fff3ef}.cctv-remove-group:disabled{opacity:.55;cursor:default;background:#fff;border-color:#d7a39d}.cctv-bitrate-field{grid-column:span 2}.cctv-bitrate-source{grid-column:1/-1;margin:0;color:#475d70;font-size:.76rem;line-height:1.7}.cctv-bitrate-source a,.cctv-guide a,.cctv-faq a{color:var(--blue-dark);text-decoration:underline;text-underline-offset:4px}.cctv-add-group{display:inline-flex;align-items:center;gap:8px;background:#fff;color:var(--blue-dark);border:1px solid #afbfcd;border-radius:8px;padding:10px 14px;font-size:.85rem;min-height:44px}.cctv-add-group:hover{background:var(--soft-blue)}.cctv-add-group:disabled,.cctv-form-actions button:disabled{opacity:.55;cursor:default;transform:none}.cctv-form-actions{display:flex;align-items:center;flex-wrap:wrap;gap:14px 22px;margin-top:24px}.cctv-dirty{font-size:.76rem;color:#79500f;flex-basis:100%}.cctv-error-summary,.cctv-shared-notice,.cctv-notice{background:#fff3ef;color:#8a2319;border:1px solid #e4a79e;padding:16px;border-radius:8px;font-size:.86rem;line-height:1.7}.cctv-error-summary{margin-top:20px}.cctv-error-summary ul{margin-bottom:0;padding-left:22px}.cctv-shared-notice,.cctv-notice{grid-column:1/-1}.cctv-shared-notice.is-restored{background:#edf6ff;color:#174d79;border-color:#b1cee8}.cctv-result{position:sticky;top:108px;background:#f0f5fb;border:1px solid #cfdeec;border-radius:16px;padding:26px 24px;color:var(--ink);min-width:0}.cctv-result h2{font-size:1.12rem;line-height:1.5;margin:0 0 20px}.cctv-result-context{color:#334f69;font-size:.82rem;line-height:1.7;margin-bottom:12px}.cctv-result-main{display:flex;align-items:baseline;gap:10px;margin:0;color:var(--navy);font-variant-numeric:tabular-nums;flex-wrap:wrap;line-height:1.15}.cctv-result-main output{font-size:clamp(2.2rem,3.8vw,3.2rem);font-weight:500;overflow-wrap:anywhere}.cctv-result-main>span{font-size:1.05rem}.cctv-result-caption{font-size:.82rem;line-height:1.7;color:#334f69;margin-block:12px 24px}.cctv-result-details{margin:0;font-size:.8rem}.cctv-result-details>div{display:flex;align-items:start;justify-content:space-between;gap:18px;border-top:1px solid #cfdeec;padding-block:12px}.cctv-result-details dt{color:#334f69;max-width:62%}.cctv-result-details dd{margin:0;text-align:right;color:var(--ink);font-weight:500;overflow-wrap:anywhere;min-width:0;font-variant-numeric:tabular-nums}.cctv-result-note{font-size:.76rem;line-height:1.75;color:#334f69;margin-block:14px 20px}.cctv-result-actions{display:flex;flex-wrap:wrap;gap:10px}.cctv-result-actions>.button{flex:1 1 120px;white-space:normal;text-align:center;background:#fff}.cctv-result-actions>.cctv-text-button{flex-basis:100%;text-align:center}.cctv-result-footnote{font-size:.72rem;color:#334f69;line-height:1.8;margin:20px 0 0}.cctv-action-status{font-size:.8rem;margin:12px 0 0;color:#174d79}.cctv-result textarea{width:100%;border:1px solid #afbfcd;border-radius:8px;padding:10px;font-size:.78rem;color:var(--ink)}#cctv-copy-fallback label{font-size:.8rem}.cctv-result.is-stale #cctv-result-content{opacity:.48}.cctv-guide{display:grid;grid-template-columns:1fr 1fr;gap:32px 48px;padding-block:42px 60px;border-top:1px solid var(--line)}.cctv-guide>div:first-child{grid-column:1/-1;max-width:80ch}.cctv-guide h2,.cctv-faq>h2{font-size:clamp(1.5rem,2.5vw,2.1rem);line-height:1.5;margin-bottom:16px}.cctv-guide h3,.cctv-references h3{font-size:1.05rem;line-height:1.5}.cctv-guide p,.cctv-faq p{font-size:.9rem;color:var(--ink-2);line-height:1.9}.cctv-formulas p{overflow-wrap:anywhere;font-variant-numeric:tabular-nums}.cctv-formulas h3:not(:first-child){margin-top:28px}.cctv-example{background:var(--soft);padding:24px;border-radius:12px;align-self:start}.cctv-faq{padding-bottom:72px;max-width:1000px}.cctv-faq details{border-bottom:1px solid var(--line);padding:18px 0}.cctv-faq summary{cursor:pointer;font-weight:500;font-size:.96rem;padding-right:20px}.cctv-faq details p{margin:16px 0 0;max-width:80ch}.cctv-references{padding-top:32px}.cctv-references ul{display:flex;flex-direction:column;align-items:flex-start;gap:12px;list-style:none;margin:0 0 20px;padding:0;font-size:.82rem;line-height:1.7;overflow-wrap:anywhere}.cctv-references li{max-width:100%}.cctv-faq a.button{text-decoration:none}.cctv-faq a.button-primary{color:#fff}.cctv-resource-button{flex-direction:column;align-items:flex-start;gap:4px;text-align:left;max-width:100%;padding:12px 16px}.cctv-resource-button small{font-size:.74rem;font-weight:400;line-height:1.7;color:#475d70}.cctv-references a:focus-visible{outline:3px solid var(--blue);outline-offset:3px}.cctv-references>.button-primary{margin-top:8px}.cctv-references>p{font-size:.76rem;color:#475d70}.cctv-print-summary{white-space:pre-wrap;font-variant-numeric:tabular-nums}
@media(min-width:861px) and (max-width:1120px){.cctv-workspace{grid-template-columns:minmax(0,1fr) 300px;gap:24px}.cctv-group-fields{grid-template-columns:repeat(2,minmax(0,1fr))}.cctv-bitrate-field{grid-column:auto}.cctv-result{padding:22px 18px}}
@media(max-width:860px){.cctv-workspace{grid-template-columns:1fr;gap:28px}.cctv-result{position:static}.cctv-result-main output{font-size:2.8rem}.cctv-result-details dt{max-width:70%}.tools-entry{grid-template-columns:54px 1fr}.tools-entry-facts{grid-column:2}.cctv-guide{gap:24px;grid-template-columns:1fr}.cctv-guide>div:first-child{grid-column:auto}}
@media(max-width:540px){.tools-intro{padding-top:12px;padding-bottom:24px}.tools-intro h1{font-size:1.8rem}.tools-intro>p{font-size:.9rem}.cctv-mode-switch span{font-size:.8rem;padding:12px 8px}.cctv-target-grid{gap:14px}.cctv-field>label{font-size:.78rem}.cctv-target-grid .cctv-field>label{min-height:36px}.cctv-group-fields{grid-template-columns:repeat(2,minmax(0,1fr));gap:16px 12px}.cctv-bitrate-field{grid-column:auto}.cctv-field input,.cctv-field select{font-size:1rem;padding-inline:9px}.cctv-input-unit input{padding-right:45px}.cctv-input-unit>span{right:24px;font-size:.7rem}.cctv-field small,.cctv-help{font-size:.72rem}.cctv-result{padding:22px}.tools-entry{grid-template-columns:1fr;gap:14px}.tools-entry-symbol{display:none}.tools-entry-facts{grid-column:auto}.tools-entry h3{font-size:1.3rem}.cctv-example{padding:20px}}
@media(prefers-reduced-motion:reduce){.cctv-workspace *, .tools-directory *{scroll-behavior:auto;transition:none!important}}

/* Multiple recording resolutions use the same calculation and shared-state model. */
.cctv-resolution-builder{padding:20px;background:var(--soft);border-radius:12px;margin-bottom:18px}.cctv-resolution-builder h3{font-size:.95rem;margin-bottom:16px;line-height:1.5}.cctv-resolution-fields{display:grid;grid-template-columns:minmax(0,1.4fr) minmax(100px,.65fr) auto;gap:14px;align-items:end}.cctv-resolution-fields .cctv-add-group{min-height:48px;white-space:nowrap}.cctv-resolution-builder>.cctv-text-button{display:block;text-align:left;line-height:1.7;margin-top:12px}.cctv-resolution-builder>.cctv-help{margin-bottom:0}.cctv-builder-error{color:var(--danger);font-size:.82rem;margin:12px 0 0}.cctv-group-overview{font-size:.86rem;color:var(--ink-2);margin-block:18px 12px;font-variant-numeric:tabular-nums}.cctv-group h3{line-height:1.6}.cctv-group-breakdown{grid-column:1/-1;min-width:0;border-top:1px solid var(--line);padding-top:28px}.cctv-group-breakdown h2{font-size:1.35rem;line-height:1.5;margin-bottom:8px}.cctv-group-breakdown>p{font-size:.84rem;line-height:1.8;color:var(--ink-2);margin-bottom:18px}.cctv-breakdown-scroll{max-width:100%;overflow-x:auto;border:1px solid var(--line);border-radius:12px;scrollbar-color:#7389a0 var(--soft);scrollbar-width:thin}.cctv-breakdown-scroll:focus-visible{outline:3px solid var(--blue);outline-offset:4px}.cctv-breakdown-table{width:100%;min-width:780px;border-collapse:collapse;font-size:.85rem;font-variant-numeric:tabular-nums;line-height:1.7}.cctv-breakdown-table th,.cctv-breakdown-table td{padding:16px 18px;border-bottom:1px solid var(--line);text-align:right;vertical-align:top}.cctv-breakdown-table th:first-child{text-align:left;width:40%}.cctv-breakdown-table thead{background:var(--soft);color:var(--ink-2)}.cctv-breakdown-table thead th{font-weight:500;white-space:nowrap}.cctv-breakdown-table th span,.cctv-breakdown-table th small{display:block;font-size:.75rem;font-weight:400;color:#475d70}.cctv-breakdown-table tbody th{font-weight:500}.cctv-breakdown-table tfoot{background:var(--soft-blue);color:var(--navy);font-weight:500}.cctv-breakdown-table tfoot th,.cctv-breakdown-table tfoot td{border-bottom:0}.cctv-group-breakdown.is-stale table{opacity:.48}.cctv-group-breakdown>.cctv-dirty{color:#79500f}
@media(max-width:1120px){.cctv-resolution-fields{grid-template-columns:1fr 1fr}.cctv-resolution-fields .cctv-add-group{grid-column:1/-1;justify-content:center}}
@media(max-width:540px){.cctv-resolution-builder{padding:16px}.cctv-resolution-fields{grid-template-columns:minmax(0,1.4fr) minmax(0,1fr);gap:12px}.cctv-resolution-fields .cctv-field>label{min-height:36px}.cctv-group-heading{align-items:start}.cctv-group h3{font-size:.9rem}.cctv-remove-group{flex-shrink:0}.cctv-group-breakdown h2{font-size:1.2rem}.cctv-breakdown-table{font-size:.82rem}.cctv-breakdown-table th,.cctv-breakdown-table td{padding:13px 14px}}
@media print{.cctv-group-breakdown{display:none!important}}
.cctv-result-column{min-width:0;align-self:stretch}
@media print{.cctv-result-column{display:none!important}}
.cctv-group-breakdown>.cctv-table-scroll-hint{display:none;color:var(--blue-dark);font-size:.84rem;font-weight:500}
@media(max-width:860px){.cctv-group-breakdown>.cctv-table-scroll-hint{display:block}}

/* Branded report follows the editable A4 Figma layout. */
@page{size:A4 portrait;margin:12mm}
@media print{
  .utility-bar,.site-header,.site-footer,.prefooter-cta,.cookie-panel,.cookie-consent-status,.breadcrumb,.cctv-intro,.cctv-form,.cctv-result,.cctv-guide,.cctv-faq,.cctv-shared-notice,.skip-link,.cctv-group-breakdown,.cctv-result-column{display:none!important}
  html,body{background:#fff!important;margin:0!important;padding:0!important;color:#0b1f3a;font-size:9pt}
  main{padding:0!important;margin:0!important;min-height:0!important}
  .cctv-workspace{display:block;width:100%;max-width:none;margin:0;padding:0}
  .cctv-workspace .cctv-print-summary{display:block!important;white-space:normal;font-size:9pt;line-height:1.6;color:#0b1f3a;overflow-wrap:anywhere;font-variant-numeric:tabular-nums;-webkit-print-color-adjust:exact;print-color-adjust:exact}
  .cctv-print-summary p,.cctv-print-summary h2,.cctv-print-summary h3,.cctv-print-summary dl{margin:0}
  .cctv-report-header{display:flex;align-items:center;justify-content:space-between;gap:24px;margin-bottom:22px;break-inside:avoid}
  .cctv-report-header img{width:194px;height:auto;max-width:38%;object-fit:contain}
  .cctv-report-meta{text-align:right;color:#52677b;font-size:8pt;line-height:1.8}
  .cctv-report-title{margin-bottom:20px;break-inside:avoid}
  .cctv-report-title h2{font-size:20pt;line-height:1.5;font-weight:600;margin-bottom:5px}
  .cctv-report-title p{color:#52677b;font-size:10pt}
  .cctv-report-hero{display:grid;grid-template-columns:minmax(0,1fr) minmax(140px,.5fr);align-items:center;gap:24px;padding:20px 24px;background:#f3f7fa;border-radius:12px;margin-bottom:20px;break-inside:avoid}
  .cctv-report-main>p:first-child,.cctv-report-period>p:first-child{font-size:9pt;color:#52677b}
  .cctv-report-main>p:nth-child(2){font-size:31pt;font-weight:500;line-height:1.4;overflow-wrap:anywhere}
  .cctv-report-period>p:nth-child(2){font-size:23pt;font-weight:500;line-height:1.5;overflow-wrap:anywhere}
  .cctv-report-main>p:last-child,.cctv-report-period>p:last-child{font-size:8pt;color:#52677b}
  .cctv-report-metrics{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:20px;margin-bottom:22px!important;break-inside:avoid}
  .cctv-report-metrics dt{font-size:8pt;color:#52677b;margin-bottom:4px}
  .cctv-report-metrics dd{font-size:13pt;font-weight:500;margin:0;overflow-wrap:anywhere}
  .cctv-report-table{width:100%;border-collapse:collapse;table-layout:fixed;font-size:8pt;line-height:1.6;margin-bottom:22px}
  .cctv-report-table caption{text-align:left;font-size:11pt;font-weight:500;padding-bottom:10px;caption-side:top}
  .cctv-report-table th,.cctv-report-table td{text-align:right;vertical-align:top;padding:10px 9px;border-bottom:1px solid #d9e4ed;overflow-wrap:anywhere}
  .cctv-report-table th:first-child{width:46%;text-align:left}
  .cctv-report-table th:nth-child(2){width:8%}
  .cctv-report-table th:nth-child(3){width:17%}
  .cctv-report-table th:nth-child(4){width:29%}
  .cctv-report-table thead{display:table-header-group;background:#0b1f3a;color:#fff}
  .cctv-report-table thead th{font-weight:500}
  .cctv-report-table tbody th{font-weight:500}
  .cctv-report-table small{display:block;font-size:7.3pt;font-weight:400;color:#52677b;line-height:1.7;margin-top:3px}
  .cctv-report-table tr{break-inside:avoid}
  .cctv-report-table tfoot{display:table-row-group;background:#f3f7fa;font-weight:500}
  .cctv-report-notes{border-top:1px solid #d9e4ed;padding-top:16px;break-inside:avoid;color:#52677b;font-size:8pt;line-height:1.8}
  .cctv-report-notes h3{font-size:11pt;font-weight:500;color:#0b1f3a;margin-bottom:8px}
  .cctv-report-notes p+p{margin-top:5px}
  .cctv-report-footer{margin-top:24px;break-inside:avoid;font-size:7.5pt;line-height:1.8;color:#52677b}
  .cctv-report-footer p:first-child{font-size:9pt;font-weight:500;color:#0b1f3a}
  .cctv-report-footer a{color:#0f56bd;text-decoration:none;overflow-wrap:anywhere}
  #cctv-report-stale{border:1px solid #d9e4ed;padding:20px;margin-block:20px;font-size:12pt}
}
@media print{.cctv-report-value strong{font-weight:500}.cctv-report-value span{margin-left:8px}.cctv-report-groups>h3{font-size:11pt;font-weight:500;margin-bottom:10px}.cctv-report-table thead small{color:#fff}}
@media print{.cctv-report-main>p:nth-child(2),.cctv-report-period>p:nth-child(2){color:#0b1f3a}}

@media print{
  .cctv-print-summary[data-multiple=true] .cctv-report-header{margin-bottom:14px}
  .cctv-print-summary[data-multiple=true] .cctv-report-header img{width:160px}
  .cctv-print-summary[data-multiple=true] .cctv-report-title{margin-bottom:14px}
  .cctv-print-summary[data-multiple=true] .cctv-report-title h2{font-size:18pt}
  .cctv-print-summary[data-multiple=true] .cctv-report-hero{padding:14px 20px;margin-bottom:16px}
  .cctv-print-summary[data-multiple=true] .cctv-report-main>p:nth-child(2){font-size:28pt}
  .cctv-print-summary[data-multiple=true] .cctv-report-metrics{margin-bottom:16px!important}
  .cctv-print-summary[data-multiple=true] .cctv-report-table{margin-bottom:16px}
  .cctv-print-summary[data-multiple=true] .cctv-report-table th,.cctv-print-summary[data-multiple=true] .cctv-report-table td{padding:8px}
  .cctv-print-summary[data-multiple=true] .cctv-report-table small{font-size:7pt;line-height:1.6;margin-top:2px}
  .cctv-print-summary[data-multiple=true] .cctv-report-notes{padding-top:12px;font-size:7.5pt;line-height:1.7}
  .cctv-print-summary[data-multiple=true] .cctv-report-footer{margin-top:16px;font-size:7pt}
}
@media print{
  .cctv-report-table th:first-child{width:44%}.cctv-report-table th:nth-child(2){width:10%}
  .cctv-report-notes{break-after:avoid}
  .cctv-print-summary[data-multiple=true] .cctv-report-title h2{font-size:17pt}
  .cctv-print-summary[data-multiple=true] .cctv-report-hero{padding:10px 16px;margin-bottom:12px}
  .cctv-print-summary[data-multiple=true] .cctv-report-main>p:nth-child(2){font-size:26pt}
  .cctv-print-summary[data-multiple=true] .cctv-report-metrics dd{font-size:11pt}
  .cctv-print-summary[data-multiple=true] .cctv-report-table th,.cctv-print-summary[data-multiple=true] .cctv-report-table td{padding:6px 8px}
  .cctv-print-summary[data-multiple=true] .cctv-report-notes{font-size:7.5pt;line-height:1.6;padding-top:10px}
  .cctv-print-summary[data-multiple=true] .cctv-report-footer{margin-top:12px;line-height:1.6}
}
