
:root{--canvas:#FBFCFE;--surface:#fff;--sunk:#F2F6FD;--deep:#000F33;--deep2:#001861;--navy:#00247C;--blue:#0057F6;--blue-br:#3D8BFF;--tint:#E7F0FF;--ink:#08101F;--body:#3A4256;--muted:#6E7891;--rule:#E2E8F5;--green:#0F8A5C}
*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--canvas);color:var(--body);font:16px/1.65 "IBM Plex Sans",system-ui,-apple-system,sans-serif}a{color:var(--blue);text-decoration:none}a:hover{text-decoration:underline}h1,h2,h3{font-family:Rubik,"Helvetica Neue",Arial,sans-serif;color:var(--deep);line-height:1.15}h1{font-size:42px;margin:.25em 0}h2{font-size:27px;margin-top:1.8em}h3{font-size:20px;margin-top:1.5em}
.top{position:sticky;top:0;z-index:20;background:color-mix(in srgb,var(--canvas) 94%,transparent);border-bottom:1px solid var(--rule);backdrop-filter:blur(12px)}.topin{max-width:1160px;margin:auto;min-height:76px;display:flex;align-items:center;gap:28px;padding:0 22px}.brandhome{display:flex;align-items:center;flex:0 0 auto}.logo{width:205px;height:auto;display:block}.topnav{display:flex;gap:24px;margin-left:auto;align-items:center;font-size:14px;font-weight:500}.topnav a{color:var(--body)}.topnav a:hover{color:var(--blue);text-decoration:none}.siteback{display:inline-flex;align-items:center;gap:6px}.siteback:before{content:'↗';font-size:12px}.lang{border:1px solid var(--rule);border-radius:9px;padding:7px 10px;color:var(--blue)!important;background:var(--tint)}
.wrap{max-width:1160px;margin:auto;display:grid;grid-template-columns:235px minmax(0,1fr);gap:42px;padding:34px 22px 70px}.side{position:sticky;top:104px;align-self:start}.side .group{font:600 12px Rubik;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);margin:18px 0 7px}.side a{display:block;padding:5px 0;color:var(--body);font-size:14px}.side a.active{color:var(--blue);font-weight:600}.content{max-width:830px}.crumb{font-size:13px;color:var(--muted);margin-bottom:14px}.lead{font-size:19px;color:#46506a;max-width:780px}.hero{padding:26px 0 14px}
.search-wrap{position:relative;margin:4px 0 28px}.search{width:100%;padding:15px 18px;border:1px solid var(--rule);border-radius:12px;font-size:16px;background:#fff;outline:none}.search:focus{border-color:#8db4ff;box-shadow:0 0 0 3px #e7f0ff}.search-results{display:none;position:absolute;left:0;right:0;z-index:15;background:#fff;border:1px solid var(--rule);border-radius:12px;margin-top:7px;padding:7px;box-shadow:0 18px 45px rgba(0,15,51,.12);max-height:430px;overflow:auto}.search-results a{display:block;padding:10px 12px;border-radius:8px;color:var(--body)}.search-results a:hover{background:var(--sunk);text-decoration:none}.search-results b{display:block;color:var(--deep)}.search-results small{display:block;color:var(--muted);line-height:1.35;margin-top:2px}
.cards{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;margin:24px 0}.card{background:#fff;border:1px solid var(--rule);border-radius:14px;padding:20px;display:block;color:var(--body);transition:.15s}.card:hover{transform:translateY(-2px);box-shadow:0 10px 30px rgba(0,36,124,.08);text-decoration:none}.card b{display:block;color:var(--deep);font:600 18px Rubik;margin-bottom:5px}.callout{border-left:4px solid var(--blue);background:var(--tint);padding:14px 17px;border-radius:0 10px 10px 0;margin:20px 0}.callout.warn{border-color:#E2A400;background:#FFF7DC}.callout.danger{border-color:#D74949;background:#FFF0F0}.callout strong{color:var(--deep)}ol.steps{padding-left:24px}ol.steps li{padding:6px 0 9px 6px}code,pre{font-family:"IBM Plex Mono",monospace}pre{background:var(--deep);color:#eaf1ff;padding:18px;border-radius:12px;overflow:auto;font-size:13px}.related{border-top:1px solid var(--rule);margin-top:40px;padding-top:22px}.related a{margin-right:16px}.docshot{margin:24px 0 32px}.docshot img{display:block;width:100%;height:auto;border:1px solid var(--rule);border-radius:12px;background:#fff;box-shadow:0 8px 24px rgba(0,15,51,.06)}.docshot figcaption{font-size:13px;color:var(--muted);margin-top:7px}.footer{border-top:1px solid var(--rule);background:#fff}.footerin{max-width:1160px;margin:auto;padding:25px 22px;color:var(--muted);font-size:13px;display:flex;justify-content:space-between}.pill{display:inline-block;background:var(--tint);color:var(--navy);border-radius:999px;padding:3px 9px;font-size:12px;font-weight:600;margin-right:6px}table{border-collapse:collapse;width:100%;background:#fff}th,td{border:1px solid var(--rule);padding:10px;text-align:left}th{color:var(--deep);background:var(--sunk)}
@media(max-width:800px){.wrap{grid-template-columns:1fr}.side{display:none}.topnav a.hide-m{display:none}.cards{grid-template-columns:1fr}h1{font-size:34px}.logo{width:175px}.topin{min-height:68px}.siteback span{display:none}}

/* v11 mobile hardening */
html,body{max-width:100%;overflow-x:clip}.content,.wrap,.topin,.topnav{min-width:0}img,video,iframe,table,pre{max-width:100%}pre{white-space:pre-wrap;overflow-wrap:anywhere}table{display:block;overflow-x:auto}
@media(max-width:800px){.topin{padding:10px 14px;gap:10px;min-height:64px;flex-wrap:wrap}.brandhome{max-width:48%}.logo{width:min(165px,100%)}.topnav{margin-left:auto;gap:8px;flex-wrap:wrap;justify-content:flex-end;max-width:50%;font-size:12px}.topnav a{white-space:nowrap}.lang{padding:5px 7px}.wrap{padding:22px 16px 52px;width:100%;max-width:100%}.content{width:100%;max-width:100%;overflow-wrap:anywhere}.hero{padding-top:12px}h1{font-size:32px;overflow-wrap:anywhere}.lead{font-size:17px}.cards{gap:12px}.card{padding:16px}.footerin{padding:20px 16px;gap:10px;flex-wrap:wrap}}
@media(max-width:430px){.topin{display:grid;grid-template-columns:minmax(0,1fr) auto}.brandhome{max-width:none}.topnav{max-width:none;margin:0;gap:6px}.topnav .siteback{display:none}.logo{width:150px}.lang{font-size:11px}.wrap{padding-left:14px;padding-right:14px}h1{font-size:29px}}

.langmenu{position:relative}.langmenu summary{list-style:none;cursor:pointer;border:1px solid var(--rule);border-radius:9px;padding:7px 10px;color:var(--blue);background:var(--tint);font-weight:600}.langmenu summary::-webkit-details-marker{display:none}.langdrop{position:absolute;right:0;top:calc(100% + 8px);width:190px;max-height:360px;overflow:auto;background:#fff;border:1px solid var(--rule);border-radius:12px;padding:7px;box-shadow:0 18px 45px rgba(0,15,51,.15)}.langdrop a{display:block;padding:7px 10px;border-radius:7px;white-space:nowrap}.langdrop a:hover{background:var(--sunk)}
@media(max-width:800px){.topin{flex-wrap:nowrap}.topnav{flex-wrap:nowrap;max-width:none}.topnav>a:first-child{display:none}.langdrop{position:fixed;right:12px;top:64px;max-width:calc(100vw - 24px)}.brandhome{max-width:55%}.siteback{font-size:0}.siteback:before{font-size:14px}.siteback:after{content:'Web';font-size:12px}.content{overflow:hidden}.content>*{max-width:100%}}
@media(max-width:430px){.topin{display:flex}.brandhome{max-width:58%}.logo{width:145px}.topnav{margin-left:auto}.siteback{display:none}.langmenu summary{padding:5px 8px}}


/* v13 header, language switcher and search placement */
.topnav{gap:12px}
.siteback{padding:10px 14px;border:1px solid var(--blue);border-radius:10px;background:var(--blue);color:#fff!important;font-weight:600;line-height:1;box-shadow:0 5px 14px rgba(0,87,246,.16);transition:transform .16s ease,box-shadow .16s ease,background .16s ease}
.siteback:before{content:'↗';font-size:12px}.siteback:hover{background:var(--navy);color:#fff!important;text-decoration:none;transform:translateY(-1px);box-shadow:0 8px 18px rgba(0,36,124,.2)}
.langmenu summary{display:flex;align-items:center;gap:8px;min-height:40px;padding:8px 10px;user-select:none}
.langmenu summary .flag{font-size:22px;line-height:1;width:28px;text-align:center;display:inline-block}
.langmenu .lgcode{font-family:"IBM Plex Mono",monospace;font-weight:600;letter-spacing:.04em}
.langmenu .lgchev{font-size:15px;line-height:1;margin-left:1px;transition:transform .2s ease}
.langmenu[open] .lgchev{transform:rotate(180deg)}
.langdrop{width:min(430px,calc(100vw - 24px));max-height:none;overflow:visible;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:3px;padding:7px}
.langdrop a{display:flex;align-items:center;gap:10px;padding:9px 10px;min-width:0;color:var(--ink);font-weight:500}
.langdrop a .flag{width:30px;flex:0 0 30px;font-size:22px;line-height:1;text-align:center}
.langdrop a .lgname{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.langdrop a[aria-current="true"]{background:var(--tint);color:var(--blue);font-weight:600}
.search-wrap{margin:2px 0 30px}
@media(max-width:800px){.topnav>a:first-child{display:inline-flex}.siteback{font-size:12px;padding:9px 11px}.siteback span{display:inline}.siteback:after{content:none}.siteback:before{font-size:11px}.langdrop{position:fixed;right:12px;left:12px;top:68px;width:auto;max-width:none;grid-template-columns:repeat(2,minmax(0,1fr));max-height:calc(100dvh - 82px);overflow-y:auto}.langdrop a{font-size:12.5px;padding:8px}.brandhome{max-width:52%}}
@media(max-width:430px){.brandhome{max-width:50%}.logo{width:136px}.siteback{padding:8px 9px}.langmenu summary{padding:6px 8px;min-height:36px}.langmenu summary .flag{font-size:20px;width:24px}.langmenu .lgcode{font-size:11px}.langmenu .lgchev{display:none}.topnav{gap:6px}}
@media(max-width:360px){.siteback{font-size:0;width:36px;height:36px;padding:0;justify-content:center}.siteback:before{font-size:14px}.langdrop{grid-template-columns:1fr}}

/* v14 — align docs header geometry with screensoft.org */
.topin{width:min(1160px,calc(100vw - 40px));max-width:none;min-height:62px;padding:16px 0;gap:20px}
.brandhome{height:30px;display:flex;align-items:center}
.logo{width:auto;height:30px;max-width:none}
.topnav{font-size:16px;gap:12px}
.siteback{min-height:46px;padding:0 18px;border-radius:10px;font-size:16px}
.langmenu summary{min-height:46px;padding:0 14px;border-radius:10px;font-size:16px}
.langmenu .lgcode{font-family:"IBM Plex Sans",system-ui,-apple-system,sans-serif;font-weight:600;letter-spacing:0}
@media(max-width:800px){
 .topin{width:calc(100vw - 28px);padding:12px 0;min-height:54px;gap:8px}
 .brandhome{height:28px;max-width:46%}.logo{height:28px;width:auto}
 .siteback{min-height:40px;padding:0 11px;font-size:12px}
 .langmenu summary{min-height:40px;padding:0 9px}
}
@media(max-width:430px){.brandhome{height:26px;max-width:48%}.logo{height:26px;width:auto}.topnav{gap:5px}.siteback{padding:0 8px}}

/* v16 — match main-site controls, theme switcher */
.theme-toggle,.siteback,.langmenu summary{height:42px;min-height:42px;border-radius:12px;font-size:15px}
.theme-toggle{width:42px;padding:0;display:inline-flex;align-items:center;justify-content:center;border:1px solid var(--rule);background:var(--tint);color:var(--blue);cursor:pointer;font-size:20px}
.siteback{padding:0 16px}.langmenu summary{padding:0 13px}
.topnav{gap:10px}.langmenu{order:2}.siteback{order:3}.theme-toggle{order:1}
body.dark{--canvas:#0c1218;--surface:#111920;--sunk:#18222b;--deep:#eef4ff;--deep2:#dbe8ff;--navy:#9fc0ff;--blue:#74a7ff;--blue-br:#74a7ff;--tint:#182943;--ink:#f4f7fb;--body:#d7dee8;--muted:#9da9b8;--rule:#263440;--green:#42c895;background:var(--canvas);color:var(--body)}
body.dark .top,body.dark .footer,body.dark .search,body.dark .search-results,body.dark .langdrop,body.dark .card,body.dark table{background:var(--surface)}
body.dark .lead{color:#bdc7d6}body.dark th{background:var(--sunk)}
.supportbox{margin-top:42px;padding:18px 20px;border:1px solid var(--rule);border-radius:14px;background:var(--surface)}.supportbox strong{color:var(--deep)}
@media(max-width:800px){.theme-toggle,.siteback,.langmenu summary{height:40px;min-height:40px}.theme-toggle{width:40px}.siteback{padding:0 11px}.topnav{gap:6px}}
@media(max-width:520px){.siteback{font-size:0;width:40px;padding:0;justify-content:center}.siteback:before{font-size:14px}.theme-toggle{width:38px}.langmenu summary{padding:0 8px}.topin{width:calc(100vw - 20px)}.logo{height:24px}}

/* v16 exact main-site header control dimensions */
.theme-toggle{width:34px!important;height:34px!important;min-height:34px!important;border-radius:10px!important;font-size:17px!important}
.langmenu summary{height:38px!important;min-height:38px!important;padding:0 10px!important;gap:8px!important;border-radius:10px!important;font-size:12px!important;font-weight:600!important;letter-spacing:.06em!important}
.langmenu summary .flag{width:30px!important;height:21px!important;font-size:22px!important}
.siteback{min-height:0!important;height:auto!important;padding:11px 20px!important;font-size:13.5px!important;border-radius:11px!important}
.topnav{gap:8px!important}
@media(max-width:520px){.siteback{display:none!important}.theme-toggle{width:34px!important}.langmenu summary{height:38px!important}}
\n\n
/* Breadcrumb home link: consistent on every documentation page */
.crumb a{color:var(--blue)!important;text-decoration:none}
.crumb a:hover{text-decoration:underline}

/* v24 — advertising-loop documentation */
.side-sub{margin:-5px 0 8px 14px!important;padding:7px 10px!important;font-size:12px!important;border-left:2px solid var(--rule);border-radius:0 8px 8px 0!important}.side-sub.active{border-left-color:var(--blue);background:var(--tint);color:var(--blue)!important}
.loop-kicker{display:inline-flex;padding:5px 9px;border-radius:999px;background:var(--tint);color:var(--blue);font-weight:600;font-size:12px;margin-bottom:10px}.loop-principle{font-size:19px;line-height:1.55;padding:20px 22px;border:1px solid var(--blue-br);border-radius:16px;background:linear-gradient(135deg,var(--tint),var(--surface));margin:12px 0 28px}.flow{display:grid;grid-template-columns:1fr 54px 1fr;gap:12px;align-items:center;margin:18px 0 34px}.flowbox{border:1px solid var(--rule);border-radius:14px;padding:16px;background:var(--surface);text-align:center}.flowbox strong{display:block;color:var(--deep);font-size:16px}.flowbox.c{border-color:#efb4b4;background:#fff7f7}.flowbox.n{border-color:#a8c8f6;background:#f5f9ff}.flowbox.d{border-color:#c7ccd3;background:var(--sunk)}body.dark .flowbox.c,body.dark .flowbox.n{background:var(--surface)}.arrow{text-align:center;color:var(--blue);font-size:26px;font-weight:700}.decision{grid-column:1/-1;max-width:620px;margin:auto;width:100%}.yn{font-size:11px;font-weight:700;color:var(--muted);margin-top:7px}.timeline{margin:18px 0 28px;padding:18px;border:1px solid var(--rule);border-radius:14px;background:var(--surface);overflow-x:auto}.tl-track{min-width:680px;display:grid;grid-template-columns:repeat(6,1fr);position:relative;padding-top:26px}.tl-track:before{content:'';position:absolute;left:0;right:0;top:17px;height:2px;background:var(--rule)}.tl{position:relative;text-align:center;font-size:12px}.tl:before{content:'';position:absolute;width:12px;height:12px;border-radius:50%;background:var(--blue);top:-14px;left:50%;transform:translateX(-50%);box-shadow:0 0 0 4px var(--surface)}.tl b{display:block;color:var(--deep)}.sequence{display:flex;align-items:stretch;gap:7px;flex-wrap:wrap;margin:14px 0 20px}.seq{padding:11px 12px;border-radius:10px;border:1px solid var(--rule);font-size:12px;font-weight:600;background:var(--surface)}.seq.c{border-color:#efb4b4;background:#fff5f5;color:#9e2424}.seq.n{border-color:#abcaf6;background:#f2f7ff;color:#205a9c}.seq.d{background:var(--sunk);color:var(--muted)}body.dark .seq.c,body.dark .seq.n{background:var(--surface)}.seqarr{align-self:center;color:var(--muted)}.doc-note{padding:14px 16px;border-left:4px solid var(--blue);background:var(--tint);border-radius:8px;margin:14px 0 24px}.doc-warn{padding:14px 16px;border-left:4px solid #d99a22;background:#fff9ed;border-radius:8px;margin:14px 0 24px}body.dark .doc-warn{background:#292317}.threecases{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin:18px 0 30px}.case{border:1px solid var(--rule);border-radius:14px;padding:17px;background:var(--surface)}.case h3{margin-top:0;font-size:17px}.rulelist{counter-reset:r;list-style:none;padding:0}.rulelist li{position:relative;padding:11px 10px 11px 42px;border-bottom:1px solid var(--rule)}.rulelist li:before{counter-increment:r;content:counter(r);position:absolute;left:7px;top:9px;width:24px;height:24px;border-radius:50%;display:grid;place-items:center;background:var(--tint);color:var(--blue);font-weight:700;font-size:12px}.bigsummary{font-size:18px;line-height:1.6;padding:20px;border-radius:14px;background:var(--deep);color:white;margin:24px 0}.bigsummary strong{color:white}@media(max-width:850px){.threecases{grid-template-columns:1fr}.flow{grid-template-columns:1fr}.arrow{transform:rotate(90deg)}.decision{grid-column:auto}}

/* Playlist logic v4: linear, client-friendly decision flow */
.termgrid{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin:14px 0 30px}.term{border:1px solid var(--rule);border-radius:14px;padding:17px;background:var(--surface)}.term strong{color:var(--deep);font-size:16px}.term p{margin:8px 0 0}.flowv{max-width:920px;margin:18px auto 38px}.flowstep{position:relative;border:1px solid var(--rule);border-radius:14px;padding:17px 18px;background:var(--surface);text-align:center}.flowstep strong{display:block;color:var(--deep);font-size:16px}.flowstep small{display:block;margin-top:7px;color:var(--muted);font-size:13px;line-height:1.45}.flowstep.start{border-color:var(--blue-br);background:var(--tint)}.flowstep.c{border-color:#efb4b4;background:#fff7f7}.flowstep.n{border-color:#a8c8f6;background:#f5f9ff}body.dark .flowstep.c,body.dark .flowstep.n{background:var(--surface)}.stepno{position:absolute;left:12px;top:12px;width:25px;height:25px;border-radius:50%;display:grid;place-items:center;background:var(--blue);color:white;font-size:12px;font-weight:800}.down{text-align:center;color:var(--blue);font-size:27px;font-weight:800;line-height:1.4}.branch{display:grid;grid-template-columns:1fr 1.35fr;gap:18px;margin-top:12px}.branchcol{border-top:2px solid var(--rule);padding-top:10px;text-align:center}.branchcol>b{display:block;color:var(--blue);font-size:13px;margin-bottom:8px}.return{margin-top:9px;padding:8px 10px;border-radius:9px;background:var(--sunk);color:var(--muted);font-size:11px;font-weight:800;letter-spacing:.02em}.miniout{display:flex;align-items:center;justify-content:center;gap:8px;flex-wrap:wrap;margin-top:9px}.miniout .seq{margin:0}.or{color:var(--muted);font-size:12px}@media(max-width:850px){.termgrid,.branch{grid-template-columns:1fr}.branchcol{margin-top:6px}}

/* v7 documentation diagrams */
.commercial-hour{margin:24px 0;padding:22px;border:1px solid #dce5f5;border-radius:18px;background:var(--card,#fff)}
.commercial-row{display:grid;grid-template-columns:repeat(3,minmax(72px,110px)) 1fr;align-items:stretch;gap:6px;min-height:78px}
.commercial-slot{display:flex;flex-direction:column;justify-content:center;align-items:center;border-radius:12px;background:#e9f1ff;border:1px solid #c9dbff;font-weight:600;text-align:center}.commercial-slot small{font-weight:400;opacity:.8}.noncommercial-space{display:flex;align-items:center;justify-content:center;border:2px dashed #9bb7a5;border-radius:12px;background:#eff8f1;text-align:center;padding:10px;color:#315c3c;font-weight:600}.hour-brace{display:grid;grid-template-columns:repeat(3,minmax(72px,110px)) 1fr;gap:6px;margin-top:7px;font-size:.78rem;text-align:center;opacity:.8}.doc-shot{display:block;width:100%;height:auto;border-radius:16px;border:1px solid rgba(128,128,128,.25);margin:16px 0 26px}.capacity-legend{display:flex;flex-wrap:wrap;gap:8px 14px;margin:14px 0}.capacity-legend span{white-space:nowrap}.dot{display:inline-block;width:12px;height:12px;border-radius:50%;margin-right:5px;vertical-align:-1px}.dot.g{background:#43a653}.dot.b{background:#2196df}.dot.p{background:#7440bd}.dot.o{background:#ff9800}.dot.r{background:#f44336}
@media(max-width:700px){.commercial-row,.hour-brace{grid-template-columns:repeat(3,1fr)}.noncommercial-space{grid-column:1/-1;min-height:62px}.hour-brace span:last-child{grid-column:1/-1}.commercial-hour{padding:14px}}

/* Playlist logic v11: hourly capacity + responsive 3600-second timeline */
.hour-capacity{margin:20px 0 30px;padding:18px;border:1px solid var(--rule);border-radius:16px;background:var(--surface)}
.hour-capacity-title{text-align:center;font-weight:800;color:var(--deep);margin-bottom:12px}
.capacity-bar{display:flex;height:24px;border-radius:999px;overflow:hidden;border:1px solid var(--rule);background:var(--sunk)}
.cap-commercial{width:28%;background:#dce9ff;border-right:2px solid var(--surface)}.cap-free{flex:1;background:#eef7f0}
.capacity-caption{display:grid;grid-template-columns:28% 1fr;gap:10px;margin-top:8px;font-size:12px;color:var(--muted)}.capacity-caption span:last-child{text-align:right}
.hour-timeline{margin:18px 0 28px;padding:20px 16px 16px;border:1px solid var(--rule);border-radius:16px;background:var(--surface)}
.hour-events{display:grid;grid-template-columns:repeat(10,1fr);gap:0;align-items:end;min-height:38px;padding:0 1.5%}.hour-event{justify-self:center;display:grid;place-items:center;width:28px;height:28px;border-radius:8px;font-size:12px;font-weight:800;border:1px solid #c9dbff;background:#e9f1ff;color:var(--deep)}.hour-event.e1{background:#f2f7ff}.hour-event.e2{background:#eef7f0;border-color:#b9d1bf}
.hour-line{height:4px;border-radius:999px;background:linear-gradient(90deg,#dce9ff 0 10%,#eef7f0 10% 100%);margin-top:5px;position:relative}.hour-line:before,.hour-line:after{content:'';position:absolute;top:-4px;width:2px;height:12px;background:var(--muted)}.hour-line:before{left:0}.hour-line:after{right:0}
.hour-labels{display:grid;grid-template-columns:repeat(11,1fr);margin-top:7px;color:var(--muted);font-size:10px}.hour-labels span{text-align:center}.hour-labels span:first-child{text-align:left}.hour-labels span:last-child{text-align:right}
.hour-legend{text-align:center;color:var(--muted);font-size:12px;margin-top:12px}.flowstep.visual{border-color:#b9d1bf;background:#f5fbf6}.down.compact{font-size:20px;line-height:1.1}body.dark .flowstep.visual{background:var(--surface)}
@media(max-width:700px){.hour-capacity{padding:14px}.capacity-caption{grid-template-columns:1fr;gap:4px}.capacity-caption span,.capacity-caption span:last-child{text-align:left}.hour-timeline{padding:16px 10px 14px}.hour-event{width:24px;height:24px;font-size:10px}.hour-labels{font-size:8px}.hour-labels span:nth-child(even):not(:last-child){visibility:hidden}.hour-legend{font-size:11px;line-height:1.4}.commercial-hour{display:none}}

/* Independent campaign schedules */
.campaign-plans{margin:22px 0;padding:22px;border:1px solid #dbe5f5;border-radius:18px;background:#fff}.campaign-plan-row{display:grid;grid-template-columns:230px 1fr;gap:18px;align-items:center;margin:18px 0}.campaign-plan-label{display:flex;flex-direction:column;gap:2px}.campaign-plan-label span,.campaign-plan-label small{color:#64748b}.campaign-plan-track{position:relative;height:44px;border-radius:10px;background:linear-gradient(to right,#edf3fc,#f7f9fc);border-left:2px solid #71809c;border-right:2px solid #71809c}.campaign-plan-track:after{content:"";position:absolute;left:0;right:0;top:21px;height:2px;background:#dbe5f5}.campaign-mark{position:absolute;top:5px;transform:translateX(-50%);z-index:2;display:flex;width:34px;height:34px;align-items:center;justify-content:center;border-radius:9px;background:#eef4ff;border:1px solid #bcd3ff;color:#071a45;font-weight:700}.campaign-plan-row:nth-child(2) .campaign-mark{background:#f1f7ee;border-color:#bed8b8}.campaign-plan-row:nth-child(3) .campaign-mark{background:#fff4e8;border-color:#f1cfa6}.campaign-plan-axis{margin-left:248px;display:flex;justify-content:space-between;color:#64748b;font-size:.85rem}.campaign-combine{margin-top:16px}@media(max-width:720px){.campaign-plans{padding:16px 12px}.campaign-plan-row{grid-template-columns:1fr;gap:8px;margin:22px 0}.campaign-plan-track{margin:0 10px}.campaign-plan-axis{margin-left:10px;margin-right:10px;font-size:.72rem}}

/* v17 — exact campaign schedules + merged playlist */
.plan-assumption{margin-bottom:14px}.merged-plan{margin:18px 0 30px;padding:18px;border:1px solid var(--rule);border-radius:16px;background:var(--surface)}.merged-track{position:relative;height:116px;border-radius:12px;background:#eef7f0;border:1px dashed #b9d1bf;margin:0 10px}.free-label{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);color:#477455;font-size:13px;font-weight:700;text-align:center}.merged-mark{position:absolute;transform:translateX(-50%);z-index:3;width:28px;height:28px;border-radius:8px;display:grid;place-items:center;font-size:12px;font-weight:800;color:#071a45}.merged-mark.ma{background:#eef4ff;border:1px solid #bcd3ff}.merged-mark.mb{background:#f1f7ee;border:1px solid #9dc796}.merged-mark.mc{background:#fff4e8;border:1px solid #efbd83}.merged-axis{margin:8px 10px 0}.campaign-plan-label small{font-weight:600}.campaign-plan-row:nth-child(1) .campaign-mark{background:#eef4ff;border-color:#bcd3ff}.campaign-plan-row:nth-child(2) .campaign-mark{background:#f1f7ee;border-color:#9dc796}.campaign-plan-row:nth-child(3) .campaign-mark{background:#fff4e8;border-color:#efbd83}code{font-family:"IBM Plex Mono",monospace;font-size:.9em;background:var(--sunk);padding:2px 5px;border-radius:5px}@media(max-width:720px){.merged-track{height:140px;margin:0}.free-label{font-size:11px;max-width:150px}.merged-axis{margin-left:0;margin-right:0}}
/* v18: make campaign spacing and merged playlist visually explicit */
.plan-gap{position:absolute;top:0;height:44px;z-index:1;pointer-events:none}.plan-gap:before{content:"";position:absolute;left:17px;right:17px;bottom:-13px;border-bottom:1.5px solid #71809c}.plan-gap:after{content:"↔";position:absolute;left:50%;bottom:-23px;transform:translateX(-50%);padding:0 4px;background:var(--surface);color:#475569;font-size:15px;line-height:18px}.plan-gap span{position:absolute;left:50%;bottom:-40px;transform:translateX(-50%);white-space:nowrap;padding:0 4px;background:var(--surface);color:#334155;font-size:11px;font-weight:700}.campaign-plan-row{margin-bottom:42px}.campaign-plan-row:last-of-type{margin-bottom:24px}
.merged-track{height:auto;min-height:64px;background:transparent;border:0;margin:0}.merged-sequence{display:flex;align-items:stretch;gap:6px;min-height:58px;width:100%;overflow:hidden}.merged-cluster{display:flex;gap:3px;flex:0 0 auto}.merged-cell{display:flex;align-items:center;justify-content:center;flex:0 0 28px;min-width:28px;border-radius:8px;font-size:12px;font-weight:800;color:#071a45}.merged-cell.ma{background:#eef4ff;border:1px solid #bcd3ff}.merged-cell.mb{background:#f1f7ee;border:1px solid #9dc796}.merged-cell.mc{background:#fff4e8;border:1px solid #efbd83}.merged-free{display:flex;align-items:center;justify-content:center;min-width:82px;flex:1 1 150px;border:1px dashed #a8b0bd;border-radius:9px;background:#f3f4f6;color:#5f6875;padding:5px 8px;text-align:center;font-size:10px;font-weight:700;line-height:1.2;box-shadow:inset 0 1px 2px rgba(15,23,42,.04)}.merged-axis{margin-top:8px}
@media(max-width:720px){.campaign-plan-row{margin-bottom:46px}.plan-gap span{font-size:10px}.merged-sequence{gap:4px;overflow-x:auto;padding-bottom:3px}.merged-free{min-width:100px;flex-basis:100px}.merged-cell{flex-basis:25px;min-width:25px}.merged-cluster{gap:2px}}

pre code{background:transparent!important;color:inherit!important;padding:0!important;border-radius:0!important}





/* v33 — authoritative navigation. Server-rendered mobile controls; no sticky nesting. */
:root{--ss-docs-header-h:94px;--ss-mobile-nav-h:122px}
.top{position:fixed!important;top:0!important;left:0!important;right:0!important;width:100%!important;z-index:7000!important;background:color-mix(in srgb,var(--canvas) 98%,transparent)!important;border-bottom:1px solid var(--rule)!important;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px)}
body{padding-top:var(--ss-docs-header-h)!important}
.mobile-docs-dock,.mobile-docs-close,.mobile-docs-web,.mobile-docs-backdrop{display:none}
@media(min-width:801px){
 .side{position:sticky!important;top:calc(var(--ss-docs-header-h) + 20px)!important;align-self:start!important;max-height:calc(100dvh - var(--ss-docs-header-h) - 32px)!important;overflow-y:auto!important;padding-right:8px}
 .content>.search-wrap{position:sticky!important;top:calc(var(--ss-docs-header-h) + 8px)!important;z-index:200!important;background:color-mix(in srgb,var(--canvas) 98%,transparent)!important;padding:6px 0 8px!important;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}
}
@media(max-width:800px){
 :root{--ss-mobile-nav-h:122px}
 .top{z-index:7000!important}
 .mobile-docs-dock{display:block!important;position:fixed!important;left:0!important;right:0!important;top:var(--ss-docs-header-h)!important;height:var(--ss-mobile-nav-h)!important;z-index:6900!important;padding:8px 14px 10px!important;margin:0!important;background:color-mix(in srgb,var(--canvas) 98%,transparent)!important;border-bottom:1px solid var(--rule)!important;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px)}
 .mobile-docs-menu{display:flex!important;width:100%!important;height:44px!important;align-items:center!important;justify-content:space-between!important;margin:0 0 8px!important;padding:0 14px!important;border:1px solid var(--rule)!important;border-radius:11px!important;background:var(--surface)!important;color:var(--deep)!important;font:600 14px Rubik,"Helvetica Neue",Arial,sans-serif!important;box-shadow:0 4px 16px rgba(0,15,51,.06)!important}
 .mobile-docs-menu-icon{font:18px/1 system-ui!important}
 .mobile-search-wrap{display:block!important;position:relative!important;height:52px!important;margin:0!important;padding:0!important;background:transparent!important}
 .mobile-search-wrap .search{height:52px!important;padding:12px 16px!important;background:var(--surface)!important}
 .mobile-search-wrap .search-results{z-index:7300!important;max-height:45dvh!important}
 .content>.search-wrap{display:none!important}
 .wrap{padding-top:calc(var(--ss-mobile-nav-h) + 18px)!important}
 html{scroll-padding-top:calc(var(--ss-docs-header-h) + var(--ss-mobile-nav-h) + 12px)!important}
 .side{display:none!important}
 body.docs-menu-open{overflow:hidden!important}
 body.docs-menu-open:before{content:"";display:block;position:fixed;inset:var(--ss-docs-header-h) 0 0;z-index:7050;background:rgba(0,15,51,.48);-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}
 body.docs-menu-open .side{display:block!important;position:fixed!important;left:12px!important;right:12px!important;top:calc(var(--ss-docs-header-h) + 12px)!important;bottom:12px!important;width:auto!important;max-height:none!important;z-index:7100!important;background:var(--surface)!important;border:1px solid var(--rule)!important;border-radius:16px!important;padding:50px 20px 24px!important;overflow-y:auto!important;box-shadow:0 24px 60px rgba(0,15,51,.30)!important}
 body.docs-menu-open .mobile-docs-close{display:grid!important;place-items:center!important;position:absolute!important;right:14px!important;top:12px!important;width:44px!important;height:44px!important;border:0!important;border-radius:10px!important;background:var(--sunk)!important;color:var(--deep)!important;font:34px/1 system-ui!important;z-index:1}
 body.docs-menu-open .mobile-docs-web{display:flex!important;align-items:center!important;justify-content:center!important;margin-top:22px!important;min-height:46px!important;border-radius:11px!important;background:var(--blue)!important;color:#fff!important;font-weight:700!important;text-decoration:none!important}
}

/* SLOT documentation visuals */
.slot-visual,.slot-flow{margin:32px 0}.slot-strip{display:grid;grid-template-columns:repeat(10,minmax(28px,1fr));gap:5px;margin:18px 0 8px}.slot{min-height:54px;border-radius:9px;display:flex;align-items:center;justify-content:center;font-weight:700;border:1px solid rgba(20,55,120,.16)}.slot.commercial{background:#dbe8ff}.slot.fill{background:#edf0f4}.slot.default{background:#fff3d6}.slot-axis{display:flex;justify-content:space-between;font-size:.8rem;opacity:.7}.slot-legend{display:flex;flex-wrap:wrap;gap:16px;margin:16px 0;font-size:.9rem}.slot-legend i{display:inline-block;width:14px;height:14px;border-radius:4px;margin-right:6px;vertical-align:-2px;border:1px solid rgba(20,55,120,.16)}.slot-legend i.commercial{background:#dbe8ff}.slot-legend i.fill{background:#edf0f4}.slot-legend i.default{background:#fff3d6}.loop-arrow{text-align:center;font-weight:700;margin:12px 0 28px}.flowbox{border:1px solid rgba(20,55,120,.16);border-radius:12px;padding:14px 16px;background:var(--card-bg,#fff)}.flowbox strong{display:inline-flex;width:28px;height:28px;border-radius:50%;align-items:center;justify-content:center;background:#e9f0ff;margin-right:8px}.flowarrow{text-align:center;font-size:1.5rem;line-height:1.2;padding:4px}@media(max-width:640px){.slot-strip{gap:3px}.slot{min-height:44px;font-size:.78rem}.slot-legend{gap:10px;font-size:.82rem}}
/* SLOT documentation visual, v35 */
.slot-example{margin:22px 0 34px;padding:20px;border:1px solid var(--rule);border-radius:16px;background:var(--surface)}
.slot-example-head{display:flex;justify-content:space-between;gap:14px;align-items:flex-start;margin-bottom:16px}.slot-example-head strong{color:var(--deep)}
.slot-grid{display:grid;grid-template-columns:repeat(10,minmax(0,1fr));gap:6px}.slot-cell{min-width:0;border-radius:10px;padding:10px 3px;text-align:center;border:1px solid var(--rule);font-weight:700;font-size:13px}.slot-cell small{display:block;font-size:9px;font-weight:500;margin-top:3px;opacity:.72;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.slot-cell.c{background:#dbe8ff;color:#173d78;border-color:#aac5ef}.slot-cell.n{background:#eef3f8;color:#44546a}.slot-cell.d{background:#fff3d6;color:#72510c;border-color:#ecd291}.slot-time{display:flex;justify-content:space-between;margin-top:8px;font-size:12px;color:var(--muted)}.slot-key{display:flex;gap:14px;flex-wrap:wrap;margin-top:16px;font-size:13px}.slot-key span{display:flex;align-items:center;gap:6px}.slot-dot{width:12px;height:12px;border-radius:3px;border:1px solid var(--rule)}.slot-dot.c{background:#dbe8ff}.slot-dot.n{background:#eef3f8}.slot-dot.d{background:#fff3d6}.slot-repeat{margin-top:18px;padding-top:14px;border-top:1px dashed var(--rule);font-weight:600;text-align:center;color:var(--blue)}
.slot-flow2{display:grid;grid-template-columns:1fr 42px 1fr 42px 1fr;align-items:stretch;gap:8px;margin:18px 0 32px}.slot-step{border:1px solid var(--rule);border-radius:14px;padding:16px;background:var(--surface)}.slot-step b{display:block;color:var(--deep);margin-bottom:6px}.slot-step-arrow{display:grid;place-items:center;color:var(--blue);font-size:24px;font-weight:700}
@media(max-width:640px){.slot-example{padding:14px}.slot-grid{grid-template-columns:repeat(5,1fr);gap:5px}.slot-cell{padding:9px 2px;font-size:12px}.slot-time{display:none}.slot-flow2{grid-template-columns:1fr}.slot-step-arrow{transform:rotate(90deg);min-height:24px}.slot-example-head{display:block}.slot-key{gap:9px;font-size:12px}}

.report-flow{height:150px;display:flex;align-items:flex-end;gap:10px;padding:18px 20px;margin:18px 0 28px;border:1px solid var(--rule);border-radius:14px;background:var(--sunk)}.report-flow span{flex:1;min-width:8px;border-radius:5px 5px 0 0;background:currentColor;opacity:.22}.dark .report-flow{background:var(--surface)}

/* v55 — scoped sticky-layer bleed fix; geometry and mobile navigation behavior unchanged */
.top{background:var(--canvas)!important;-webkit-backdrop-filter:none!important;backdrop-filter:none!important}
@media(min-width:801px){.content>.search-wrap{background:var(--canvas)!important;box-shadow:0 -14px 0 var(--canvas)!important;-webkit-backdrop-filter:none!important;backdrop-filter:none!important}}
@media(max-width:800px){.mobile-docs-dock{background:var(--canvas)!important;-webkit-backdrop-filter:none!important;backdrop-filter:none!important}}

/* v56 — approved feedback only: persistent desktop breadcrumb + search stacking */
@media(min-width:801px){
 .content>.crumb{position:sticky!important;top:var(--ss-docs-header-h)!important;z-index:220!important;background:var(--canvas)!important;margin:0!important;padding:8px 0 7px!important;box-shadow:0 -8px 0 var(--canvas)!important}
 .content>.search-wrap{top:calc(var(--ss-docs-header-h) + 36px)!important}
}

/* v57 — approved changes only: mobile breadcrumb persistence + real report screenshots */
@media(max-width:800px){
 .content>.crumb{position:sticky!important;top:var(--ss-docs-header-h)!important;z-index:220!important;background:var(--canvas)!important;margin:0!important;padding:8px 0 7px!important;box-shadow:0 -8px 0 var(--canvas)!important}
}
.report-shot{margin:18px 0 28px;border:1px solid var(--rule);border-radius:14px;overflow:hidden;background:var(--surface)}
.report-shot img{display:block;width:100%;height:auto}
.report-shot figcaption{padding:10px 14px;font-size:13px;color:var(--muted);border-top:1px solid var(--rule)}

/* v58 — approved mobile breadcrumb + single Web ScreenSoft link */
@media(max-width:800px){
 .content>.crumb{top:calc(var(--ss-docs-header-h) + var(--ss-mobile-nav-h))!important;z-index:6950!important;padding:8px 0 7px!important}
 body.docs-menu-open .mobile-docs-web{display:block!important;margin-top:18px!important;min-height:0!important;padding:5px 0!important;border-radius:0!important;background:transparent!important;color:var(--body)!important;font-weight:400!important;text-align:left!important}
}


/* v60 — three approved fixes only */
.company-settings-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;margin:22px 0 30px}
.company-setting-card{border:1px solid var(--rule);border-radius:16px;background:var(--surface);padding:20px 22px}
.company-setting-card h2{font-size:18px;margin:0 0 10px;color:var(--deep)}
.company-setting-card p{margin:0;color:var(--body);line-height:1.65}
@media(max-width:800px){
 .company-settings-grid{grid-template-columns:1fr;gap:12px;margin:18px 0 26px}
 .company-setting-card{padding:17px 18px}
 /* Mobile breadcrumb returns to ordinary document flow. Desktop v56 rules remain untouched. */
 .content>.crumb{position:static!important;top:auto!important;z-index:auto!important;background:transparent!important;margin-bottom:14px!important;padding:0!important;box-shadow:none!important}
}

/* Company page: v67 information hierarchy */
.company-playback-transition{margin:20px 0 12px;color:var(--body);font-weight:500}
.company-default-visual-block{display:flex;align-items:center;justify-content:space-between;gap:24px;border:1px solid var(--rule);border-radius:14px;background:var(--surface);padding:16px 20px;margin:-10px 0 30px}
.company-default-visual-copy h2{font-size:18px;margin:0 0 4px;color:var(--deep)}
.company-default-visual-copy p{margin:0;color:var(--body)}
.company-default-visual-block .company-setting-more{flex:0 0 auto}
.company-editable-callout>p{margin:8px 0 0}
.company-mode-exception{margin-top:16px;padding-top:14px;border-top:1px solid rgba(18,94,180,.24)}
.company-mode-exception strong{display:block;margin-bottom:5px;color:var(--deep)}
.company-mode-exception p{margin:0}
@media(max-width:760px){.company-default-visual-block{align-items:flex-start;flex-direction:column;gap:10px;padding:16px 18px}}

/* Consistent ordinary list alignment across all documentation languages.
   Each nesting level adds the same indent. Special rule lists and navigation
   retain their dedicated layout because they do not carry doc-list. */
.content ol.doc-list,
.content ul.doc-list{
  margin-left:0;
  padding-left:1.65rem;
  list-style-position:outside;
}
.content .doc-list>li{
  padding-left:0;
}
.content .doc-list>li>p:first-child{
  margin-top:0;
}

/* Equal tile heights within each explicitly marked group only.
   Fractional implicit rows follow the tallest card without truncating content. */
.content .equal-tile-heights{grid-auto-rows:1fr;align-items:stretch}
.content .equal-tile-heights>.card,
.content .equal-tile-heights>.company-setting-card,
.content .equal-tile-heights>.hw-card{height:100%;min-width:0;align-self:stretch}

/* Desktop fragment navigation: keep the target below the fixed header,
   sticky breadcrumb (36px), search band (64px) and a 16px reading gap.
   Mobile keeps its existing scroll-padding rule and navigation geometry. */
@media(min-width:801px){
 html{scroll-padding-top:calc(var(--ss-docs-header-h) + 36px + 64px + 16px)!important}
}

/* Compact, user-initiated portrait examples on the game application pages. */
.content .application-demo{width:216px;max-width:100%;margin:22px 0 28px}
.application-demo video{display:block;width:100%;height:auto;aspect-ratio:9/16;object-fit:contain;background:#000;border:1px solid var(--rule);border-radius:12px}
.application-demo figcaption{margin-top:8px;font-size:13px;line-height:1.5;color:var(--muted)}
.application-demo figcaption strong{color:var(--deep);font-weight:600}

/* Text beside compact portrait demos on wide screens; stack on smaller screens. */
.application-demo-layout{margin:44px 0 28px;min-width:0}
.application-demo-copy{min-width:0}
.application-demo-copy>h2:first-child{margin-top:0}
@media(min-width:1000px){
 .application-demo-layout{display:grid;grid-template-columns:minmax(0,1fr) 216px;gap:28px;align-items:start}
 .content .application-demo-layout>.application-demo{margin:0;min-width:0}
}
