*{box-sizing:border-box}html{color-scheme:dark}body{margin:0;font:15px/1.5 Arial,sans-serif;color:#f1f6f5;background:linear-gradient(135deg,#175d52,#1c354b 56%,#4c397d);min-height:100vh}main{max-width:1440px;padding:20px;margin:auto}h1,h2,p{margin:0}h1{font-size:27px}h2{font-size:19px}button,input{font:inherit}button{color:#e9fff6;border:1px solid #75b5a7;border-radius:10px;background:linear-gradient(145deg,#326a69,#163c50);padding:10px 12px;min-height:44px;cursor:pointer;box-shadow:0 3px 0 #10383f}button:hover{background:#357b75}button:focus-visible,input:focus-visible,video:focus-visible{outline:4px solid #ffe694;outline-offset:3px}button[disabled]{opacity:.45;cursor:default}button[aria-pressed=true],button.active{color:#073f3d;background:linear-gradient(130deg,#71d5bc,#c7f0dc);font-weight:bold}input{width:100%;background:#0a2636;color:#fff;padding:12px;border:1px solid #84b6ad;border-radius:10px;min-height:46px}input::placeholder{color:#bad1d0}header,.heading,.controls,.headtools,.tabs{display:flex;align-items:center;gap:10px}header{margin-bottom:14px}header p,.small{color:#c0d8d5;font-size:12px}.headtools{margin-left:auto;flex-wrap:wrap}.tvicon,.logo{display:grid;place-items:center;flex:none;background:linear-gradient(145deg,#b3ffdf,#43b7b3 55%,#277595);border-radius:13px;color:#073f53;box-shadow:inset 2px 2px 2px #fff8,inset -3px -4px 3px #125d76aa,0 4px 0 #124552,0 7px 8px #0019}.tvicon{font-size:28px;width:55px;height:55px}.layout{display:grid;grid-template-columns:320px minmax(0,1fr);gap:18px;align-items:start}.layout:has(.groups:not([hidden])){grid-template-columns:260px 290px minmax(0,1fr)}.panel{background:#071a26b3;border:1px solid #759e9b66;border-radius:17px;padding:17px;min-width:0}.tabs{flex-wrap:wrap;margin:14px 0;gap:6px}.tabs button{font-size:12px;padding:9px}.heading{justify-content:space-between}#status{padding:0 2px 14px;color:#ceebe0}#status:empty{display:none}#config{margin-bottom:16px}#configText{margin-top:10px;white-space:pre-line}#groupsPanel input{margin:14px 0}.group-row{display:flex;justify-content:space-between;text-align:left;width:100%;gap:8px;margin-bottom:8px;overflow-wrap:anywhere}#groupList{max-height:70vh;overflow:auto;padding:4px}.channel-row{display:flex;align-items:center;gap:12px;width:100%;border:0;box-shadow:none;border-radius:10px;background:none;text-align:left;padding:13px 8px;min-height:72px;color:#eefaf5}.channel-row.active{background:#509c9133;color:#fff}.channel-row .logo{width:42px;height:42px;font-size:24px}.channel-row .name{overflow-wrap:anywhere;font-weight:bold}.channel-row small{display:block;color:#bbd1d0;font-weight:normal;font-size:12px}.channel-row .fav{margin-left:auto;color:#ffdb76;font-size:23px}.channel-row+.channel-row{border-top:1px solid #ffffff13}#channelList{max-height:66vh;overflow:auto;padding:4px}#currentGroup{font-size:13px;color:#c4eadd;min-height:22px}#privateNote{margin-top:15px}.player{position:relative;aspect-ratio:16/9;background:radial-gradient(ellipse at 50% 100%,#315b58,#081522 75%);border-radius:12px;overflow:hidden;border:1px solid #6b9f9888;display:grid;place-items:center}video{width:100%;height:100%;display:none;object-fit:contain}video.ready{display:block}#placeholder{text-align:center;padding:20px;color:#c5e3da}.playicon{width:57px;height:57px;margin:0 auto 15px;display:grid;place-items:center;font-size:27px;border:1px solid #b5fbe0;border-radius:50%;background:linear-gradient(145deg,#c0ffea,#51c9b0 48%,#218f8d);color:#073e4b;box-shadow:inset 2px 3px 3px #edfff7aa,inset -3px -4px 5px #176c7b99,0 5px 0 #176275}.selectedTitle{margin:15px 0 10px}#star{color:#ffdc77;font-size:24px;min-width:48px}.controls{justify-content:space-between;margin:12px 0}.switch{display:grid;grid-template-columns:1fr 1fr;margin-top:15px;border-bottom:1px solid #7fa59d}.switch button{border:0;border-radius:8px 8px 0 0;box-shadow:none}.switch button[aria-pressed=true]{background:#4eb3a433;color:#d3fff0;border-bottom:3px solid #78ddbd}#guide{max-height:470px;overflow:auto;padding:0 4px 4px}.dayhead{position:sticky;top:0;z-index:1;margin:18px 0 0;padding:12px 13px;background:linear-gradient(100deg,#5ed1b4,#b4ebd7);color:#073b3a;border-left:5px solid #d9fff1;border-radius:7px;display:flex;justify-content:space-between;gap:12px;font-weight:bold;box-shadow:0 3px 0 #174f58;font-size:13px}.programme{display:flex;justify-content:space-between;gap:14px;align-items:center;padding:14px 0;border-bottom:1px solid #ffffff22}.programme div{min-width:0;overflow-wrap:anywhere}.programme small{display:block;font-size:12px;color:#c2d8d3;margin-top:5px}.programme button{flex:none;font-size:13px}.small-note{font-size:12px;color:#b9cecb}#older{width:100%;margin-top:14px}#mediaError{color:#ffcebb;margin-top:12px}.tv{font-size:20px;max-width:1920px;padding:28px}.tv button{min-height:60px;font-size:19px}.tv .layout{grid-template-columns:380px minmax(0,1fr)}.tv .layout:has(.groups:not([hidden])){grid-template-columns:300px 350px minmax(0,1fr)}.tv h1{font-size:34px}.tv .small,.tv .channel-row small{font-size:16px}.tv #guide{max-height:36vh}[hidden]{display:none!important}@media(max-width:1100px){.layout,.layout:has(.groups:not([hidden])){grid-template-columns:285px minmax(0,1fr)}.layout:has(.groups:not([hidden])) .groups{grid-column:1/-1}.groups #groupList{display:grid;grid-template-columns:1fr 1fr;gap:8px;max-height:40vh}.group-row{margin:0}.tv .layout,.tv .layout:has(.groups:not([hidden])){grid-template-columns:320px minmax(0,1fr)}}@media(max-width:650px){main{padding:16px 12px}h1{font-size:24px}.tvicon{width:43px;height:43px;font-size:25px}.headtools{gap:5px}.headtools button{padding:8px;min-width:42px}.layout,.layout:has(.groups:not([hidden])),.tv .layout,.tv .layout:has(.groups:not([hidden])){display:flex;flex-direction:column;gap:15px}.panel{padding:13px;width:100%;border-radius:14px}.watch{order:0}.groups{order:1}.channels{order:2}.watch:has(video.ready){position:relative}#channelList{max-height:55vh}#guide{max-height:360px}.programme{gap:8px}.programme button{padding:9px;font-size:12px}.dayhead{font-size:12px}.tv{font-size:16px;padding:14px}.tv button{font-size:16px;min-height:48px}.tv #guide{max-height:360px}}

@media(min-width:1101px){.watch .player{max-height:55vh}.tv .watch .player{max-height:49vh}.tv #guide{max-height:28vh}}

.watch .player{width:100%}.tvicon:has(img){background:none;box-shadow:none}.tvicon img{width:100%;height:100%}

.controls{flex-wrap:wrap;justify-content:flex-start}.controls #play{margin-right:auto}.controls button{min-width:44px}button .icon{pointer-events:none}
#guide,#channelList,#groupList{scroll-padding-block:12px;scrollbar-width:thin;scrollbar-color:#83d5be #17364b}#guide button,#channelList button,#groupList button{scroll-margin-block:12px}
.dayhead{position:relative;top:auto}#guide .programme{scroll-margin-block:12px}
#status,#status:empty{display:block;min-height:50px;padding:0 2px 12px;font-size:13px}

#providerSetup{max-width:700px}#providerSetup label{display:block;margin:14px 0 7px}#providerSetup h3{margin:20px 0 8px}#providerSetup p{margin:12px 0}#providerSetup input{font-size:16px}#checkProvider{margin-top:14px}#setupResult{white-space:pre-line}#providerForm button{margin-top:12px}

#providerSetup #httpNotice{display:flex;align-items:start;gap:10px;padding:12px;border:1px solid #edc38f;border-radius:10px;background:#45372a}#providerSetup #allowHttp{width:24px;min-height:24px;flex:none}#httpNotice span{font-size:14px}
.login-panel{max-width:460px;margin:8vh auto;padding:24px}.login-panel header{display:flex;gap:14px;align-items:center}.login-panel h1{font-size:23px;flex:1}.login-panel form{display:grid;gap:12px;margin-top:22px}.login-panel input{width:100%;min-width:0}.login-panel form button{margin-top:8px}.direct-entry{display:block;padding:12px 18px;border-radius:14px;background:#483ed4;color:white;font-weight:700;text-decoration:none;margin:12px 0}.direct-entry[hidden]{display:none}.login-panel p{overflow-wrap:anywhere}@media(max-width:520px){.login-panel{margin:18px 12px;padding:18px}.login-panel h1{font-size:19px}}
#iptv-login{width:calc(100% - 24px);min-width:0}#iptv-login h1{min-width:0;overflow-wrap:anywhere}#iptv-login header img{flex:none}#iptv-login #privacy{margin-top:14px}
