:root{font-family:Inter,ui-sans-serif,system-ui,-apple-system,Segoe UI,Arial,sans-serif;color:#eef3fa;background:#0c1421;font-synthesis:none}*{box-sizing:border-box}body{margin:0}button,input,select{font:inherit}button{cursor:pointer}.shell{min-height:100vh;padding:clamp(20px,2.7vw,52px);max-width:1900px;margin:auto}.top{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-bottom:28px}.eyebrow{font-size:12px;font-weight:800;letter-spacing:.2em;color:#8ca3bd}.title{font-size:clamp(30px,3vw,54px);letter-spacing:-.045em;margin:5px 0}.muted{color:#8b9db6}.topright{display:flex;align-items:center;gap:18px}.live{color:#6ce0ad;font-size:13px;font-weight:800;letter-spacing:.09em}.dot{display:inline-block;width:8px;height:8px;background:#6ce0ad;border-radius:50%;margin-right:8px}.btn{background:#26384f;border:1px solid #40516a;color:#eef3fa;padding:11px 16px;border-radius:10px;font-weight:700}.btn.primary{background:#78d5b0;color:#0c1d23;border-color:#78d5b0}.btn.danger{background:#44282e;border-color:#74434a;color:#ffb8b8}.btn:disabled{opacity:.45;cursor:not-allowed}.stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;margin-bottom:25px}.stat{background:#192639;border:1px solid #283a51;padding:21px 24px;border-radius:13px}.stat strong{display:block;font-size:clamp(28px,3vw,45px);letter-spacing:-.04em}.stat span{display:block;font-size:12px;color:#9db0c8;letter-spacing:.09em;font-weight:800}.amber{color:#f3c378}.red{color:#f28d8d}.blue{color:#a8c1ff}.green{color:#78d5b0}.tablewrap{background:#142033;border:1px solid #293a51;border-radius:15px;overflow:hidden}.tablehead,.project{display:grid;grid-template-columns:1.1fr 2.9fr 1.35fr 1.45fr 1.45fr;gap:12px;align-items:center}.tablehead{padding:18px 22px;color:#90a5c0;font-size:12px;font-weight:800;letter-spacing:.09em;background:#1b2b40}.project{padding:19px 22px;border-top:1px solid #2a3a50;font-size:clamp(13px,1.25vw,19px);min-height:67px}.project:nth-child(odd){background:#172438}.project .name{font-weight:700}.status{display:inline-flex;align-items:center;gap:9px;font-size:.9em}.status:before{content:'';width:8px;height:8px;flex:none;border-radius:50%;background:#78d5b0}.status.hold:before{background:#a8c1ff}.status.delayed:before{background:#f28d8d}.status.notstarted:before{background:#a0aec0}.foot{display:flex;align-items:center;justify-content:space-between;color:#92a6c1;padding:22px 3px;font-size:14px}.progress{height:4px;background:#28394e;border-radius:10px;overflow:hidden;margin-top:7px}.progress>div{height:100%;background:#7bd9b4;transition:width .5s}.login{max-width:420px;margin:12vh auto;background:#182538;padding:32px;border:1px solid #304259;border-radius:18px}.login h1{font-size:28px}.field{display:flex;flex-direction:column;gap:7px;margin:12px 0}.field label{font-size:12px;font-weight:800;color:#a6b8cf}.field input,.field select,.search{width:100%;padding:12px 13px;background:#0e1929;color:#fff;border:1px solid #40516a;border-radius:9px}.toolbar{display:flex;gap:12px;align-items:center;flex-wrap:wrap;margin-bottom:20px}.toolbar .search{max-width:340px}.toolbar select{padding:12px;background:#142033;color:white;border:1px solid #40516a;border-radius:9px}.adminlist{background:#172438;border:1px solid #2c3c54;border-radius:12px;overflow:hidden}.adminrow{display:grid;grid-template-columns:1fr 2.3fr 1.3fr 1.4fr 1.2fr auto;gap:12px;align-items:center;padding:15px;border-bottom:1px solid #304057}.adminrow.head{font-size:12px;color:#91a6c0;font-weight:800;background:#1d2d43}.adminrow button{font-size:12px}.modalback{position:fixed;inset:0;background:#000a;display:flex;align-items:center;justify-content:center;padding:20px;z-index:3}.modal{width:min(560px,100%);max-height:90vh;overflow:auto;background:#1b293d;border:1px solid #44556d;border-radius:16px;padding:28px}.modal h2{margin-top:0}.actions{display:flex;gap:10px;justify-content:flex-end;margin-top:22px}.notice{padding:12px 15px;border-radius:9px;background:#2b3447;color:#d9e5f6;margin-bottom:16px}.empty{text-align:center;padding:50px;color:#9eb1c9}.switch{font-size:12px;color:#a9bbd1}.hide{display:none}@media(max-width:850px){.stats{grid-template-columns:repeat(2,1fr)}.shell{padding:18px}.tablehead,.project{grid-template-columns:.8fr 2fr 1fr 1.1fr 1.1fr;gap:6px;padding:12px;font-size:12px}.adminrow{grid-template-columns:1fr 2fr 1fr;gap:8px}.adminrow>*:nth-child(4),.adminrow>*:nth-child(5){display:none}.top{align-items:flex-start}.topright{flex-wrap:wrap;justify-content:flex-end}}

.brandheading{display:flex;align-items:center;gap:22px}.brandlogo{display:block;width:clamp(145px,17vw,260px);height:auto;object-fit:contain;background:transparent;border-radius:0;padding:0;flex-shrink:0}@media(max-width:700px){.brandheading{gap:12px;align-items:flex-start}.brandlogo{width:125px}.top{align-items:flex-start;flex-wrap:wrap}}

/* TV-only layout: always fit one complete page on screen, never scroll. */
body:has(.tv-shell){overflow:hidden}
.tv-shell{height:100dvh;min-height:0;max-height:none;display:flex;flex-direction:column;overflow:hidden;padding:clamp(12px,1.6vh,24px) clamp(16px,2.2vw,40px)}
.tv-shell .top{flex:0 0 auto;margin-bottom:clamp(7px,1.4vh,18px)}
.tv-shell .brandlogo{width:clamp(120px,13vw,210px);max-height:clamp(46px,8vh,86px)}
.tv-shell .title{font-size:clamp(24px,2.4vw,42px)}
.tv-shell .stats{flex:0 0 auto;gap:10px;margin-bottom:clamp(8px,1.4vh,16px)}
.tv-shell .stat{padding:clamp(7px,1.2vh,16px) clamp(10px,1.4vw,20px)}
.tv-shell .stat strong{font-size:clamp(23px,3.3vh,38px)}
.tv-shell .stat span{font-size:clamp(9px,1.2vh,12px)}
.tv-shell .tablewrap{flex:1 1 auto;min-height:0;display:flex;flex-direction:column;overflow:hidden}
.tv-shell .tablehead{flex:0 0 auto;padding:clamp(8px,1.1vh,15px) 18px;font-size:clamp(9px,1.15vh,12px)}
.tv-shell .project{flex:1 1 0;min-height:0;padding:3px 18px;font-size:clamp(12px,1.7vh,19px);overflow:hidden}
.tv-shell .project>div{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tv-shell .status{white-space:nowrap}
.tv-shell .foot{flex:0 0 auto;padding:clamp(8px,1.1vh,15px) 3px;font-size:clamp(11px,1.5vh,14px)}
.tv-shell .progress{flex:0 0 4px;margin-top:0}
@media(max-height:650px){.tv-shell .eyebrow{font-size:9px}.tv-shell .brandlogo{max-height:48px}.tv-shell .top{margin-bottom:6px}.tv-shell .stats{margin-bottom:6px}.tv-shell .stat{padding:6px 10px}.tv-shell .stat strong{font-size:23px}.tv-shell .foot{padding:6px 3px}}

/* Compact, screen-filling TV rows: maximize visible projects without scrolling. */
.tv-shell .project{font-size:clamp(11px,1.45vh,17px);padding:2px 18px;line-height:1.15}
.tv-shell .tablewrap{min-height:0}

/* Seamless continuous vertical ticker: ten rows visible, one row every 3 seconds. */
.tv-shell .ticker-viewport{flex:1 1 auto;min-height:0;overflow:hidden;position:relative}
.tv-shell .ticker-track{height:auto;animation:amps-ticker var(--scroll-duration) linear infinite;will-change:transform}
.tv-shell .ticker-cycle{display:flex;flex-direction:column}
.tv-shell .ticker-cycle .project{height:calc(var(--ticker-height, 600px) / 16);min-height:0;max-height:none;flex:none;display:grid;align-content:center;padding:0 18px;font-size:clamp(11px,1.35vh,17px);line-height:1.12}
.tv-shell .tablewrap{--ticker-height:calc(100dvh - 275px)}
@keyframes amps-ticker{from{transform:translateY(0)}to{transform:translateY(-50%)}}

/* Compact TV ticker: 16 jobs visible at once. */
