:root{--bg:#07111f;--panel:#101e33;--panel2:#0c1829;--line:#223b56;--muted:#86a0b9;--text:#eaf5ff;--aqua:#79e5d1;--blue:#6a82f2;--warn:#ffd080;--bad:#ff9fb0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI","Microsoft YaHei",sans-serif}*{box-sizing:border-box}body{margin:0;background:radial-gradient(circle at 80% 0,rgba(72,66,180,.16),transparent 28%),var(--bg);color:var(--text);font-size:14px}a{color:inherit;text-decoration:none}button,input,textarea,select{font:inherit}.shell{display:grid;grid-template-columns:240px 1fr;min-height:100vh}.sidebar{position:sticky;top:0;height:100vh;display:flex;flex-direction:column;padding:22px 13px;background:linear-gradient(180deg,#0a1727,#081423);border-right:1px solid #1d344d}.brand{display:flex;gap:10px;align-items:center;padding:4px 10px 22px}.brand b{display:block;font-size:15px}.brand small,.sidebar-user small{display:block;margin-top:3px;color:#7893ae;font-size:11px}.brand-mark{display:grid;place-items:center;width:33px;height:33px;border-radius:11px;color:#ddfffb;background:linear-gradient(135deg,#51bfe8,#7b74eb);font-size:25px;box-shadow:0 0 24px rgba(88,197,224,.35)}.brand-mark.large{width:52px;height:52px;font-size:34px;margin:auto}.sidebar nav{display:grid;gap:3px}.nav-item{display:flex;gap:10px;align-items:center;padding:10px 11px;border:1px solid transparent;border-radius:9px;color:#9ab0c7;font-size:13px}.nav-item:hover{color:#d9f5ff;border-color:rgba(109,155,218,.22)}.nav-item.active{color:#ebf9ff;background:linear-gradient(90deg,rgba(55,116,158,.32),rgba(67,59,168,.2));border-color:rgba(109,155,218,.22)}.nav-item span{color:#80dcd6}.sidebar-user{display:flex;gap:9px;align-items:center;margin-top:auto;padding:15px 10px;border-top:1px solid var(--line)}.sidebar-user b{display:block;font-size:12px}.avatar{display:grid;place-items:center;width:29px;height:29px;border-radius:9px;background:#173c5b;color:#8be7dc}.logout{width:100%;padding:10px;border:0;border-radius:9px;background:#10243a;color:#8fa9c2;text-align:left;cursor:pointer}.workspace{min-width:0}.topbar{display:flex;justify-content:space-between;align-items:center;height:57px;padding:0 32px;border-bottom:1px solid #1c344f;color:#9db5ca;font-size:12px}.health{display:flex;gap:7px;align-items:center}.health i,.status i{width:6px;height:6px;border-radius:50%;background:var(--aqua);box-shadow:0 0 8px var(--aqua)}.content{max-width:1320px;margin:auto;padding:34px}.page-heading{display:flex;gap:20px;justify-content:space-between;align-items:flex-start;margin-bottom:23px}.page-heading p,.section-head p,.probe-guide p{margin:0 0 6px;color:#78e4d3;font:11px monospace;letter-spacing:.08em}.page-heading h1{margin:0;color:#f0f8ff;font-size:29px;letter-spacing:-.04em}.page-heading>div>span{display:block;margin-top:8px;color:var(--muted);font-size:13px}.button{display:inline-flex;gap:7px;align-items:center;justify-content:center;padding:9px 12px;border:1px solid #315070;border-radius:9px;background:#12263c;color:#c8e3f3;cursor:pointer;font-size:12px}.button:hover{border-color:#6ecbe0;color:white}.button.primary{border:0;background:linear-gradient(105deg,#4dbde7,#6977ea);color:white}.button.wide{width:100%;padding:12px}.button.small{padding:7px 9px;font-size:11px}.metric-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-bottom:17px}.metric-grid article,.panel{border:1px solid var(--line);border-radius:14px;background:linear-gradient(145deg,rgba(18,37,61,.97),rgba(9,20,35,.97));box-shadow:0 14px 30px rgba(0,0,0,.1)}.metric-grid article{padding:17px}.metric-grid span{color:#90a7bf;font-size:11px}.metric-grid b{display:block;margin:10px 0 4px;font-size:27px;letter-spacing:-.05em}.metric-grid small{color:#7792ad;font-size:11px}.panel{padding:19px;margin-bottom:17px}.section-head{display:flex;justify-content:space-between;gap:10px;align-items:flex-start;margin-bottom:14px}.section-head h2{margin:0;font-size:17px}.section-head a{color:#89dedb;font-size:12px}.project-list,.compact-list,.task-list,.activity-list,.update-list{display:grid}.project-row,.compact-list>div,.task-list>div,.activity-list>div{display:grid;align-items:center;gap:12px;padding:12px 0;border-top:1px solid #203a54}.project-row{grid-template-columns:auto 1.3fr 1fr auto auto}.project-mark{display:grid;place-items:center;width:31px;height:31px;border-radius:9px;background:#1d4761;color:#8ee8d8}.project-row b,.compact-list b,.task-list b,.activity-list b{display:block;color:#e9f5ff;font-size:13px}.project-row small,.compact-list small,.task-list small,.activity-list small,.table-row small{display:block;margin-top:3px;color:#7692ad;font-size:10px}.status{display:inline-flex;align-items:center;gap:6px;width:max-content;padding:4px 7px;border-radius:999px;border:1px solid #31556a;color:#a5c7d9;background:#12273a;font-size:10px;white-space:nowrap}.status.warning{color:#f3ca82;border-color:rgba(244,189,106,.25);background:rgba(80,56,23,.4)}.status.warning i{background:var(--warn);box-shadow:0 0 8px var(--warn)}.status.success{color:#90efd6;border-color:rgba(83,214,187,.24);background:rgba(20,73,65,.38)}.status.neutral{color:#a9b7df}.two-col{display:grid;grid-template-columns:1fr 1fr;gap:17px}.copy{color:#91a9c0;font-size:12px;line-height:1.75}.copy code,.probe-guide code,.guide-grid code{color:#8ee8da;font-family:monospace}.table-panel{padding:0;overflow:hidden}.table-head,.table-row{display:grid;grid-template-columns:1.4fr .8fr .8fr .7fr auto;gap:12px;align-items:center;padding:13px 18px}.table-head{background:#10243a;color:#7f9bb5;font-size:10px}.table-row{border-top:1px solid #203a54;font-size:12px}.table-row b{display:block}.tab-links{display:flex;gap:7px;flex-wrap:wrap;margin:-4px 0 16px}.tab-links a{padding:7px 10px;border:1px solid #2a4662;border-radius:999px;color:#a6c3d7;font-size:11px}.line-list>div{display:grid;grid-template-columns:1.5fr auto 1fr;gap:12px;align-items:center;padding:12px 0;border-top:1px solid #203a54}.line-list b{display:block}.line-list small{color:#7996b0;font:10px monospace}.inline-form,.upload-form{display:grid;grid-template-columns:1fr 1.8fr auto;gap:9px;margin-top:16px}.compact-form{display:flex;gap:8px;margin-top:10px}.inline-form input,.upload-form input,.stack-form input,.stack-form select,.stack-form textarea{width:100%;padding:10px;border:1px solid #2c4966;border-radius:9px;background:#081626;color:#e9f5ff}.stack-form{display:grid;gap:11px}.stack-form label{display:grid;gap:6px;color:#9bb4ca;font-size:11px}.stack-form select{appearance:auto}.stack-form textarea{resize:vertical}.check{display:flex!important;align-items:center;gap:8px}.check input{width:auto!important}.notice{padding:14px;border:1px solid rgba(97,190,211,.24);border-radius:11px;background:rgba(22,60,75,.45);color:#a4c0d2}.notice b{color:#d8f3ef}.notice p{margin:6px 0 12px;font-size:12px}.subpanel{padding:14px;border:1px solid #29445f;border-radius:11px;background:#0b192b}.subpanel p{margin:7px 0;color:#a4bdd0}.subpanel small{color:#7f9ab3}.update-item{padding:18px}.update-item span,.update-list.compact span{color:#84e4d5;font:10px monospace}.update-item h2{margin:7px 0;font-size:18px}.update-item p{color:#9ab3c8;line-height:1.7}.update-item small{color:#718ba5}.guide-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:13px}.guide-grid article{padding:15px;border:1px solid #29445e;border-radius:12px;background:#0d1b2e}.guide-grid b{display:grid;place-items:center;width:21px;height:21px;border-radius:6px;background:#17404a;color:#8de9d6;font:11px monospace}.guide-grid h2{font-size:14px}.guide-grid p{color:#8fa8c0;font-size:11px;line-height:1.7}.probe-guide{display:grid;grid-template-columns:auto 1fr auto;gap:14px;align-items:center;background:linear-gradient(120deg,rgba(18,65,75,.72),rgba(11,25,44,.98))}.probe-icon{display:grid;place-items:center;width:46px;height:46px;border-radius:13px;background:#1b5160;color:#a5fae5;font-size:23px}.probe-guide h2{margin:0 0 7px}.probe-guide>div>span{color:#9cb7c9;font-size:12px;line-height:1.7}.flow{display:grid;gap:9px;margin:0;padding-left:20px;color:#9eb8ce;font-size:12px;line-height:1.6}.line-table{grid-template-columns:1fr 1.3fr 1fr auto auto}.task-table{grid-template-columns:1.1fr 1fr 1fr auto .8fr}.activity-list>div{grid-template-columns:150px 1fr auto}.activity-list time{color:#819cb6;font:10px monospace}.login-shell{display:grid;grid-template-columns:minmax(320px,440px) minmax(300px,520px);gap:120px;align-items:center;justify-content:center;min-height:100vh;padding:32px;background:radial-gradient(circle at 12% 20%,rgba(52,114,164,.25),transparent 26%),radial-gradient(circle at 80% 75%,rgba(73,55,167,.2),transparent 30%),var(--bg)}.login-card{padding:38px;border:1px solid #29425f;border-radius:19px;background:linear-gradient(150deg,rgba(18,37,61,.95),rgba(7,18,31,.98));box-shadow:0 26px 70px rgba(0,0,0,.28)}.login-brand{text-align:center}.login-brand p{margin:15px 0 6px;color:#75dbd1;font:10px monospace;letter-spacing:.12em}.login-brand h1{margin:0;font-size:24px}.login-brand>span{display:block;margin-top:7px;color:#829bb3;font-size:12px}.login-form{display:grid;gap:13px;margin-top:26px}.login-form label{display:grid;gap:7px;color:#a4bbcf;font-size:11px}.login-form input{padding:12px;border:1px solid #2c4864;border-radius:10px;background:#091728;color:#eef8ff}.login-foot{display:flex;justify-content:space-between;margin-top:23px;padding-top:16px;border-top:1px solid #243e58;color:#7892ac;font-size:10px}.login-foot i{display:inline-block;width:6px;height:6px;margin-right:5px;border-radius:50%;background:#74e5d2}.login-copy p{color:#78ded2;font:11px monospace}.login-copy h2{max-width:480px;font-size:32px;line-height:1.25}.login-copy>div{display:flex;gap:20px;align-items:baseline;padding:15px 0;border-top:1px solid #263d57}.login-copy b{color:#86ebdd;font-size:22px}.login-copy span{color:#8ea8bd;font-size:12px}.flash{margin:0 0 16px;padding:11px 13px;border-radius:10px;border:1px solid #2f6070;background:#123743;color:#a8f0df}.flash.error{border-color:rgba(249,124,145,.36);background:rgba(84,30,44,.68);color:#ffc1cc}@media(max-width:980px){.shell{grid-template-columns:1fr}.sidebar{position:static;height:auto}.sidebar nav{grid-template-columns:repeat(3,1fr)}.sidebar-user,.sidebar form{display:none}.metric-grid{grid-template-columns:repeat(2,1fr)}.guide-grid{grid-template-columns:repeat(2,1fr)}.login-shell{grid-template-columns:1fr;gap:25px}.login-copy{max-width:440px;margin:auto}.login-copy h2{font-size:27px}}@media(max-width:650px){.content{padding:21px 14px}.topbar{padding:0 14px}.page-heading{display:grid}.metric-grid,.two-col,.guide-grid{grid-template-columns:1fr}.table-head{display:none}.table-row,.project-row,.line-list>div,.task-table,.line-table,.activity-list>div{grid-template-columns:1fr}.inline-form,.upload-form{grid-template-columns:1fr}.probe-guide{grid-template-columns:auto 1fr}.probe-guide .button{grid-column:1/-1}.sidebar nav{grid-template-columns:1fr 1fr}.login-shell{padding:16px}.login-card{padding:25px}.login-copy h2{font-size:23px}}
/* Full customer directory with a separate expandable add-customer submenu. */
.customer-directory{position:relative}.customer-directory .section-head{margin-bottom:16px}.customer-directory .table-head,.customer-directory .table-row{padding-left:0;padding-right:0}.customer-table{grid-template-columns:1.15fr .9fr .55fr .65fr 1.25fr auto}.add-customer-menu{position:relative}.add-customer-menu summary{list-style:none}.add-customer-menu summary::-webkit-details-marker{display:none}.add-customer-panel{position:absolute;z-index:20;top:calc(100% + 9px);right:0;width:min(360px,calc(100vw - 48px));padding:15px;border:1px solid #395b7d;border-radius:12px;background:linear-gradient(145deg,#10243a,#0a1728);box-shadow:0 20px 46px rgba(0,0,0,.42)}.add-customer-panel p{margin:0 0 11px;color:#7de4d3;font:10px monospace;letter-spacing:.08em}@media(max-width:650px){.customer-table{grid-template-columns:1fr}.add-customer-panel{position:fixed;top:76px;right:14px;left:14px;width:auto}}

/* Full product directory and expandable add-product submenu. */
.product-directory{position:relative}.product-directory .section-head{margin-bottom:16px}.product-directory .table-head,.product-directory .table-row{padding-left:0;padding-right:0}.product-table{grid-template-columns:1.3fr .9fr .7fr .8fr .65fr auto}.add-product-menu{position:relative}.add-product-menu summary{list-style:none}.add-product-menu summary::-webkit-details-marker{display:none}.add-product-panel{position:absolute;z-index:20;top:calc(100% + 9px);right:0;width:min(380px,calc(100vw - 48px));padding:15px;border:1px solid #395b7d;border-radius:12px;background:linear-gradient(145deg,#10243a,#0a1728);box-shadow:0 20px 46px rgba(0,0,0,.42)}.add-product-panel p{margin:0 0 11px;color:#7de4d3;font:10px monospace;letter-spacing:.08em}@media(max-width:650px){.product-table{grid-template-columns:1fr}.add-product-panel{position:fixed;top:76px;right:14px;left:14px;width:auto}}

/* Configuration source address directory. */
.source-table{grid-template-columns:.4fr .7fr 1.4fr 1.5fr}@media(max-width:650px){.source-table{grid-template-columns:1fr}}


/* 2026-10 UI stability: directories expand cleanly without covering rows. */
.customer-directory .section-head,.product-directory .section-head{margin-bottom:0}.customer-directory .section-head small,.product-directory .section-head small{display:block;margin-top:6px;color:#7f9ab5;font-size:11px}.add-customer-menu,.add-product-menu{position:relative;display:block;width:max-content;margin:-47px 0 18px auto}.add-customer-menu>summary,.add-product-menu>summary{display:inline-flex;float:right;list-style:none}.add-customer-menu>summary::-webkit-details-marker,.add-product-menu>summary::-webkit-details-marker{display:none}.add-customer-menu[open],.add-product-menu[open]{width:100%;margin-top:15px}.add-customer-menu[open]>summary,.add-product-menu[open]>summary{margin-top:-62px}.add-customer-panel,.add-product-panel{position:static;clear:both;width:100%;max-width:none;margin:0 0 17px;padding:18px;border:1px solid rgba(91,170,206,.36);border-radius:13px;background:linear-gradient(135deg,rgba(18,49,72,.98),rgba(8,20,34,.98));box-shadow:0 18px 42px rgba(0,0,0,.18)}.form-panel-title{display:grid;gap:4px;margin-bottom:15px;padding-bottom:13px;border-bottom:1px solid #294762}.form-panel-title p{margin:0;color:#7de4d3;font:10px monospace;letter-spacing:.1em}.form-panel-title b{font-size:15px}.form-panel-title span{color:#829fb7;font-size:11px}.customer-table{grid-template-columns:minmax(160px,1.3fr) minmax(110px,.85fr) minmax(68px,.45fr) minmax(72px,.5fr) minmax(160px,1.3fr) minmax(64px,.45fr)}.product-table{grid-template-columns:minmax(165px,1.3fr) minmax(105px,.78fr) minmax(75px,.52fr) minmax(90px,.7fr) minmax(70px,.5fr) minmax(64px,.45fr)}.customer-table>a,.product-table>a{justify-self:end;min-width:64px;white-space:nowrap}.customer-table>span,.product-table>span,.source-table>span{min-width:0;overflow-wrap:anywhere}.source-table{grid-template-columns:minmax(52px,.38fr) minmax(120px,.85fr) minmax(150px,1.2fr) minmax(180px,1.45fr)}.metric-grid article{min-height:122px;display:flex;flex-direction:column;justify-content:center}.panel{box-shadow:0 18px 44px rgba(0,0,0,.14)}.button{transition:transform .16s ease,border-color .16s ease,box-shadow .16s ease}.button:hover{transform:translateY(-1px);box-shadow:0 8px 20px rgba(48,133,177,.17)}.button:focus-visible,.nav-item:focus-visible,summary:focus-visible{outline:2px solid #80e9dc;outline-offset:3px}.table-row{min-height:62px}.table-row:hover{background:rgba(42,91,128,.12)}
@media(max-width:980px){.customer-table{grid-template-columns:minmax(155px,1.15fr) minmax(100px,.8fr) 70px 78px minmax(130px,1fr) 68px}.product-table{grid-template-columns:minmax(150px,1.2fr) minmax(100px,.75fr) 80px 90px 76px 66px}}
@media(max-width:650px){.add-customer-menu,.add-product-menu,.add-customer-menu[open],.add-product-menu[open]{width:100%;margin:12px 0 16px}.add-customer-menu[open]>summary,.add-product-menu[open]>summary{margin-top:0}.add-customer-menu>summary,.add-product-menu>summary{float:none}.add-customer-panel,.add-product-panel{margin-top:12px;padding:15px}.customer-table,.product-table,.source-table{grid-template-columns:1fr}.customer-table>a,.product-table>a{justify-self:start}.table-row{gap:7px;padding:15px 0}.metric-grid article{min-height:auto}}


/* Directory header alignment: keep title, description, table header and add action on independent rows. */
.customer-directory .section-head,.product-directory .section-head{margin-bottom:16px}.add-customer-menu,.add-product-menu{position:absolute;top:19px;right:19px;width:auto;margin:0}.add-customer-menu>summary,.add-product-menu>summary{float:none}.add-customer-menu[open],.add-product-menu[open]{position:static;width:100%;margin:0 0 18px}.add-customer-menu[open]>summary,.add-product-menu[open]>summary{position:absolute;top:19px;right:19px;margin:0}.add-customer-panel,.add-product-panel{clear:none}
@media(max-width:650px){.add-customer-menu,.add-product-menu,.add-customer-menu[open],.add-product-menu[open]{position:static;width:100%;margin:12px 0 16px}.add-customer-menu[open]>summary,.add-product-menu[open]>summary{position:static;margin:0}}


/* Project operations use a directory first; each task opens on its own route. */
.project-subnav{display:flex;flex-wrap:wrap;gap:8px;margin:-4px 0 18px}.project-subnav a{padding:8px 11px;border:1px solid #294762;border-radius:999px;color:#9cb9cf;background:rgba(11,29,47,.7);font-size:11px;transition:background .16s ease,border-color .16s ease,color .16s ease}.project-subnav a:hover,.project-subnav a.active{border-color:rgba(103,207,218,.55);background:linear-gradient(105deg,rgba(31,100,128,.64),rgba(53,62,151,.5));color:#e8fffc}.project-operation-directory{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:15px;margin-bottom:17px}.operation-card{position:relative;display:flex;flex-direction:column;min-height:200px;padding:20px;border:1px solid #284663;border-radius:14px;background:linear-gradient(145deg,rgba(16,43,65,.98),rgba(8,20,35,.98));overflow:hidden;transition:transform .18s ease,border-color .18s ease,box-shadow .18s ease}.operation-card:before{content:'';position:absolute;inset:0;background:radial-gradient(circle at 100% 0,rgba(91,127,240,.17),transparent 35%);opacity:.8}.operation-card:hover{transform:translateY(-3px);border-color:rgba(102,220,211,.55);box-shadow:0 20px 40px rgba(0,0,0,.22)}.operation-card>*{position:relative}.operation-card p{margin:10px 0 5px;color:#7de4d3;font:10px monospace;letter-spacing:.1em}.operation-card h2{margin:0;font-size:20px}.operation-card>span:not(.operation-index){max-width:380px;margin-top:9px;color:#91abc1;font-size:12px;line-height:1.65}.operation-card small{display:flex;justify-content:space-between;gap:12px;margin-top:auto;padding-top:18px;color:#7d9ab3;font-size:11px}.operation-card small b{color:#91ebdf;font-weight:600;white-space:nowrap}.operation-index{display:grid;place-items:center;width:31px;height:31px;border:1px solid rgba(118,231,214,.36);border-radius:9px;color:#9aeee1;background:rgba(23,73,78,.55);font:11px monospace}.project-directory-note{margin-top:0}@media(max-width:650px){.project-operation-directory{grid-template-columns:1fr}.operation-card{min-height:180px}.project-subnav{gap:6px}.project-subnav a{padding:7px 9px}}


/* Project data overview follows the dashboard template; each tab renders only its own page. */
.project-metrics{margin-bottom:17px}.project-dashboard-grid{display:grid;grid-template-columns:1.2fr .8fr;gap:17px}.access-chart svg{display:block;width:100%;height:auto;margin-top:4px}.access-chart .chart-grid line{stroke:#24435d;stroke-dasharray:4 6}.access-chart .chart-area{fill:url(#accessFill)}.access-chart .chart-line{fill:none;stroke:#74e6d5;stroke-width:3;stroke-linecap:round;stroke-linejoin:round}.access-chart circle{fill:#a8fff2;stroke:#1c585e;stroke-width:2}.access-chart text{fill:#7491aa;font-size:10px}.access-chart text.chart-value{fill:#d9fff8;font-size:10px;font-weight:700}.chart-legend{display:flex;align-items:center;gap:6px;color:#a7c4d5;font-size:11px}.chart-legend i{width:7px;height:7px;border-radius:50%;background:#74e6d5;box-shadow:0 0 9px #74e6d5}.chart-caption{margin:4px 0 0;color:#7996af;font-size:11px}.project-config-card{display:flex;flex-direction:column}.config-status-list{display:grid;gap:0;margin:5px 0 15px;border:1px solid #29455e;border-radius:11px;overflow:hidden}.config-status-list span{display:flex;justify-content:space-between;gap:12px;padding:11px 13px;border-top:1px solid #203b54;color:#8faac0;font-size:11px}.config-status-list span:first-child{border-top:0}.config-status-list b{color:#d9f5f1;font-family:monospace;font-size:11px}.project-config-card .notice{margin-top:auto}.project-subnav{margin:0 0 18px;padding:8px;border:1px solid #28435d;border-radius:12px;background:rgba(11,29,47,.76)}.project-subnav a{padding:9px 12px}.project-subnav a.active{box-shadow:inset 0 0 0 1px rgba(132,231,220,.12)}@media(max-width:900px){.project-dashboard-grid{grid-template-columns:1fr}}@media(max-width:650px){.project-subnav{padding:6px}.project-subnav a{padding:7px 9px}.project-metrics{grid-template-columns:1fr 1fr}.access-chart svg{min-width:460px}.access-chart{overflow-x:auto}}


/* Customer-managed cold updates and polished source task submission. */
.source-task-layout,.cold-update-grid{display:grid;grid-template-columns:1.05fr .95fr;gap:17px;margin-bottom:17px}.source-submit-panel,.source-rule-panel,.cold-platform-card{margin:0}.source-upload-form{margin-top:16px}.file-pick{padding:14px!important;border:1px dashed #3f6982!important;border-radius:11px;background:rgba(9,26,42,.8)}.file-pick input{padding:0!important;border:0!important;background:transparent!important}.file-pick span,.cold-platform-card label>span{color:#7794ad;font-size:10px}.source-rule{display:grid;gap:5px;padding:13px 0;border-top:1px solid #203a54}.source-rule:first-of-type{border-top:0}.source-rule b{color:#8de9da;font:11px monospace}.source-rule span{color:#8faac0;font-size:12px;line-height:1.6}.source-history{margin-top:0}.cold-update-intro{margin-bottom:17px}.cold-update-grid{grid-template-columns:1fr 1fr}.cold-platform-card{position:relative}.release-current{display:grid;gap:4px;margin:0 0 15px;padding:12px;border:1px solid #294b60;border-radius:10px;background:rgba(10,28,44,.7)}.release-current b{font-size:12px;color:#def8f2}.release-current small{color:#7896af;font-size:10px;overflow-wrap:anywhere}.release-current.empty{border-style:dashed}.cold-platform-card .check{padding:10px 0;border-top:1px solid #203a54;border-bottom:1px solid #203a54}.cold-platform-card>.button{margin-top:11px}@media(max-width:820px){.source-task-layout,.cold-update-grid{grid-template-columns:1fr}}


/* AI task command center: readable task directory, complete feedback and event timeline. */
.ai-queue-metrics article{min-height:126px}.ai-task-directory{padding:0;overflow:hidden}.ai-task-directory>.section-head{padding:20px 20px 15px;margin:0;border-bottom:1px solid #223d58}.ai-task-directory>.section-head>div>span,.ai-task-detail>.section-head>div>span{display:block;max-width:760px;margin-top:7px;color:#7f9db5;font-size:11px;line-height:1.6}.ai-task-grid{display:grid;grid-template-columns:minmax(210px,1.1fr) minmax(160px,.85fr) minmax(170px,.85fr) minmax(240px,1.35fr) minmax(125px,.65fr);gap:16px;align-items:start}.ai-task-head{padding:12px 20px;background:#10243a;color:#86a4bc;font-size:10px}.ai-task-row{position:relative;padding:17px 20px;border-top:1px solid #213c56;background:linear-gradient(90deg,rgba(14,33,53,.68),rgba(9,21,36,.28));transition:background .16s ease,border-color .16s ease}.ai-task-row:hover,.ai-task-row.selected{border-color:rgba(104,224,208,.32);background:linear-gradient(90deg,rgba(20,62,81,.45),rgba(25,32,70,.27))}.ai-task-identity,.ai-task-owner,.ai-task-stage,.ai-task-feedback,.ai-task-actions{min-width:0}.ai-task-identity b,.ai-task-owner b,.ai-task-stage b{display:block;color:#eaf7ff;font-size:12px;line-height:1.45}.ai-task-identity small,.ai-task-owner small,.ai-task-stage small,.ai-task-identity em,.ai-task-owner em,.ai-task-feedback small,.ai-task-actions small{display:block;margin-top:4px;color:#7f9db5;font-size:10px;line-height:1.5;font-style:normal;overflow-wrap:anywhere}.ai-task-identity small{color:#a8c8dc;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ai-task-stage .status{margin-top:7px}.ai-task-feedback{padding-left:13px;border-left:2px solid rgba(117,224,209,.24)}.ai-task-feedback>b{display:block;color:#9aeade;font:10px monospace;letter-spacing:.06em}.ai-task-feedback p{display:-webkit-box;margin:5px 0 0;color:#b0c7d7;font-size:11px;line-height:1.55;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}.ai-task-actions{display:grid;justify-items:start;gap:8px}.ai-task-actions small{margin:0;line-height:1.6}.ai-task-detail{padding:21px}.ai-detail-meta{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:11px;margin-bottom:16px}.ai-detail-meta article{min-width:0;padding:13px;border:1px solid #294861;border-radius:11px;background:rgba(8,24,40,.68)}.ai-detail-meta span{display:block;color:#7e9ab5;font:10px monospace;letter-spacing:.05em}.ai-detail-meta b{display:block;margin:7px 0 4px;color:#e8f8ff;font-size:13px;overflow-wrap:anywhere}.ai-detail-meta small{display:block;color:#8aa8be;font-size:10px;overflow-wrap:anywhere}.ai-detail-meta .mono{font-family:monospace}.ai-detail-columns{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-bottom:16px}.ai-detail-columns .subpanel{min-height:146px}.ai-detail-columns .section-head{margin-bottom:9px}.ai-detail-columns .section-head h2{font-size:14px}.task-customer-feedback{border-color:rgba(92,211,191,.3)}.task-admin-feedback{border-color:rgba(118,132,240,.3)}.task-customer-feedback p,.task-admin-feedback p{margin:9px 0;color:#aec7d6;font-size:12px;line-height:1.7;white-space:normal}.task-customer-feedback small{color:#e4c891;font-size:10px}.ai-event-timeline{padding:16px;border:1px solid #29475f;border-radius:13px;background:rgba(7,20,34,.64)}.ai-event-timeline>.section-head{margin-bottom:5px}.ai-event-timeline>.section-head h2{font-size:15px}.ai-timeline-list{display:grid}.ai-timeline-list article{display:grid;grid-template-columns:148px minmax(0,1fr) auto;gap:14px;align-items:start;padding:13px 0;border-top:1px solid #203a54}.ai-timeline-list time{color:#83a1b8;font:10px monospace;line-height:1.6}.ai-timeline-list b{display:block;color:#e5f6ff;font-size:12px}.ai-timeline-list p{margin:5px 0 0;color:#9db7c9;font-size:11px;line-height:1.65}.ai-timeline-list details{margin-top:8px;color:#83dcd1;font-size:10px}.ai-timeline-list summary{cursor:pointer}.ai-timeline-list pre{max-height:180px;overflow:auto;margin:8px 0 0;padding:10px;border:1px solid #253f58;border-radius:8px;background:#071321;color:#91abc0;font:10px/1.5 monospace;white-space:pre-wrap}.ai-timeline-empty{padding:14px;border:1px dashed #34536b;border-radius:10px;color:#9fb8c9}.ai-timeline-empty b{color:#e7f8f5}.ai-timeline-empty p{margin:5px 0 0;font-size:11px;line-height:1.6}.ai-feedback-editor{margin-top:16px;padding:16px;border:1px solid rgba(91,177,216,.32);border-radius:13px;background:linear-gradient(120deg,rgba(14,49,65,.55),rgba(9,21,38,.82))}.ai-feedback-editor .section-head h2{font-size:15px}.ai-feedback-editor .stack-form{grid-template-columns:1fr 1fr;gap:12px}.ai-feedback-editor .button{grid-column:1/-1;justify-self:start}@media(max-width:1050px){.ai-task-grid{grid-template-columns:1.1fr .85fr .85fr 1.2fr}.ai-task-head span:last-child{display:none}.ai-task-actions{grid-column:1/-1;display:flex;align-items:center;justify-content:space-between;padding-top:3px}.ai-detail-meta{grid-template-columns:1fr 1fr}}@media(max-width:700px){.ai-task-head{display:none}.ai-task-row{grid-template-columns:1fr;padding:16px}.ai-task-feedback{padding:11px 0 0;border-left:0;border-top:1px solid #294660}.ai-task-actions{grid-column:auto;align-items:flex-start;justify-content:flex-start}.ai-detail-meta,.ai-detail-columns,.ai-feedback-editor .stack-form{grid-template-columns:1fr}.ai-timeline-list article{grid-template-columns:1fr;gap:6px}.ai-timeline-list article>.status{margin-top:3px}.ai-feedback-editor .button{grid-column:auto}}


/* Independent AI task detail page and private administrator-to-AI conversation. */
.task-detail-hero{padding:20px 22px;margin-bottom:16px;background:linear-gradient(120deg,rgba(20,59,78,.52),rgba(13,25,51,.72));border-color:rgba(89,192,213,.28)}.task-detail-hero .section-head{margin-bottom:17px}.task-detail-hero .section-head h2{max-width:760px;overflow-wrap:anywhere}.task-detail-hero .section-head span{display:block;margin-top:7px;color:#88a7bd;font-size:11px}.task-detail-status{display:grid;justify-items:end;gap:8px;text-align:right}.task-detail-status>b{color:#ddf9f5;font-size:13px}.task-detail-tabs{display:flex;flex-wrap:wrap;gap:8px;padding-top:15px;border-top:1px solid rgba(77,125,151,.35)}.task-detail-tabs a{padding:9px 14px;border:1px solid #294a62;border-radius:9px;background:rgba(5,19,33,.48);color:#a7c1d2;font-size:12px;text-decoration:none;transition:transform .16s ease,border-color .16s ease,background .16s ease}.task-detail-tabs a:hover{transform:translateY(-1px);border-color:#55cddb;color:#e8fffc}.task-detail-tabs a.active{border-color:#63d8d0;background:linear-gradient(120deg,rgba(49,174,190,.3),rgba(74,93,204,.33));color:#f2fffe;box-shadow:0 6px 20px rgba(30,168,183,.12)}.task-detail-overview{margin-bottom:16px}.preline{white-space:normal}.task-detail-quick-links>div{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.task-detail-quick-links a{padding:14px;border:1px solid #294961;border-radius:10px;background:rgba(11,31,49,.7);color:#8de6d9;font-size:12px;text-decoration:none;transition:transform .16s ease,border-color .16s ease}.task-detail-quick-links a:hover{transform:translateY(-2px);border-color:#62d7ce}.ai-chat-panel{padding:21px}.ai-chat-panel .section-head>div>span{display:block;max-width:690px;margin-top:7px;color:#829fb6;font-size:11px;line-height:1.65}.ai-chat-stream{display:grid;gap:12px;min-height:220px;max-height:580px;overflow:auto;margin:17px 0;padding:16px;border:1px solid #284960;border-radius:13px;background:radial-gradient(circle at 70% 0,rgba(49,94,147,.13),transparent 38%),rgba(5,17,29,.76)}.ai-chat-empty{align-self:center;text-align:center;color:#91aabe}.ai-chat-empty b{display:block;color:#e2f7f6}.ai-chat-empty p{margin:7px 0 0;font-size:12px}.ai-chat-message{max-width:min(82%,760px);padding:12px 14px;border:1px solid #2a4d65;border-radius:13px}.ai-chat-message small{display:block;margin-bottom:7px;color:#83a3bb;font:10px monospace}.ai-chat-message p{margin:0;color:#d5e8f2;font-size:12px;line-height:1.75}.ai-chat-message.from-admin{justify-self:end;border-color:rgba(96,130,238,.45);border-bottom-right-radius:4px;background:linear-gradient(130deg,rgba(57,74,148,.46),rgba(29,43,92,.62))}.ai-chat-message.from-admin small{color:#b1befd}.ai-chat-message.from-ai{justify-self:start;border-color:rgba(79,199,184,.43);border-bottom-left-radius:4px;background:linear-gradient(130deg,rgba(21,90,89,.42),rgba(11,48,62,.62))}.ai-chat-message.from-ai small{color:#8ce7d9}.ai-chat-composer{display:grid;gap:10px;padding:15px;border:1px solid rgba(86,158,194,.35);border-radius:12px;background:rgba(13,39,56,.62)}.ai-chat-composer label{display:grid;gap:8px;color:#d9edf5;font-size:12px}.ai-chat-composer textarea{min-height:110px;resize:vertical}.chat-help{margin:0;color:#95adbd;font-size:10px;line-height:1.65}.ai-chat-composer .button{justify-self:start}.task-detail-feedback{max-width:100%}.task-detail-feedback .stack-form{grid-template-columns:1fr 1fr}.task-detail-feedback .button{grid-column:1/-1;justify-self:start}.task-detail-timeline{padding:20px}.task-detail-timeline .section-head>div>span{display:block;margin-top:6px;color:#85a3b9;font-size:11px}@media(max-width:760px){.task-detail-hero,.ai-chat-panel,.task-detail-timeline{padding:16px}.task-detail-hero .section-head{display:grid;gap:12px}.task-detail-status{justify-items:start;text-align:left}.task-detail-quick-links>div,.task-detail-feedback .stack-form{grid-template-columns:1fr}.ai-chat-message{max-width:94%}.task-detail-feedback .button{grid-column:auto}.task-detail-tabs a{flex:1 1 calc(50% - 8px);text-align:center}.ai-chat-stream{max-height:480px}}


/* Private OSS connection and project JSON publishing console. */
.oss-security-banner{margin-bottom:16px;background:linear-gradient(120deg,rgba(13,68,76,.52),rgba(18,30,73,.5));border-color:rgba(92,204,197,.36)}.oss-security-banner .section-head{margin:0}.oss-security-banner .section-head span{display:block;max-width:820px;margin-top:7px;color:#a4c6d3;font-size:11px;line-height:1.7}.oss-connection-grid{align-items:start}.oss-connection-grid>.panel{min-height:100%}.oss-save-panel{display:flex;align-items:center;justify-content:space-between;gap:20px;margin:16px 0;background:rgba(10,30,48,.82)}.oss-save-panel b{display:block;color:#e4f9f7;font-size:13px}.oss-save-panel p{max-width:760px;margin:6px 0 0;color:#8eacbd;font-size:11px;line-height:1.65}.oss-save-panel .button{white-space:nowrap}.checkbox-line{display:flex!important;align-items:center!important;gap:9px!important;padding:10px 12px;border:1px solid #2a4a60;border-radius:9px;background:rgba(7,24,39,.56);color:#c9e2eb!important}.checkbox-line input{width:auto!important;min-height:auto!important;margin:0}.oss-connection-form input[type=password]{letter-spacing:.08em}@media(max-width:760px){.oss-save-panel{align-items:flex-start;flex-direction:column}.oss-save-panel .button{width:100%}}


/* Client multi-line management: each route exposes explicit edit and delete actions. */
/* 多线路操作按钮统一布局：编辑、暂停/恢复、删除保持同一组，不再被网格挤散 */
.line-list>div.line-row{grid-template-columns:30px minmax(210px,1.45fr) auto minmax(150px,.9fr) minmax(235px,auto)}
.line-actions{display:flex;align-items:center;justify-content:flex-start;gap:8px;min-width:235px;white-space:nowrap}
.line-actions form,.line-actions .inline-delete-form{display:inline-flex;align-items:center;margin:0!important;padding:0!important}
.line-actions .button{min-width:48px;height:34px;line-height:1;white-space:nowrap;box-sizing:border-box}
.line-actions .button.danger{min-width:48px}
.line-row>small{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.line-select{display:flex!important;align-items:center!important;justify-content:center!important;padding:0!important;cursor:pointer}.line-select input{width:15px!important;min-height:15px!important;margin:0!important;accent-color:#62d9cb}.line-actions{display:flex;align-items:center;justify-content:flex-start;gap:8px;min-width:235px;white-space:nowrap}.inline-delete-form{display:inline-flex;margin:0}.line-batch-toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:10px;padding:11px 13px;border:1px solid rgba(66,116,145,.35);border-radius:10px;background:rgba(8,24,39,.55)}.line-batch-toolbar form{display:flex;align-items:center;justify-content:space-between;gap:12px;width:100%;margin:0}.line-batch-toolbar .check{display:flex;align-items:center;gap:8px;color:#a7c1d0;font-size:11px}.line-batch-toolbar input{accent-color:#62d9cb}.line-batch-add-form{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:12px;align-items:end;margin-top:14px;padding:15px;border:1px solid rgba(76,157,184,.35);border-radius:12px;background:linear-gradient(120deg,rgba(12,49,65,.48),rgba(8,24,40,.72))}.line-batch-add-form label{display:grid;gap:7px;color:#d8eef2;font-size:12px}.line-batch-add-form textarea{width:100%;padding:10px 12px;border:1px solid #2b4b63;border-radius:9px;background:#071827;color:#e8f7fb;resize:vertical;font:12px/1.6 monospace}.line-batch-add-form small{color:#83a3b7;font-size:10px;line-height:1.5}.button.danger{border-color:rgba(246,127,151,.5);background:rgba(84,30,44,.48);color:#ffc3cf}.button.danger:hover{border-color:#ff94aa;background:rgba(113,35,55,.72);color:#fff}.line-editing-banner{margin:16px 0 0}.line-editing-banner p{margin-bottom:0}.line-editor-form{grid-template-columns:minmax(180px,.8fr) minmax(260px,1.7fr) auto auto}.line-editor-form .button{white-space:nowrap}.button:disabled{cursor:not-allowed;opacity:.5;transform:none;box-shadow:none}@media(max-width:760px){.line-list>div.line-row,.line-editor-form{grid-template-columns:1fr}.line-select{justify-content:flex-start!important}.line-actions{justify-content:flex-start;min-width:0;white-space:normal}.line-batch-toolbar,.line-batch-toolbar form{align-items:flex-start;flex-direction:column}.line-batch-add-form{grid-template-columns:1fr}.line-batch-add-form .button{justify-self:start}.line-editor-form .button{justify-self:start}}


/* Client line changes are staged first, then released as one versioned JSON hot update. */
.line-version-summary{display:flex;align-items:center;justify-content:flex-end;gap:8px;flex-wrap:wrap}.hot-version{display:inline-flex;align-items:center;gap:7px;padding:6px 9px;border:1px solid rgba(98,218,204,.34);border-radius:999px;background:rgba(18,80,76,.32);color:#9ddfd7;font-size:10px;white-space:nowrap}.hot-version b{color:#e2fffb;font-family:monospace;font-size:11px}.line-release-panel{display:flex;align-items:center;justify-content:space-between;gap:20px;margin:17px 0 0;padding:16px;border:1px solid rgba(95,183,215,.34);border-radius:13px;background:linear-gradient(118deg,rgba(16,68,75,.55),rgba(29,37,94,.45))}.line-release-panel p{margin:0 0 6px;color:#80e6d6;font:10px monospace;letter-spacing:.1em}.line-release-panel h3{margin:0;color:#ebfaff;font-size:15px}.line-release-panel>div>span{display:block;max-width:620px;margin-top:7px;color:#a2bdcc;font-size:11px;line-height:1.65}.line-release-action{display:grid;justify-items:end;gap:9px;flex:0 0 auto}.line-release-action small{color:#b1cad8;font-size:10px}.line-release-action small b{color:#a9f0df;font-family:monospace}.line-release-action form{margin:0}.line-release-action .button{white-space:nowrap}@media(max-width:760px){.line-version-summary{justify-content:flex-start}.line-release-panel{align-items:flex-start;flex-direction:column}.line-release-action{justify-items:start}.line-release-action .button{width:100%}}

/* Cold updates are intentionally separated from line hot-update releases. */
.cold-separation-notice{display:grid;grid-template-columns:auto 1fr;gap:10px;align-items:start;margin-top:15px;padding:12px 14px;border:1px solid rgba(65,196,174,.36);border-radius:10px;background:linear-gradient(105deg,rgba(18,104,91,.2),rgba(8,24,39,.42))}.cold-separation-notice b{color:#8de9da;font:11px monospace;letter-spacing:.05em}.cold-separation-notice span{color:#b8cfe0;font-size:12px;line-height:1.6}.cold-separation-notice strong{color:#f7d783}.release-recognized{display:grid;gap:4px;padding-bottom:8px;border-bottom:1px solid #203a54}.release-recognized span{color:#8de9da;font:10px monospace;letter-spacing:.06em}.cold-update-form{gap:14px}.cold-update-form textarea{min-height:92px;resize:vertical}.cold-update-form label>span{display:block;margin-top:5px;line-height:1.5}.cold-external-link{display:block;margin:-3px 0 1px;color:#8de9da;font-size:11px;text-decoration:none;overflow-wrap:anywhere}.cold-external-link:hover{text-decoration:underline}.force-switch{display:grid!important;grid-template-columns:20px 1fr;gap:8px;align-items:start!important;padding:13px 0!important;background:transparent!important}.force-switch input{margin:3px 0 0}.force-switch span{margin:0!important}.force-switch b{display:block;color:#e9f8ff;font-size:12px}.force-switch small{display:block;margin-top:4px;color:#7f9cb4;font-size:11px;line-height:1.55}.cold-platform-card .file-pick{margin-bottom:0}
@media(max-width:620px){.cold-separation-notice{grid-template-columns:1fr}.cold-update-grid{grid-template-columns:1fr}}


/* Resumable uploads: source ZIP, Android APK and iOS IPA share the same clear progress treatment. */
.upload-progress{display:grid;gap:8px;padding:12px 13px;border:1px solid #2a4d66;border-radius:10px;background:linear-gradient(120deg,rgba(12,37,55,.9),rgba(10,25,45,.78))}.upload-progress>div{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.upload-progress [data-upload-state]{color:#b9d5e4;font-size:11px;line-height:1.55}.upload-progress [data-upload-percent]{flex:0 0 auto;color:#8ef0dd;font:11px monospace}.upload-progress progress{width:100%;height:8px;appearance:none;overflow:hidden;border:0;border-radius:999px;background:#071522}.upload-progress progress::-webkit-progress-bar{background:#071522}.upload-progress progress::-webkit-progress-value{background:linear-gradient(90deg,#4ec5dd,#7779ee);border-radius:999px;box-shadow:0 0 12px rgba(93,207,215,.45)}.upload-progress progress::-moz-progress-bar{background:linear-gradient(90deg,#4ec5dd,#7779ee);border-radius:999px}.upload-progress small{color:#7f9eb6;font-size:10px;line-height:1.5}.upload-progress .button{justify-self:start}.upload-progress[data-state="uploading"]{border-color:rgba(83,202,214,.48)}.upload-progress[data-state="paused"]{border-color:rgba(242,178,103,.58);background:linear-gradient(120deg,rgba(77,55,25,.36),rgba(16,31,48,.88))}.upload-progress[data-state="paused"] [data-upload-state]{color:#ffd797}.upload-progress[data-state="complete"]{border-color:rgba(95,223,183,.45);background:linear-gradient(120deg,rgba(21,83,73,.35),rgba(10,28,45,.88))}.source-upload-form .upload-progress,.cold-update-form .upload-progress{margin-top:1px}@media(max-width:620px){.upload-progress>div{align-items:flex-start;flex-direction:column;gap:5px}.upload-progress .button{width:100%}}


/* Cold packages use a dedicated start button; the lower area remains a compact progress-only bar. */
.upload-action-row{display:flex;align-items:center;gap:10px;margin-top:-1px}.cold-update-form .cold-upload-progress{display:flex;align-items:center;gap:10px;padding:10px 12px;min-height:40px}.cold-upload-progress progress{flex:1;min-width:0}.cold-upload-progress [data-upload-percent]{flex:0 0 34px;text-align:right}.cold-upload-progress[data-state="complete"]{border-color:rgba(95,223,183,.45)}

/* Keep the immediate-upload action inside the dashed package picker. */
.cold-update-form .upload-file-row{display:flex;align-items:center;gap:10px;margin:8px 0}.cold-update-form .upload-file-row input[type="file"]{min-width:0;max-width:100%}.cold-update-form .upload-file-row .button{flex:0 0 auto;white-space:nowrap}@media(max-width:620px){.cold-update-form .upload-file-row{align-items:stretch;flex-direction:column}.cold-update-form .upload-file-row .button{width:100%}}

/* After 100%, replace the bar with an explicit package-inspection operation state. */
.upload-inspection{display:grid;gap:5px;padding:12px 13px;border:1px solid rgba(81,196,213,.43);border-radius:10px;background:linear-gradient(120deg,rgba(10,59,74,.62),rgba(10,27,45,.86))}.upload-inspection[hidden]{display:none}.upload-inspection [data-upload-inspection-state]{color:#a8eaf0;font-size:12px}.upload-inspection [data-upload-inspection-result]{color:#f1fbff;font-size:12px;font-weight:600;line-height:1.6}.upload-inspection[data-state="working"] [data-upload-inspection-state]::before{content:"";display:inline-block;width:7px;height:7px;margin-right:7px;border-radius:50%;background:#79e9de;box-shadow:0 0 0 4px rgba(121,233,222,.12);animation:uploadPulse 1.1s ease-in-out infinite}.upload-inspection[data-state="error"]{border-color:rgba(242,126,126,.62);background:rgba(83,27,40,.45)}.upload-inspection[data-state="error"] [data-upload-inspection-state]{color:#ffb5bd}@keyframes uploadPulse{50%{opacity:.35;transform:scale(.72)}}

/* The custom flex layout must not override the semantic hidden state. */
.cold-update-form .cold-upload-progress[hidden]{display:none!important}

/* Per-platform force-update switch lives in the card heading and submits through its linked form. */
.cold-platform-card>.section-head{gap:10px}.cold-platform-card>.section-head>div:first-child{margin-right:auto}.header-force-toggle{display:inline-flex;align-items:center;gap:7px;cursor:pointer;user-select:none;color:#aac3d5;font-size:11px;white-space:nowrap}.header-force-toggle input{position:absolute;inline-size:1px;block-size:1px;opacity:0;pointer-events:none}.header-force-toggle>span{position:relative;display:inline-block;width:38px;height:20px;border:1px solid #37566d;border-radius:999px;background:#172d40;box-shadow:inset 0 1px 3px rgba(0,0,0,.28);transition:background .18s ease,border-color .18s ease}.header-force-toggle>span:after{content:"";position:absolute;top:3px;left:3px;width:12px;height:12px;border-radius:50%;background:#7d9eb5;box-shadow:0 1px 4px rgba(0,0,0,.4);transition:transform .18s ease,background .18s ease}.header-force-toggle input:checked+span{border-color:#5fd7c5;background:rgba(30,139,130,.64)}.header-force-toggle input:checked+span:after{transform:translateX(18px);background:#d9fff8}.header-force-toggle input:focus-visible+span{outline:2px solid #6be2dc;outline-offset:3px}.header-force-toggle b{font-size:11px;font-weight:600}.cold-force-hint{display:grid;gap:4px;padding:11px 12px;border-top:1px solid rgba(56,97,124,.45);color:#819eb4;font-size:11px;line-height:1.55}.cold-force-hint b{color:#a8cfe0;font-size:11px}.cold-force-hint span{max-width:680px}@media(max-width:620px){.cold-platform-card>.section-head{display:grid;grid-template-columns:1fr auto;align-items:start}.cold-platform-card>.section-head>.status{grid-column:2;justify-self:end}.header-force-toggle b{display:none}}

/* Customer-selected login-page features are persisted with each source task. */
.source-feature-options{display:grid;gap:10px;margin:0;padding:14px;border:1px solid rgba(75,156,183,.48);border-radius:11px;background:linear-gradient(125deg,rgba(15,57,72,.5),rgba(10,27,45,.82))}.source-feature-options legend{padding:0 6px;color:#d8f6f5;font-size:12px;font-weight:700}.source-feature-options legend small{margin-left:7px;color:#7fa9bb;font-size:10px;font-weight:400}.source-feature-options>p{margin:0;color:#98b6c7;font-size:10px;line-height:1.65}.source-feature-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.source-feature-choice{display:grid!important;grid-template-columns:17px 1fr;gap:8px;align-items:start!important;min-height:66px;padding:10px!important;border:1px solid rgba(57,103,130,.72);border-radius:9px;background:rgba(5,22,37,.46);cursor:pointer;transition:border-color .16s ease,background .16s ease,transform .16s ease}.source-feature-choice:hover{transform:translateY(-1px);border-color:#58cfc8;background:rgba(18,74,81,.33)}.source-feature-choice input{width:14px!important;min-height:14px!important;margin:2px 0 0}.source-feature-choice span{margin:0!important}.source-feature-choice b{display:block;color:#d6ecf5;font-size:11px}.source-feature-choice small{display:block;margin-top:4px;color:#7f9db3;font-size:10px;line-height:1.45}@media(max-width:620px){.source-feature-grid{grid-template-columns:1fr}.source-feature-options legend small{display:block;margin:5px 0 0}}

/* Feature choices remain visible to platform administrators in the AI task record. */
.task-selected-features{margin-top:16px;padding:17px 19px}.task-selected-features .section-head{margin-bottom:12px}.task-selected-features .section-head span{display:block;max-width:780px;margin-top:5px;color:#88a8bc;font-size:11px;line-height:1.6}.feature-label-list{display:flex;flex-wrap:wrap;gap:8px}.feature-label-list span{padding:7px 10px;border:1px solid rgba(87,205,196,.43);border-radius:999px;background:rgba(19,101,97,.24);color:#bdf7ef;font-size:11px}

/* Keep the mandatory remote-line rule fully readable at every dashboard width. */
.source-feature-options>.source-feature-rule{display:block!important;min-height:0!important;max-height:none!important;overflow:visible!important;margin:0!important;padding:9px 10px!important;border-left:3px solid #5ed7ca;border-radius:0 8px 8px 0;background:rgba(6,31,46,.56);color:#b7d1de!important;font-size:11px!important;line-height:1.7!important;white-space:normal!important;overflow-wrap:anywhere}.source-feature-options>.source-feature-rule b{color:#90eadb;font-size:11px;white-space:nowrap}


/* AI-credit account: transparent per-customer balance, frozen amount and immutable ledger. */
.source-credit-summary{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin:16px 0;padding:12px;border:1px solid rgba(74,214,255,.2);border-radius:12px;background:linear-gradient(120deg,rgba(32,113,151,.16),rgba(47,68,151,.13))}
.source-credit-summary>div{min-width:0;padding:4px 8px;border-right:1px solid rgba(151,211,255,.13)}
.source-credit-summary>div:last-child{border-right:0}
.source-credit-summary small,.source-credit-summary span{display:block;color:#8ca4ba;font-size:12px;line-height:1.45}
.source-credit-summary b{display:inline-block;margin:3px 6px 2px 0;color:#e9f7ff;font-size:24px;line-height:1}
.ai-credit-admin-grid{margin-top:18px}
.ai-credit-balance{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin:16px 0}
.ai-credit-balance>div{padding:14px;border:1px solid rgba(74,214,255,.22);border-radius:12px;background:rgba(20,78,112,.17)}
.ai-credit-balance small,.ai-credit-balance span{display:block;color:#8ca4ba;font-size:12px}
.ai-credit-balance b{display:block;margin:4px 0;color:#e9f7ff;font-size:30px;line-height:1.05}
.ai-credit-grant-form{margin-top:12px}
.ai-credit-ledger-list{display:grid;gap:0;margin-top:10px;max-height:375px;overflow:auto;border-top:1px solid rgba(139,192,230,.13)}
.ai-credit-ledger-list>div{display:grid;grid-template-columns:140px minmax(0,1fr) 112px;gap:12px;align-items:center;padding:11px 0;border-bottom:1px solid rgba(139,192,230,.13)}
.ai-credit-ledger-list time{color:#8ca4ba;font-size:12px}.ai-credit-ledger-list span{min-width:0}.ai-credit-ledger-list b,.ai-credit-ledger-list small{display:block}.ai-credit-ledger-list small{overflow:hidden;color:#9fb3c7;font-size:12px;text-overflow:ellipsis;white-space:nowrap}.ai-credit-ledger-list em{color:#a5dfff;font-size:12px;font-style:normal;line-height:1.6;text-align:right}
@media(max-width:760px){.source-credit-summary{grid-template-columns:1fr}.source-credit-summary>div{border-right:0;border-bottom:1px solid rgba(151,211,255,.13)}.source-credit-summary>div:last-child{border-bottom:0}.ai-credit-ledger-list>div{grid-template-columns:1fr 90px}.ai-credit-ledger-list time{grid-column:1/-1}.ai-credit-ledger-list em{grid-column:2;text-align:right}}

/* The mandatory remote-line rule must never be clipped at narrow dashboard widths. */
.source-feature-options{min-width:0!important;max-height:none!important;overflow:visible!important}
.source-feature-options>.source-feature-rule{display:grid!important;grid-template-columns:minmax(0,1fr)!important;gap:4px!important;min-width:0!important;min-height:0!important;max-height:none!important;overflow:visible!important;contain:none!important;white-space:normal!important;word-break:break-word!important;overflow-wrap:anywhere!important}
.source-feature-options>.source-feature-rule b{display:block!important;min-width:0!important;white-space:normal!important;line-height:1.55!important}
.source-feature-options>.source-feature-rule span{display:block!important;min-width:0!important;max-width:100%!important;white-space:normal!important;word-break:break-word!important;overflow-wrap:anywhere!important;line-height:1.7!important}
@media(max-width:760px){.source-feature-options>.source-feature-rule{padding:10px!important;font-size:11px!important;line-height:1.7!important}}


/* Shared account profile and self-service password management. */
.account-profile-hero{margin-bottom:17px}.account-profile-hero .section-head span{display:block;margin-top:7px;color:#8da9bd;font-size:11px;line-height:1.55}.account-profile-meta{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;padding-top:14px;border-top:1px solid rgba(111,169,198,.18)}.account-profile-meta span{min-width:0;color:#88a7ba;font-size:11px}.account-profile-meta b{display:block;margin-top:4px;overflow-wrap:anywhere;color:#e7f7ff;font-size:13px}.account-profile-grid .copy{margin-top:-4px}.account-profile-grid label>span{display:block;margin-top:4px;color:#7896ad;font-size:10px;line-height:1.5}.account-security-note{margin-top:15px}.account-security-note p{margin-bottom:0}@media(max-width:760px){.account-profile-meta{grid-template-columns:1fr;gap:8px}.account-profile-meta span{padding-bottom:8px;border-bottom:1px solid rgba(111,169,198,.13)}.account-profile-meta span:last-child{padding-bottom:0;border-bottom:0}}


/* Login is intentionally a single, centered card with no auxiliary promotion or footer hints. */
.login-shell{display:flex;align-items:center;justify-content:center}.login-card{width:min(440px,100%)}

/* Unified corporate brand mark for the login page, both dashboards and browser tab. */
.brand-logo{display:block;flex:0 0 auto;object-fit:contain;filter:drop-shadow(0 7px 14px rgba(32,152,223,.2))}.brand-logo-sidebar{width:35px;height:35px;border-radius:10px}.brand-logo-login{width:72px;height:72px;margin:0 auto 15px;border-radius:20px}@media(max-width:650px){.brand-logo-login{width:64px;height:64px;border-radius:18px}}


/* Login brute-force protection captcha. It is only rendered after the configured failure threshold. */
.login-captcha{display:grid;gap:9px;padding:12px;border:1px solid rgba(112,210,226,.28);border-radius:12px;background:rgba(11,35,54,.72)}.login-captcha>div:first-child{display:grid;gap:3px}.login-captcha b{color:#d8f6ff;font-size:12px}.login-captcha span{color:#8eacc2;font-size:11px;line-height:1.55}.login-captcha-image{display:flex;align-items:center;gap:9px}.login-captcha-image img{width:160px;height:43px;border:1px solid #31516d;border-radius:8px;background:#0a1c30}.login-captcha-image .button{white-space:nowrap}.login-captcha label{display:grid;gap:7px;color:#a4bbcf;font-size:11px}.login-captcha input{padding:10px;border:1px solid #2c4864;border-radius:9px;background:#091728;color:#eef8ff}@media(max-width:420px){.login-captcha-image{align-items:stretch;flex-direction:column}.login-captcha-image img{width:100%;height:auto}}


/* Platform overview: credit rollups and first-party visit analytics. */
.platform-overview-metrics{margin-bottom:14px}.platform-overview-metrics article b{font-variant-numeric:tabular-nums}.platform-traffic-metrics article{background:linear-gradient(145deg,rgba(15,50,66,.95),rgba(9,23,38,.98))}.platform-analytics-grid{align-items:stretch}.platform-daily-table{grid-template-columns:1.25fr 1fr 1fr 1fr}.customer-traffic-table{grid-template-columns:1.45fr .55fr .65fr .75fr .9fr .6fr 1fr}.customer-traffic-table>span,.platform-daily-table>span{min-width:0;overflow-wrap:anywhere}.overview-credit-list{display:grid;grid-template-columns:1fr 1fr;gap:10px}.overview-credit-list>div{display:grid;gap:5px;min-height:92px;padding:13px;border:1px solid rgba(75,130,164,.42);border-radius:11px;background:rgba(8,25,42,.7)}.overview-credit-list span,.overview-credit-list small{color:#88a3bc;font-size:11px}.overview-credit-list b{color:#d9f7ff;font-size:21px;font-variant-numeric:tabular-nums}.login-guard-settings .stack-form label>span,.field-hint{color:#7895ae;font-size:10px;line-height:1.5}@media(max-width:980px){.customer-traffic-table{grid-template-columns:1.2fr .55fr .6fr .75fr .9fr .6fr 1fr}}@media(max-width:650px){.platform-daily-table,.customer-traffic-table{grid-template-columns:1fr}.overview-credit-list{grid-template-columns:1fr}.platform-overview-metrics{grid-template-columns:1fr 1fr}.customer-traffic-table>span:before,.platform-daily-table>span:before{display:block;margin-bottom:2px;color:#7895ae;font-size:10px}.customer-traffic-table>span:nth-child(1):before{content:'客户'}.customer-traffic-table>span:nth-child(2):before{content:'项目数'}.customer-traffic-table>span:nth-child(3):before{content:'今日访问'}.customer-traffic-table>span:nth-child(4):before{content:'近 7 天'}.customer-traffic-table>span:nth-child(5):before{content:'累计访问'}.customer-traffic-table>span:nth-child(6):before{content:'异常访问'}.customer-traffic-table>span:nth-child(7):before{content:'可用 AI 积分'}.platform-daily-table>span:nth-child(1):before{content:'日期'}.platform-daily-table>span:nth-child(2):before{content:'访问量'}.platform-daily-table>span:nth-child(3):before{content:'异常量'}.platform-daily-table>span:nth-child(4):before{content:'活跃项目'}}


/* Explicit live state for an AI task: processing, paused, stopped or complete. */
.task-live-status{display:grid;grid-template-columns:minmax(0,1.4fr) minmax(190px,.92fr) auto;gap:15px;align-items:center;margin:0 0 16px;padding:15px 17px;border:1px solid rgba(76,144,179,.48);border-radius:13px;background:linear-gradient(120deg,rgba(10,40,57,.9),rgba(10,25,48,.9));box-shadow:inset 0 1px 0 rgba(159,237,255,.05)}
.task-live-main,.task-live-meta{min-width:0}.task-live-main>span,.task-live-meta>span{display:block;color:#84afc2;font:10px monospace;letter-spacing:.08em}.task-live-main>b{display:flex;align-items:center;gap:8px;margin-top:6px;color:#e8f9ff;font-size:18px}.task-live-main>b i{display:block;width:9px;height:9px;border-radius:50%;background:#8ca9bd;box-shadow:0 0 0 4px rgba(140,169,189,.11)}.task-live-main p{margin:6px 0 0;color:#a9c3d2;font-size:11px;line-height:1.65}.task-live-meta{padding-left:15px;border-left:1px solid rgba(101,158,184,.26)}.task-live-meta>b{display:block;margin:5px 0;color:#d8eff8;font-size:12px;line-height:1.55;overflow-wrap:anywhere}.task-live-meta small{display:block;color:#81a0b6;font-size:10px}.task-live-actions{display:grid;justify-items:end;gap:8px}.task-live-actions .button{min-width:90px;padding:8px 11px;font-size:11px;white-space:nowrap}.task-live-status.tone-active{border-color:rgba(74,211,196,.55);background:linear-gradient(120deg,rgba(10,68,73,.64),rgba(13,32,67,.9))}.task-live-status.tone-active .task-live-main>b i{background:#6be4d1;box-shadow:0 0 0 4px rgba(87,223,202,.13),0 0 14px rgba(87,223,202,.55);animation:task-live-pulse 1.55s ease-in-out infinite}.task-live-status.tone-review{border-color:rgba(239,183,91,.54);background:linear-gradient(120deg,rgba(78,56,22,.54),rgba(34,30,56,.9))}.task-live-status.tone-review .task-live-main>b i{background:#ffd078;box-shadow:0 0 0 4px rgba(255,203,112,.12)}.task-live-status.tone-stopped{border-color:rgba(239,104,125,.58);background:linear-gradient(120deg,rgba(75,26,40,.65),rgba(38,24,47,.9))}.task-live-status.tone-stopped .task-live-main>b i{background:#ff8298;box-shadow:0 0 0 4px rgba(255,120,144,.12)}.task-live-status.tone-completed{border-color:rgba(90,213,162,.52);background:linear-gradient(120deg,rgba(19,67,55,.63),rgba(16,36,55,.9))}.task-live-status.tone-completed .task-live-main>b i{background:#77e7be;box-shadow:0 0 0 4px rgba(95,224,174,.12)}.task-live-status.compact{grid-template-columns:minmax(0,1fr) minmax(170px,.65fr) auto;margin:0 0 12px;padding:11px 13px;border-radius:11px}.task-live-status.compact .task-live-main>b{font-size:14px}.task-live-status.compact .task-live-main p{display:none}.task-live-status.compact .task-live-meta{padding-left:12px}.task-live-status.compact .task-live-actions{gap:6px}.task-live-status.compact .task-live-actions .status{display:none}@keyframes task-live-pulse{0%,100%{opacity:1;transform:scale(1)}50%{opacity:.68;transform:scale(.84)}}@media(prefers-reduced-motion:reduce){.task-live-status.tone-active .task-live-main>b i{animation:none}}@media(max-width:760px){.task-live-status,.task-live-status.compact{grid-template-columns:1fr;gap:10px}.task-live-meta,.task-live-status.compact .task-live-meta{padding:10px 0 0;border-top:1px solid rgba(101,158,184,.24);border-left:0}.task-live-actions{display:flex;align-items:center;justify-content:space-between}.task-live-status.compact .task-live-main p{display:block}}


/* Customer-visible escalation is shown only when a task genuinely requires human input. */
.task-list .task-human-support{display:inline-flex;align-items:center;margin:7px 0 0;padding:4px 8px;border:1px solid rgba(255,188,105,.35);border-radius:999px;color:#ffd080;background:rgba(151,88,20,.14);font-size:12px;line-height:1.35}


/* EPUSDT self-service renewal: the client sees a fixed monthly price and hosted checkout only. */
.renewal-layout{display:grid;grid-template-columns:minmax(0,1.05fr) minmax(330px,.95fr);gap:16px;margin-bottom:16px}
.renewal-payment-panel,.renewal-rule-panel{min-height:100%}
.renewal-price{margin:16px 0;padding:18px;border:1px solid rgba(72,211,228,.23);border-radius:14px;background:linear-gradient(135deg,rgba(32,175,212,.12),rgba(94,99,236,.11))}
.renewal-price>span{display:block;color:#8ea9c1;font-size:12px;margin-bottom:5px}
.renewal-price>b{display:block;color:#f1fbff;font-size:29px;line-height:1.1;letter-spacing:-.03em}.renewal-price>b small{font-size:14px;color:#7ae8e1;letter-spacing:0}
.renewal-price p{margin:10px 0 0;color:#aac0d3;line-height:1.75;font-size:13px}.renewal-price strong{color:#77e8df}
.renewal-pay-form{margin-top:16px}.renewal-pay-form small{display:block;color:#8ba8be;line-height:1.6;margin-top:9px}
.renewal-rule-panel .source-rule{margin-top:12px}.renewal-history{margin-top:0}
.renewal-order-table{grid-template-columns:minmax(180px,1.45fr) minmax(110px,.72fr) minmax(126px,.78fr) minmax(100px,.62fr) minmax(130px,.8fr) minmax(92px,.48fr)}
.renewal-order-table small{display:block;color:#8ca4b8;margin-top:4px;font-size:11px}
@media (max-width:960px){.renewal-layout{grid-template-columns:1fr}.renewal-order-table{grid-template-columns:minmax(150px,1.35fr) minmax(88px,.7fr) minmax(110px,.8fr) minmax(92px,.64fr) minmax(108px,.76fr) minmax(76px,.45fr)}}
@media (max-width:720px){.renewal-order-table{grid-template-columns:1fr 1fr}.renewal-order-table>span:nth-child(n+3),.renewal-order-table>div:nth-child(n+3){min-width:0}}
.quick-login-divider{display:flex;align-items:center;gap:10px;margin:18px 0 12px;color:#718ca5;font-size:11px}.quick-login-divider:before,.quick-login-divider:after{content:"";height:1px;flex:1;background:#263e59}.telegram-login-box{display:grid;justify-items:center;gap:8px;padding:13px;border:1px solid rgba(83,155,184,.3);border-radius:11px;background:rgba(11,31,49,.66)}.telegram-login-box p{margin:0;color:#8faec2;font-size:11px}
.telegram-current-binding{display:flex;align-items:center;justify-content:space-between;gap:20px}.telegram-binding-info{min-width:0}.telegram-binding-info p{margin-bottom:0}.telegram-unbind-form{margin:0;flex:0 0 auto}@media (max-width:640px){.telegram-current-binding{align-items:flex-start;gap:12px}.telegram-unbind-form{margin-top:2px}}
.support-chat-layout{display:grid;grid-template-columns:320px minmax(0,1fr);gap:16px}.support-chat-list{padding:18px}.support-conversation-row{display:flex;flex-direction:column;gap:4px;padding:13px 12px;border-bottom:1px solid rgba(140,190,220,.12);color:inherit;text-decoration:none;border-radius:10px}.support-conversation-row:hover,.support-conversation-row.active{background:rgba(59,187,227,.14)}.support-conversation-row small{color:var(--muted,#91aabd)}.support-conversation-row em{font-size:11px;color:#73e0ce;font-style:normal}.support-chat-window{min-height:560px;padding:20px;display:flex;flex-direction:column}.support-messages{flex:1;min-height:280px;max-height:520px;overflow:auto;padding:10px 2px}.support-message{max-width:78%;margin:10px 0;padding:10px 13px;border-radius:12px;background:rgba(51,101,135,.25)}.support-message.customer{margin-right:auto}.support-message.agent{margin-left:auto;background:rgba(54,177,190,.18)}.support-message small{display:block;color:var(--muted,#91aabd);font-size:11px;margin-bottom:5px}.support-message p{margin:0;line-height:1.6}.support-reply-form{display:flex;gap:10px;align-items:flex-end;border-top:1px solid rgba(140,190,220,.15);padding-top:14px}.support-reply-form textarea{flex:1;resize:vertical}@media(max-width:800px){.support-chat-layout{grid-template-columns:1fr}.support-chat-window{min-height:460px}.support-reply-form{flex-direction:column;align-items:stretch}}
.support-three-col{grid-template-columns:250px minmax(360px,1fr) 240px;align-items:stretch}.support-three-col .support-chat-list,.support-three-col .support-chat-window,.customer-card{margin:0}.chat-head{display:flex;justify-content:space-between;gap:12px;align-items:center;padding-bottom:14px;border-bottom:1px solid var(--line)}.chat-head b{display:block;font-size:15px}.chat-head span{display:block;color:var(--muted);font-size:11px;margin-top:5px}.chat-actions{display:flex;gap:7px}.button.danger{color:#ffc1cc;border-color:rgba(255,120,145,.38)}.chat-empty{display:grid;place-items:center;align-content:center;gap:8px;min-height:300px;color:var(--muted);text-align:center}.chat-empty b{color:var(--text);font-size:15px}.customer-card dl{display:grid;grid-template-columns:75px 1fr;gap:0;margin:0}.customer-card dt,.customer-card dd{padding:11px 0;border-bottom:1px solid rgba(140,190,220,.12);font-size:11px}.customer-card dt{color:var(--muted)}.customer-card dd{margin:0;color:var(--text);overflow-wrap:anywhere}.hidden-form{display:none}.chat-messages{min-height:380px}@media(max-width:1100px){.support-three-col{grid-template-columns:230px minmax(340px,1fr)}.customer-card{grid-column:1/-1}.customer-card dl{grid-template-columns:repeat(4,1fr);gap:0 16px}}@media(max-width:800px){.support-three-col{grid-template-columns:1fr}.support-three-col .support-chat-window{min-height:520px}.customer-card{grid-column:auto}.customer-card dl{grid-template-columns:90px 1fr}.chat-head{align-items:flex-start;flex-direction:column}}
@media (min-width:851px){.support-content{padding:22px 20px}.support-three-col{grid-template-columns:190px minmax(320px,1fr) 190px;gap:10px}.support-three-col .support-chat-window{min-width:0}.customer-card dl{grid-template-columns:62px 1fr}.customer-card dt,.customer-card dd{font-size:10px;padding:9px 0}}
@media (min-width:851px) and (max-width:1100px){.shell{grid-template-columns:150px 1fr}.support-three-col{grid-template-columns:175px minmax(270px,1fr) 175px}.topbar{padding:0 18px}.content{padding:22px 14px}}
.nav-submenu{display:grid;gap:2px;margin:-1px 8px 7px 30px;padding-left:10px;border-left:1px solid #294761}.nav-subitem{display:block;padding:7px 8px;border-radius:7px;color:#8faac1;font-size:11px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.nav-subitem:hover,.nav-subitem.active{color:#e7fbff;background:rgba(66,132,170,.22)}


/* Restored client overview metrics, grouped line actions and unobtrusive operation notices. */
.client-overview-project-row{grid-template-columns:auto minmax(150px,1.35fr) repeat(4,minmax(76px,.62fr)) auto auto;column-gap:14px}.client-overview-project-row .overview-row-stat{display:grid;gap:3px;min-width:0}.client-overview-project-row .overview-row-stat small{margin:0;color:#7692ad;font-size:10px}.client-overview-project-row .overview-row-stat b{margin:0;color:#dceff8;font-size:12px;letter-spacing:0;white-space:nowrap}.form-inline-grid{display:grid;grid-template-columns:1fr 1fr;gap:11px}.line-batch-toolbar{justify-content:flex-start;flex-wrap:wrap}.line-batch-toolbar form{width:auto;gap:8px}.line-batch-toolbar #batch-delete-lines-form{margin-right:auto}.flash{position:fixed;z-index:1000;top:50%;left:50%;width:min(520px,calc(100vw - 32px));margin:0;transform:translate(-50%,-50%);box-shadow:0 22px 54px rgba(0,0,0,.42);transition:opacity .32s ease,transform .32s ease}.flash.is-leaving{opacity:0;transform:translate(-50%,-56%);pointer-events:none}@media(max-width:980px){.client-overview-project-row{grid-template-columns:auto minmax(150px,1.3fr) repeat(3,minmax(70px,.65fr)) auto}.client-overview-project-row .overview-row-stat:last-of-type{grid-column:2/3}}@media(max-width:650px){.client-overview-project-row .overview-row-stat{grid-template-columns:90px 1fr;align-items:center}.client-overview-project-row .overview-row-stat b{text-align:left}.form-inline-grid{grid-template-columns:1fr}.line-batch-toolbar form,.line-batch-toolbar #batch-delete-lines-form{width:100%;margin-right:0}.flash{top:50%;font-size:13px}}


/* Administrator product directory: filter, traffic, line health, notes and pagination. */
.product-directory-expanded{overflow-x:auto}.product-filter-bar{display:grid;grid-template-columns:minmax(150px,.55fr) minmax(280px,1.5fr) auto auto;gap:10px;align-items:end;margin:0 0 15px;padding:12px;border:1px solid rgba(58,109,140,.42);border-radius:11px;background:rgba(7,22,37,.5)}.product-filter-bar label{display:grid;gap:6px;color:#93aec2;font-size:10px}.product-filter-bar input,.product-filter-bar select,.quick-admin-note-form input{min-width:0;padding:9px 10px;border:1px solid #2c4966;border-radius:8px;background:#081626;color:#e9f5ff}.product-filter-bar span{align-self:center;color:#819daf;font-size:11px;white-space:nowrap}.product-table-expanded{min-width:1320px;grid-template-columns:minmax(160px,1.25fr) minmax(105px,.75fr) minmax(74px,.5fr) minmax(90px,.65fr) minmax(80px,.55fr) minmax(80px,.55fr) minmax(58px,.42fr) minmax(68px,.5fr) minmax(210px,1.35fr) minmax(58px,.4fr)}.product-table-expanded .line-count{color:#91ebdf;font-family:monospace;font-weight:700}.quick-admin-note-form{display:grid;grid-template-columns:minmax(120px,1fr) auto;gap:7px;align-items:center}.quick-admin-note-form small{grid-column:1/-1;margin:0;color:#8fe6d7}.pagination{display:flex;align-items:center;justify-content:center;gap:12px;margin:18px 0 2px}.pagination>span{color:#91abc0;font-size:11px}@media(max-width:900px){.product-filter-bar{grid-template-columns:1fr 1fr auto}.product-filter-bar span{grid-column:1/-1}}@media(max-width:650px){.product-filter-bar{grid-template-columns:1fr}.product-filter-bar .button{width:100%}.product-filter-bar span{grid-column:auto}}

.customer-row-actions{display:flex;align-items:center;justify-content:flex-end;gap:8px}.customer-row-actions .inline-delete-form{margin:0}@media(max-width:650px){.customer-row-actions{justify-content:flex-start}}

/* 2026-10 product directory responsive repair: keep all columns and actions visible. */
.product-directory-expanded { overflow-x: visible; }
.product-directory-expanded .product-table-expanded {
  width: 100%;
  min-width: 0;
  grid-template-columns: minmax(140px,1.35fr) minmax(78px,.78fr) minmax(66px,.55fr) minmax(82px,.72fr) minmax(58px,.52fr) minmax(58px,.52fr) minmax(52px,.45fr) minmax(62px,.55fr) minmax(145px,1.25fr) minmax(54px,.42fr);
  gap: 7px;
}
.product-directory-expanded .product-table-expanded > * { min-width: 0; overflow-wrap: anywhere; }
.product-directory-expanded .quick-admin-note-form { min-width: 0; grid-template-columns: minmax(0,1fr) auto; gap: 5px; }
.product-directory-expanded .quick-admin-note-form input { width: 100%; min-width: 0; }
@media (max-width: 1100px) and (min-width: 651px) {
  .product-directory-expanded .product-table-expanded {
    grid-template-columns: minmax(120px,1.25fr) minmax(72px,.72fr) repeat(2,minmax(64px,.65fr)) repeat(3,minmax(52px,.5fr)) minmax(56px,.52fr) minmax(120px,1.05fr) minmax(50px,.4fr);
    gap: 5px;
    font-size: 11px;
  }
  .product-directory-expanded .quick-admin-note-form { grid-template-columns: minmax(0,1fr); }
  .product-directory-expanded .quick-admin-note-form button { width: 100%; }
}
@media (max-width: 650px) {
  .product-directory-expanded { overflow-x: visible; }
  .product-directory-expanded .product-table-expanded { grid-template-columns: 1fr; gap: 0; }
  .product-directory-expanded .product-table-expanded > * { padding: 7px 0; border-top: 1px solid #203a54; }
  .product-directory-expanded .product-table-expanded.table-head { display: none; }
  .product-directory-expanded .quick-admin-note-form { grid-template-columns: minmax(0,1fr) auto; }
  .product-directory-expanded .quick-admin-note-form button { width: auto; }
}

/* OSS and backup JSON link checks. */
.source-check-tools{display:flex;align-items:end;gap:8px;margin:0 0 12px;padding:10px;border:1px solid rgba(58,109,140,.42);border-radius:10px;background:rgba(7,22,37,.5)}
.source-check-tools label{display:grid;gap:5px;color:#93aec2;font-size:10px}.source-check-tools input,.source-check-row input{width:112px;min-width:0;padding:7px 8px;border:1px solid #2c4966;border-radius:8px;background:#081626;color:#e9f5ff}
.source-check-result{font-size:11px;color:#819daf;white-space:nowrap}.source-check-result.checking{color:#ffd080}.source-check-result.ok{color:#8fe6d7}.source-check-result.bad{color:#ff9fb0}
.source-check-list{display:grid;gap:8px;margin-top:14px;padding:12px;border:1px solid rgba(58,109,140,.42);border-radius:10px;background:rgba(7,22,37,.5)}.source-check-list-title{color:#d8f3ef;font-size:12px}.source-check-list-title small{display:block;margin-top:4px;color:#819daf;font-size:10px}.source-check-row{display:grid;grid-template-columns:minmax(150px,1fr) 112px auto minmax(120px,auto);gap:8px;align-items:center;padding-top:8px;border-top:1px solid #203a54;color:#b9d0df;font-size:11px}.source-check-row small{display:block;margin-top:3px;color:#718ba5;overflow-wrap:anywhere}.source-check-row input{width:100%}
@media(max-width:760px){.source-check-tools{align-items:stretch;flex-wrap:wrap}.source-check-tools .button{flex:1}.source-check-row{grid-template-columns:1fr 1fr}.source-check-row .button{width:100%}.source-check-row .source-check-result{grid-column:1/-1}}
