:root{--navy:#082c47;--navy-2:#0b3b5d;--panel:#12496d;--line:#3c7597;--text:#eefbff;--muted:#a9c8d8;--mint:#35efb3;--mint-2:#17b995;--danger:#ff6b73;--warning:#ffc857;--white:#fff;--shadow:0 18px 50px rgba(0,13,29,.25);font-family:"Microsoft YaHei","Noto Sans SC",system-ui,sans-serif;color-scheme:dark}
*{box-sizing:border-box}html,body{margin:0;min-height:100%;background:var(--navy);color:var(--text)}button,input,select,textarea{font:inherit}button,a{touch-action:manipulation}.tv-page{min-height:100vh;background:radial-gradient(circle at 50% 5%,#155577 0,#0b3a5c 34%,#06263f 100%);display:flex;flex-direction:column;overflow-x:hidden}.tv-header{height:11vh;min-height:72px;margin:0 5vw;padding:0 1vw;border-bottom:1px solid rgba(172,220,240,.2);display:flex;align-items:center;justify-content:space-between;color:#cdebf5;font-size:clamp(16px,1.6vw,28px)}.brand{display:flex;align-items:center;gap:16px;font-size:clamp(21px,2vw,34px);color:white}.brand img{width:clamp(42px,4vw,66px);height:clamp(42px,4vw,66px)}.tv-main{width:min(1100px,90vw);margin:0 auto;display:flex;align-items:center;flex-direction:column;flex:1;padding:3vh 0 2vh}.tv-main h1{font-weight:500;font-size:clamp(28px,3.1vw,52px);margin:0 0 2.5vh}.code-boxes{display:flex;gap:clamp(10px,1.3vw,22px)}.code-boxes span{display:grid;place-items:center;width:clamp(62px,7vw,106px);height:clamp(68px,8vw,118px);border:2px solid #74a7c3;border-radius:10px;background:rgba(72,137,174,.18);font-weight:800;font-size:clamp(32px,4vw,62px);box-shadow:inset 0 0 18px rgba(80,180,220,.08)}.code-boxes span.filled{border-color:#a3cfe2}.tv-button,.number-key{border:2px solid #5c91ad;border-radius:10px;background:linear-gradient(#34759b,#2b6184);color:#fff;font-weight:700;cursor:pointer;box-shadow:0 4px 12px rgba(0,0,0,.12);outline:0}.tv-button:focus,.number-key:focus,.tv-button:hover,.number-key:hover{border-color:var(--mint);box-shadow:0 0 0 5px rgba(53,239,179,.28),0 8px 24px rgba(0,0,0,.24);transform:translateY(-2px)}.clear-button{margin:1.5vh 0;padding:.7em 2.6em;font-size:clamp(18px,1.6vw,28px)}.status{height:2.4em;font-size:clamp(15px,1.3vw,22px);color:var(--muted);font-weight:600;text-align:center}.status.success{color:#9ff5d7}.status.error{color:#ff9ba1}.status.loading{color:#ffe398}.app-card{width:min(900px,90vw);min-height:92px;border:2px solid #4d8aad;border-radius:13px;background:rgba(22,78,111,.75);display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:20px;padding:12px 20px;margin:1vh 0 2vh;box-shadow:var(--shadow)}.app-card img{width:64px;height:64px;border-radius:14px;object-fit:contain}.app-card strong,.app-card small{display:block}.app-card strong{font-size:clamp(19px,1.8vw,30px)}.app-card small{color:var(--muted);margin-top:5px}.app-card .primary{padding:.8em 1.4em}.keypad{display:grid;grid-template-columns:repeat(5,minmax(84px,130px));gap:clamp(10px,1vw,17px);margin-top:auto}.number-key{height:clamp(56px,6vh,86px);font-size:clamp(23px,2vw,34px)}footer{text-align:center;padding:1.2vh;color:#739bb2;font-size:13px}.error-page{display:grid;place-items:center;min-height:100vh;text-align:center}.error-page>div{padding:40px}.error-page img{width:90px}.error-page a{color:var(--mint)}
@media(max-width:700px){.tv-header{height:70px;margin:0 18px}.tv-header>span{display:none}.tv-main{padding:25px 0}.code-boxes span{width:58px;height:66px}.app-card{grid-template-columns:auto 1fr;padding:12px}.app-card .primary{grid-column:1/-1;width:100%}.keypad{width:100%;grid-template-columns:repeat(5,1fr);gap:8px}.number-key{min-width:0}.status{height:auto;min-height:3em}.brand{gap:9px}}
@media(max-height:700px) and (min-width:701px){.tv-main{padding:2vh 0}.tv-main h1{margin-bottom:1.2vh}.code-boxes span{height:72px;width:68px}.app-card{min-height:70px;margin:.3vh 0 1vh}.app-card img{width:48px;height:48px}.number-key{height:52px}}

/* 管理后台 */
.admin-body{background:#f2f6f8;color:#153143;min-height:100vh;color-scheme:light}.admin-shell{display:grid;grid-template-columns:250px 1fr;min-height:100vh}.sidebar{background:#082c47;color:white;padding:24px 18px;position:sticky;top:0;height:100vh;display:flex;flex-direction:column;min-height:0}.sidebar-brand{flex-shrink:0;display:flex;align-items:center;gap:12px;font-size:20px;font-weight:800;margin:0 8px 30px}.sidebar-brand img{width:42px;height:42px}.sidebar nav{display:grid;grid-template-columns:minmax(0,1fr);gap:7px;align-content:start;flex:1;min-height:0;overflow-y:auto}.sidebar a{display:block;min-width:0;color:#bcd5e2;text-decoration:none;padding:12px 14px;border-radius:8px;line-height:1.5;white-space:nowrap}.sidebar a:hover,.sidebar a.active{color:white;background:#124d70}.sidebar .logout{flex-shrink:0;margin:18px 0 0}.sidebar-more{grid-column:1/-1;min-width:0}.sidebar-more summary{padding:12px 14px;line-height:1.5;border-radius:8px;cursor:pointer}.sidebar-more summary:hover{background:#124d70}.sidebar-submenu{display:grid;gap:7px;padding-top:7px}.sidebar a:focus-visible,.sidebar-more summary:focus-visible{outline:2px solid var(--mint);outline-offset:-2px}.admin-main{min-width:0;padding:28px 34px}.admin-top{display:flex;align-items:center;justify-content:space-between;margin-bottom:24px}.admin-top h1{font-size:28px;margin:0}.admin-user{color:#617887}.cards{display:grid;grid-template-columns:repeat(4,1fr);gap:16px}.metric,.panel{background:#fff;border:1px solid #dce7ed;border-radius:12px;box-shadow:0 5px 18px rgba(13,47,67,.05)}.metric{padding:20px}.metric span{color:#78909d}.metric strong{display:block;font-size:30px;margin-top:7px}.panel{padding:22px;margin-top:20px;overflow:auto}.panel-title{display:flex;align-items:center;justify-content:space-between;margin-bottom:18px}.panel-title h2{margin:0;font-size:21px}.btn{display:inline-flex;align-items:center;justify-content:center;border:0;border-radius:8px;padding:10px 16px;text-decoration:none;cursor:pointer;background:#e7eef2;color:#16384b;font-weight:700}.btn-primary{background:#0a8f77;color:#fff}.btn-danger{background:#ffe6e8;color:#ac2630}.btn-small{padding:7px 10px;font-size:13px}.btn:disabled{opacity:.5;cursor:not-allowed}.data-table{border-collapse:collapse;width:100%;white-space:nowrap}.data-table th,.data-table td{text-align:left;border-bottom:1px solid #e6eef2;padding:12px 10px}.data-table th{color:#607d8b;font-size:13px}.code-pill{font-size:19px;font-weight:800;letter-spacing:2px}.badge{display:inline-block;padding:4px 8px;border-radius:20px;font-size:12px;background:#e9f0f3}.badge.ok{background:#dcf7ef;color:#08735f}.badge.off{background:#fce3e5;color:#9d2830}.actions{display:flex;gap:6px;align-items:center}.inline-form{display:inline}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}.field{display:grid;gap:7px}.field.full{grid-column:1/-1}.field label{font-weight:700;font-size:14px}.field input,.field select,.field textarea{width:100%;border:1px solid #c8d7df;border-radius:8px;padding:11px;background:#fff;color:#16384b}.help{font-size:12px;color:#718995}.flash{padding:13px 16px;border-radius:9px;margin-bottom:18px;background:#dff6ef;color:#0a6f5c}.flash.error{background:#ffe8ea;color:#9e2932}.login-page{min-height:100vh;background:linear-gradient(145deg,#06283f,#0e5273);display:grid;place-items:center;color:#16384b}.login-card{width:min(420px,90vw);background:white;border-radius:18px;padding:34px;box-shadow:0 25px 70px rgba(0,0,0,.3)}.login-logo{display:flex;align-items:center;gap:12px;margin-bottom:25px}.login-logo img{width:55px}.login-logo h1{font-size:24px;margin:0}.upload-drop{border:2px dashed #92aebd;border-radius:12px;padding:35px;text-align:center;background:#f8fbfc}.progress{height:12px;background:#dfe9ee;border-radius:8px;overflow:hidden}.progress>i{display:block;height:100%;width:0;background:#17b995;transition:width .2s}.filters{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:15px}.filters input,.filters select{border:1px solid #cbd9e0;border-radius:7px;padding:8px}.pagination{display:flex;gap:6px;margin-top:18px}.pagination a{padding:7px 11px;background:#edf3f6;border-radius:6px;text-decoration:none;color:#183e52}.pagination a.current{background:#0a8f77;color:white}
@media(max-width:900px){.admin-shell{grid-template-columns:1fr}.sidebar{height:auto;position:static}.sidebar nav{grid-template-columns:repeat(3,minmax(0,1fr));flex:none;overflow:visible}.sidebar .logout{position:static;margin-top:15px}.admin-main{padding:20px}.cards{grid-template-columns:repeat(2,1fr)}}@media(max-width:600px){.sidebar nav{grid-template-columns:repeat(2,minmax(0,1fr))}.cards,.form-grid{grid-template-columns:1fr}.field.full{grid-column:auto}.admin-top{align-items:flex-start;gap:10px}.data-table{font-size:13px}}

