:root{--dark:#0a1426;--navy:#101e34;--blue:#277aff;--light:#eff4fa;--muted:#8fa1bc;--line:#e5ebf2;--green:#16c98d}*{box-sizing:border-box}body{margin:0;font-family:Inter,'Segoe UI',Arial,sans-serif}button,input,select,textarea{font:inherit}button{cursor:pointer}a{color:inherit;text-decoration:none}.hidden{display:none!important}.tv-body{background:#061020;color:#fff;min-height:100vh;overflow:hidden}.tv-shell{min-height:100vh;display:flex;flex-direction:column;padding:2.4vh 3vw 2.5vh;background:radial-gradient(ellipse at top right,#122d51 0,transparent 45%),#081323}.tv-head{display:flex;align-items:center;gap:1.5vw;padding-bottom:2.5vh;border-bottom:1px solid #30425b}.brand-mark,.login-logo,.logo-small{font-size:clamp(38px,4.3vw,78px);font-weight:900;letter-spacing:-.11em;color:#fff;line-height:1}.brand-mark span,.logo-small span,.login-logo span{color:#51a4ff;font-size:.45em;vertical-align:top;letter-spacing:0}.brand-copy{flex:1}.brand-copy h1{font-size:clamp(22px,2.5vw,45px);margin:0;letter-spacing:.015em;font-weight:800}.brand-copy p{color:#98b1d0;margin:7px 0 0;font-size:clamp(13px,1.15vw,24px)}.live-indicator{border:1px solid #245b50;padding:11px 16px;border-radius:8px;background:#10362f;color:#6df2bd;font-size:clamp(10px,1vw,16px);font-weight:800;letter-spacing:.1em;white-space:nowrap}.live-indicator i{display:inline-block;background:#1edd94;width:9px;height:9px;border-radius:50%;margin-right:8px;box-shadow:0 0 12px #11e39e}.live-indicator.offline{color:#ffb98c;background:#493322}.live-indicator.offline i{background:orange}.datetime{margin-left:2.4vw;text-align:right;white-space:nowrap}.datetime #clock{font-size:clamp(28px,3.7vw,70px);font-weight:800;font-variant-numeric:tabular-nums;letter-spacing:.04em}.datetime #date{font-size:clamp(13px,1.25vw,25px);margin-top:3px}.zone{color:#7890b0;font-size:clamp(9px,.72vw,14px);letter-spacing:.12em;margin-top:7px}.board{flex:1;min-height:0;display:flex;flex-direction:column;margin-top:3vh}.section-caption{display:flex;justify-content:space-between;color:#e8f0ff;font-size:clamp(16px,1.6vw,30px);font-weight:800;letter-spacing:.05em;margin-bottom:1.6vh}.section-caption span:last-child{font-size:clamp(12px,.95vw,19px);color:#89a5c9;text-transform:uppercase}.board-table{flex:1;min-height:0;display:flex;flex-direction:column}.board-cols,.meeting-row{display:grid;grid-template-columns:15% 43% 22% 20%;gap:0;align-items:center}.board-cols{background:#203657;border-radius:12px 12px 0 0;color:#b8cbe7;font-size:clamp(12px,1.15vw,21px);font-weight:800;letter-spacing:.08em;min-height:6vh}.board-cols span,.meeting-row>div{padding:0 1.5vw}.meeting-rows{flex:1;min-height:0;overflow:hidden;background:#111f35;border-radius:0 0 12px 12px}.meeting-row{min-height:10.6vh;border-bottom:1px solid #273a53}.meeting-row:nth-child(even){background:#16263e}.meeting-row.row-active{background:linear-gradient(90deg,#153a4a,#16364b);box-shadow:inset 5px 0 #1ed3a0}.time-cell strong{display:block;font-size:clamp(19px,2.1vw,40px);font-weight:850;font-variant-numeric:tabular-nums}.time-cell small{font-size:clamp(12px,1.05vw,19px);color:#93aaca}.agenda-cell strong{font-size:clamp(16px,1.75vw,34px);font-weight:750;line-height:1.2;display:block}.agenda-cell small{display:block;color:#92a9c8;font-size:clamp(11px,1vw,19px);margin-top:7px}.room-cell{font-size:clamp(14px,1.45vw,28px);font-weight:550}.status-chip{display:inline-block;border-radius:7px;padding:.75em 1.05em;font-size:clamp(11px,1.12vw,21px);font-weight:900;letter-spacing:.035em;white-space:nowrap}.status-chip.scheduled{color:#9cceff;background:#1a406d}.status-chip.ongoing{color:#69f3bb;background:#135440;animation:pulse 2.5s infinite}.status-chip.done{color:#c1cedf;background:#34465d}.status-chip.delayed{color:#ffda8b;background:#644b24}.status-chip.cancelled{color:#ffacb0;background:#5b2c39}.empty-board{height:48vh;display:grid;place-items:center;color:#8fa6c3;font-size:clamp(18px,2vw,36px)}.tv-footer{height:7vh;display:flex;align-items:center;background:#123c72;margin-top:2.2vh;border-radius:8px;overflow:hidden}.ticker-label{background:#287eff;font-size:clamp(11px,1.05vw,21px);font-weight:800;letter-spacing:.06em;align-self:stretch;display:grid;place-items:center;padding:0 2vw}.ticker-window{flex:1;overflow:hidden;white-space:nowrap}.ticker-message{width:max-content;font-size:clamp(14px,1.3vw,26px);padding-left:100%;animation:marquee 27s linear infinite}.footer-date{padding:0 1.3vw;font-size:clamp(10px,1vw,18px);font-weight:700;color:#b8d8ff}@keyframes marquee{to{transform:translateX(-100%)}}@keyframes pulse{50%{box-shadow:0 0 18px #0d9c77}}.admin-body{background:#f2f5f9;color:#18243a}.login-wrap{min-height:100vh;display:grid;place-items:center;background:radial-gradient(circle at 25% 20%,#234a80,#07152b 65%)}.login-card{background:white;width:min(430px,94vw);padding:42px;border-radius:16px;box-shadow:0 18px 70px #06112655}.login-logo{color:#123764;font-size:64px}.login-card h1{margin:18px 0 4px;font-size:30px}.login-card p,.panel p{color:#738199}.login-card label,.meeting-form label,.settings-panel label{display:flex;flex-direction:column;gap:8px;font-size:13px;font-weight:700;margin-top:18px;color:#43516a}.login-card input,.meeting-form input,.meeting-form select,.meeting-form textarea,.settings-panel input,.settings-panel textarea,.filters input{border:1px solid #dce5ef;border-radius:8px;padding:12px;background:white;color:#18243a;width:100%;outline-color:#3282ff}.login-card .btn{width:100%;margin-top:22px}.login-card>a{display:block;text-align:center;color:#287aff;font-size:13px;margin-top:20px}.btn{border:1px solid transparent;border-radius:8px;padding:11px 18px;font-weight:750;display:inline-flex;align-items:center;justify-content:center;gap:9px}.btn.primary{background:#287bff;color:white}.btn.primary:hover{background:#1365e7}.btn.outline{background:white;border-color:#dce5ef;color:#314563}.app-wrap{display:flex;min-height:100vh}.sidebar{width:245px;background:#101d32;color:#c2d0e5;padding:26px 16px;display:flex;flex-direction:column;flex-shrink:0}.sidebar-brand{display:flex;gap:12px;align-items:center;color:white;font-weight:900;font-size:16px;letter-spacing:.05em;line-height:1.1;margin:7px 8px 48px}.logo-small{font-size:42px}.sidebar-label{font-size:10px;letter-spacing:.18em;font-weight:700;color:#6e88a8;padding:0 13px 14px}.nav,.sidebar-bottom a{width:100%;border:0;background:none;text-align:left;color:inherit;padding:14px;font-weight:650;border-radius:8px;display:block}.nav.active,.nav:hover,.sidebar-bottom a:hover{background:#244772;color:white}.sidebar-bottom{margin-top:auto;border-top:1px solid #29405b;padding-top:20px}.admin-main{flex:1;min-width:0}.admin-top{display:flex;align-items:center;justify-content:space-between;padding:26px 38px;background:white;border-bottom:1px solid #e0e8f0}.admin-top small{color:#8998ab;letter-spacing:.16em;font-size:10px;font-weight:850}.admin-top h1{font-size:26px;margin:6px 0 0}.admin-top-right{display:flex;align-items:center;gap:20px;font-size:13px;color:#6d7b8d}.content{padding:32px 38px}.summary{display:grid;grid-template-columns:repeat(3,1fr);gap:18px;margin-bottom:26px}.metric,.panel{background:white;border:1px solid #e3eaf2;border-radius:12px;box-shadow:0 4px 18px #1b35530a}.metric{padding:24px}.metric span{display:block;color:#8290a5;font-size:11px;letter-spacing:.08em;font-weight:800}.metric b{display:block;font-size:38px;margin:10px 0 5px}.metric small{color:#8190a3}.panel{padding:26px}.panel-head{display:flex;justify-content:space-between;align-items:center;gap:14px}.panel h2{margin:0 0 7px;font-size:20px}.panel p{margin:0 0 12px;font-size:13px}.filters{display:flex;gap:18px;margin:20px 0}.filters label{display:flex;flex-direction:column;gap:5px;font-weight:700;color:#77849a;font-size:12px}.filters input{width:220px;padding:10px}.table-scroll{overflow:auto}.admin-table{width:100%;border-collapse:collapse;text-align:left;font-size:13px}.admin-table th{background:#f5f8fc;color:#7d8fa8;font-size:10px;letter-spacing:.08em;padding:15px 12px}.admin-table td{padding:15px 12px;border-bottom:1px solid #e9edf3}.admin-table td b{display:block}.admin-table td small{display:block;color:#8694a6;margin-top:5px}.table-status{border-radius:6px;padding:7px 9px;font-size:10px;font-weight:850;display:inline-block;background:#e9f0f9;color:#57708c}.table-status.ongoing{background:#d9f8e8;color:#147e4c}.table-status.delayed{background:#fff0d1;color:#986b12}.table-status.cancelled{background:#ffe0e2;color:#a53843}.actions{white-space:nowrap}.action-btn{border:0;background:#edf4fe;color:#1c6ce6;border-radius:6px;padding:8px 10px;font-size:12px;font-weight:700;margin:2px}.action-btn.delete{color:#d04950;background:#fff0f1}.settings-panel{max-width:720px}.settings-panel form{display:flex;flex-direction:column;align-items:flex-start}.settings-panel label{width:100%}.settings-panel .btn{margin-top:24px}.success{color:#118252;font-size:13px;margin-top:12px}.error{color:#ca3546!important;font-size:13px}dialog{border:0;padding:0;border-radius:16px;box-shadow:0 20px 100px #0a1c3655;max-width:570px;width:94vw;max-height:95vh;overflow:auto}dialog::backdrop{background:#07152a99}.meeting-form{padding:28px}.dialog-heading{display:flex;justify-content:space-between;align-items:flex-start}.dialog-heading h2{margin:0 0 6px}.dialog-heading p{font-size:12px;color:#8492a5;margin:0}.close-dialog{font-size:29px;color:#94a0b0;background:none;border:0}.form-two{display:grid;grid-template-columns:1fr 1fr;gap:18px}.dialog-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:22px}@media(max-width:850px){.sidebar{width:70px}.sidebar-brand span,.sidebar-label{display:none}.nav,.sidebar-bottom a{font-size:0}.nav:first-letter,.sidebar-bottom a:first-letter{font-size:19px}.admin-top,.content{padding:22px}.summary{grid-template-columns:1fr}.admin-top-right #nowAdmin{display:none}}@media(max-width:570px){.sidebar{width:0;padding:0;overflow:hidden}.panel-head,.filters{flex-wrap:wrap}.filters input{width:100%}.filters label{width:100%}.admin-top{flex-wrap:wrap;gap:15px}.form-two{grid-template-columns:1fr}.tv-shell{padding:12px}.live-indicator{display:none}.brand-copy h1{font-size:16px}.datetime #clock{font-size:19px}.zone{display:none}.board-cols,.meeting-row{grid-template-columns:18% 38% 22% 22%}.status-chip{font-size:8px}.meeting-row>div,.board-cols span{padding:0 4px}.room-cell,.agenda-cell strong{font-size:10px}.time-cell strong{font-size:13px}.tv-footer{height:65px}}

/* LAFKI v1.1: airport-style full-width display */
.tv-shell{padding:2.2vh 2.4vw 1.5vh;background:#061224} 
.brand-mark{background:#d82632;width:4.4vw;height:4.4vw;min-width:60px;min-height:60px;display:grid;place-items:center;border-radius:12px;font-size:clamp(24px,2.3vw,42px);letter-spacing:-.08em} 
.brand-mark span{color:#fff}.brand-copy h1{font-size:clamp(28px,2.9vw,57px)}
.board-cols,.meeting-row{grid-template-columns:15% 43% 22% 20%} 
.board-cols{background:#224d87;border-radius:0;min-height:8vh;color:#fff;border-bottom:2px solid #4987ca}
.board-cols span:not(:first-child),.meeting-row>div:not(:first-child){border-left:1px solid #314965}
.board-cols span{height:100%;display:flex;align-items:center}.meeting-rows{border-radius:0;background:#0f2137} 
.meeting-row{min-height:11vh;border-bottom:1px solid #39506d} 
.meeting-row:nth-child(even){background:#19304a}.meeting-row.row-active{background:#134640;box-shadow:inset 7px 0 #3becb2} 
.tv-footer{background:#101f34;border-radius:0;border-top:2px solid #2f77b9;justify-content:center;height:6.5vh} 
.ticker-window{text-align:center}.ticker-message{width:100%;padding:0;animation:none;font-weight:700;letter-spacing:.04em;color:#bacbe0} 
@media(max-width:570px){.brand-mark{min-width:36px;min-height:36px;width:36px;height:36px}.brand-copy h1{font-size:17px}.meeting-row{min-height:70px}.board-cols{min-height:45px}}

/* LAFKI v1.2 - identitas visual dan tabel tamu; tidak mengubah halaman admin */
.tv-body{background:#ffe0e0;color:#111;overflow:hidden}
.tv-shell{background:linear-gradient(rgba(255,255,255,.07),rgba(255,255,255,.12)),url('/lafki-background.png') center center/100% 100% no-repeat!important;padding:2vh 2vw 1.8vh;color:#111}
.tv-head{padding-top:0;min-height:17vh;padding-bottom:1.4vh;border-bottom:2px solid rgba(0,0,0,.4);gap:1vw}
.tv-head .brand-mark{display:none!important}
.tv-head .brand-copy{flex:1;min-width:0;margin-top:5.5vh}
.tv-head .brand-copy h1{color:#111;font-size:clamp(26px,2.55vw,52px);font-weight:900;text-shadow:0 1px 1px #fff}
.tv-head .brand-copy p,.tv-head .zone{color:#242424;font-weight:700}
.tv-head .datetime{align-self:center;margin:3.5vh 0 0 1vw;color:#111;background:rgba(255,255,255,.65);padding:.3vh .8vw;border-radius:8px}
.tv-head .datetime #clock{font-size:clamp(30px,3.4vw,68px)}
.tv-head .live-indicator{margin-top:5vh;background:rgba(255,255,255,.86);color:#155e3e;border:1px solid #155e3e}
.tv-head .live-indicator.offline{color:#8f3d08}
.board{margin-top:1.5vh;min-height:0}
.section-caption,.section-caption span:last-child{color:#111;text-shadow:0 1px #fff}
.section-caption{margin-bottom:1vh;font-size:clamp(17px,1.55vw,29px)}
.board-table{min-height:0}
.board-cols,.meeting-row{grid-template-columns:14% 44% 23% 19%}
.board-cols{min-height:5.6vh;background:rgba(197,13,25,.92);color:white;border:2px solid #9e0e18;font-size:clamp(12px,1vw,20px)}
.board-cols span{color:white}
.meeting-rows{background:rgba(255,255,255,.83);overflow-y:auto;scrollbar-width:thin;border:1px solid #bc6666;overscroll-behavior:contain}
.meeting-row{min-height:0;height:auto;padding:.7vh 0;border-bottom:1px solid rgba(123,26,26,.30);color:#111;background:rgba(255,255,255,.72)!important}
.meeting-row:nth-child(even){background:rgba(255,230,230,.86)!important}
.meeting-row.row-active{background:rgba(190,250,212,.9)!important;box-shadow:inset 6px 0 #118050}
.board-cols span:not(:first-child),.meeting-row>div:not(:first-child){border-left:1px solid rgba(100,30,30,.23)}
.time-cell strong{font-size:clamp(17px,1.65vw,32px);color:#111}
.time-cell small{color:#333;font-size:clamp(11px,.85vw,17px)}
.agenda-cell strong{font-size:clamp(14px,1.25vw,25px);color:#111;line-height:1.18}
.agenda-cell small{display:none}
.room-cell{font-size:clamp(13px,1.15vw,22px);color:#111;font-weight:700}
.status-chip{font-size:clamp(10px,.95vw,19px);padding:.54em .65em;white-space:normal;line-height:1.15;text-align:center;border-radius:6px}
.status-chip.scheduled{background:#e6eefc;color:#123e85}
.status-chip.ongoing{background:#c9f4da;color:#075c31}
.status-chip.done{background:#dfdfdf;color:#303030}
.status-chip.delayed{background:#fff1a8;color:#6b4100}
.status-chip.cancelled{background:#ffd1d1;color:#96111b}
.tv-footer{height:5.2vh;min-height:30px;background:rgba(255,255,255,.85);border:1px solid #dca1a1;margin-top:1vh;border-radius:5px;color:#111}
.ticker-window{width:100%}.ticker-message{width:100%;padding:0!important;animation:none!important;text-align:center;color:#111;font-weight:800;font-size:clamp(13px,1.12vw,22px)}
.footer-date{display:none!important}
.empty-board{color:#111;background:rgba(255,255,255,.48);height:30vh}
.quick-status{display:flex;flex-wrap:wrap;gap:3px;margin-bottom:5px;max-width:390px}.quick-status .action-btn{margin:0;font-size:11px;padding:7px}.quick-status .selected{outline:2px solid #2c754a}.quick-status .quick-ongoing{background:#d8f8e4;color:#086a34}.quick-status .quick-done{background:#e2e2e2;color:#333}.quick-status .quick-cancelled{background:#ffe1e1;color:#9c1c1c}.quick-status .quick-delayed{background:#fff2c8;color:#7f5300}.quick-status button:disabled{opacity:.75;cursor:default}
.admin-table td.actions{white-space:normal;min-width:310px}
@media(min-width:900px) and (min-height:600px){.meeting-rows:has(.meeting-row:nth-child(8)) .meeting-row{padding:.35vh 0}.meeting-rows:has(.meeting-row:nth-child(8)) .agenda-cell strong{font-size:clamp(13px,1.05vw,22px)}.meeting-rows:has(.meeting-row:nth-child(8)) .time-cell strong{font-size:clamp(16px,1.4vw,27px)}}
@media(max-width:750px){.tv-shell{padding:1vh 1vw}.tv-head{min-height:16vh}.tv-head .brand-copy{margin-top:3vh}.tv-head .brand-copy h1{font-size:clamp(16px,3vw,25px)}.tv-head .brand-copy p{font-size:10px}.tv-head .datetime{margin-top:2vh}.tv-head .datetime #clock{font-size:clamp(18px,3vw,25px)}.tv-head .live-indicator{display:none}.board-cols,.meeting-row{grid-template-columns:15% 41% 22% 22%}.board-cols span,.meeting-row>div{padding:0 .6vw}.agenda-cell strong,.room-cell{font-size:clamp(10px,1.8vw,16px)}.time-cell strong{font-size:clamp(12px,2vw,20px)}.status-chip{font-size:clamp(9px,1.4vw,14px)}}


/* LAFKI v1.3 — papan agenda ringkas, ruang background maskot tetap terlihat */
.tv-body .tv-shell{height:100dvh;min-height:100dvh;max-height:100dvh;overflow:hidden;position:relative;padding:2vh 1.8vw 2vh;background-size:100% 100%!important}
.tv-body .tv-head{flex:none;min-height:0;height:16vh;justify-content:flex-end;align-items:center;padding:0 0 1vh;border-bottom:0}
.tv-body .datetime{margin:0 0 0 1.3vw;align-self:center}
.tv-body .live-indicator{margin:0}
.tv-body .board{flex:0 1 auto;min-height:0;max-height:68vh;margin-top:0;display:flex;flex-direction:column;overflow:hidden}
.tv-body .section-caption{flex:none;margin:0 0 .9vh;font-size:clamp(17px,1.5vw,29px)}
.tv-body .board-table{flex:0 1 auto;min-height:0;max-height:63vh;display:flex;flex-direction:column;background:transparent}
.tv-body .board-cols{flex:none;border-radius:8px 8px 0 0}
.tv-body .meeting-rows{flex:0 1 auto;min-height:0;max-height:55vh;overflow-y:auto;overflow-x:hidden;background:transparent!important;border:0;border-radius:0 0 8px 8px;scrollbar-width:thin}
.tv-body .meeting-row{min-height:6.3vh;padding:.6vh 0;border:1px solid rgba(153,35,35,.28);border-top:0;background:rgba(255,255,255,.92)!important}
.tv-body .meeting-row:nth-child(even){background:rgba(255,244,244,.93)!important}
.tv-body .meeting-row.row-active{background:rgba(209,248,221,.94)!important}
.tv-body .meeting-row:last-child{border-radius:0 0 8px 8px}
.tv-body .empty-board{height:auto;min-height:8vh;background:rgba(255,255,255,.85);border-radius:0 0 8px 8px;text-align:center;padding:1vh}
.tv-body .tv-footer{flex:none;position:absolute;bottom:1.5vh;left:50%;transform:translateX(-50%);display:inline-flex;align-items:center;justify-content:center;width:max-content;max-width:92vw;min-height:0;height:auto;padding:.75vh 1.5vw;margin:0;border:1px solid rgba(180,85,85,.35);border-radius:999px;background:rgba(255,255,255,.88);box-shadow:0 2px 8px #7b20201c;white-space:nowrap}
.tv-body .ticker-window{flex:none;width:auto;overflow:visible}
.tv-body .ticker-message{width:auto;white-space:nowrap;font-size:clamp(12px,1.05vw,21px);letter-spacing:0}
@media(max-width:750px){.tv-body .tv-head{height:14vh}.tv-body .board{max-height:74vh}.tv-body .board-table{max-height:70vh}.tv-body .meeting-rows{max-height:63vh}.tv-body .tv-footer{bottom:1vh;padding:7px 13px}}
