@font-face { font-family: Patika; src: url("/assets/fonts/Patika-Regular.otf") format("opentype"); font-weight: 400; }
@font-face { font-family: Patika; src: url("/assets/fonts/Patika-Medium.otf") format("opentype"); font-weight: 500; }
@font-face { font-family: Patika; src: url("/assets/fonts/Patika-Bold.otf") format("opentype"); font-weight: 700; }
@font-face { font-family: Patika; src: url("/assets/fonts/Patika-Extra-Bold.otf") format("opentype"); font-weight: 800; }
@font-face { font-family: Patika; src: url("/assets/fonts/Patika-Black.otf") format("opentype"); font-weight: 900; }
@font-face { font-family: IBM Plex; src: url("/assets/fonts/ibm-plex-400.woff2") format("woff2"); font-weight: 400; }
@font-face { font-family: IBM Plex; src: url("/assets/fonts/ibm-plex-500.woff2") format("woff2"); font-weight: 500; }
@font-face { font-family: IBM Plex; src: url("/assets/fonts/ibm-plex-700.woff2") format("woff2"); font-weight: 700; }
@font-face { font-family: Patika Web; src: url("/assets/fonts/patika-400.woff2") format("woff2"); font-weight: 400; }
@font-face { font-family: Patika Web; src: url("/assets/fonts/patika-500.woff2") format("woff2"); font-weight: 500; }
@font-face { font-family: Patika Web; src: url("/assets/fonts/patika-700.woff2") format("woff2"); font-weight: 700; }
@font-face { font-family: Orbix; src: url("/assets/fonts/Orbixbeta-Regular.ttf") format("truetype"), url("/assets/fonts/Orbixbeta-Regular.otf") format("opentype"); font-weight: 400; }
:root { --bg:#090a0a; --panel:#111313; --panel2:#171919; --line:#2b2e2d; --text:#f2f1ec; --muted:#8b8d89; --orange:#ff7917; --orange2:#ff9b30; --red:#ff6251; font-family:"IBM Plex",Patika Web,Patika,"PingFang SC","Microsoft YaHei",sans-serif; color:var(--text); background:var(--bg); font-synthesis:none; }
* { box-sizing:border-box; } [hidden]{display:none!important} body{margin:0;min-width:320px;background:radial-gradient(circle at 83% 11%,#292019 0,#0b0c0c 34%,#080909 100%);font-size:14px} button{font:inherit;cursor:pointer;color:inherit}
.app-shell{min-height:100vh}.content{width:100%;max-width:1800px;margin:0 auto;padding:34px 5vw 64px}.topbar{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:38px}.topbar-brand{display:flex;align-items:center;gap:24px}.brand-logo{display:block;width:174px;height:auto}.topbar h1{margin:7px 0 0;font-size:30px}.crumb{color:#747772;font-size:11px}.topbar-right{display:flex;align-items:center;gap:18px;color:#777a75;font-size:11px}.live{display:flex;align-items:center;gap:7px}.live #streamDot{width:7px;height:7px;border-radius:50%;background:#777}.live.connected #streamDot{background:#57c887;box-shadow:0 0 10px #57c887}.live.disconnected #streamDot{background:var(--red)}.hero-grid{min-height:270px;padding:38px 46px;display:flex;align-items:center;justify-content:space-between;overflow:hidden;background:linear-gradient(110deg,#1b1713,#121313 62%);border:1px solid #3a2b20;border-radius:10px}.hero-copy{max-width:650px}.slash-title{margin:0;color:var(--orange);font-size:10px;letter-spacing:2px}.hero-copy h2{margin:12px 0 9px;font-size:46px;line-height:1.04;letter-spacing:-1px}.hero-copy h2 em{color:var(--orange);font-style:normal}.hero-copy>p:last-child{margin:0;color:#9a9c96;font-size:13px}.hero-orbit{position:relative;width:230px;height:180px;margin-right:9%;display:grid;place-items:center}.orbit-ring{position:absolute;width:176px;height:176px;border:1px solid #8b481e;border-radius:50%;box-shadow:0 0 0 16px #3a2314,0 0 0 17px #74401f;transform:rotate(-18deg) scaleX(.55)}.orbit-core{width:66px;height:66px;display:grid;place-items:center;border-radius:50%;background:var(--orange);color:#1a0d03;font-family:Orbix;font-size:20px;font-weight:800}.orbit-label{position:absolute;right:0;bottom:2px;color:#6e716c;font:10px/14px ui-monospace,monospace;letter-spacing:1px}
.topbar h1,.hero-copy h2,.section-head h2,.device-name h2,.metric-card strong,.adventure-logo{font-family:Orbix,Patika Web,Patika,"IBM Plex",sans-serif}.slash-title,.crumb,.metric-kicker{font-family:Patika Web,Patika,monospace}
.metric-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:13px;margin:18px 0 49px}.metric-card{min-height:113px;padding:17px 20px;background:#111313;border:1px solid #292c2b;border-radius:8px;box-shadow:inset 0 1px #ffffff05}.metric-card.accent{border-color:#87431b;background:linear-gradient(145deg,#181513,#21170f)}.metric-card.alert{border-color:#572a25}.metric-kicker{display:block;color:#8d8f89;font-size:10px;letter-spacing:1.5px}.metric-card strong{display:block;margin:9px 0 2px;color:#f4f1e8;font-size:34px;font-weight:800;line-height:1}.metric-card.accent strong{color:var(--orange)}.metric-card.alert strong{color:var(--red)}.metric-card>span:last-child{color:#8f918b;font-size:11px}
.section-head{display:flex;justify-content:space-between;align-items:end;margin-bottom:17px}.section-head h2{margin:7px 0 0;font-size:23px}.filters{display:flex;gap:4px;padding:4px;border:1px solid #2b2e2d;border-radius:6px;background:#121414}.filters button{padding:7px 13px;border:0;border-radius:4px;background:transparent;color:#80837d;font-size:11px}.filters button.active,.filters button:hover{background:var(--orange);color:#170b04;font-weight:800}.printer-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:14px}.printer-card{min-width:0;overflow:hidden;background:#111313;border:1px solid #2b2e2d;border-radius:8px;box-shadow:0 12px 25px #0005}.printer-card.printing{border-top:2px solid var(--orange)}.printer-card.idle{border-top:2px solid #547a87}.printer-card.attention{border-top:2px solid var(--red)}.card-head{min-height:66px;padding:16px 17px 12px;display:flex;justify-content:space-between;gap:12px;border-bottom:1px solid #252827}.device-name h2{margin:0;font-size:16px}.device-name p{margin:4px 0 0;color:#737670;font:10px/14px ui-monospace,monospace}.status-badge{height:23px;padding:0 9px;display:inline-flex;align-items:center;gap:6px;border-radius:3px;background:#242725;color:#979b93;font-size:10px;font-weight:700}.status-badge:before{content:"";width:5px;height:5px;border-radius:50%;background:currentColor}.printing .status-badge{background:#3b2112;color:var(--orange)}.idle .status-badge{background:#18282c;color:#7eb8c8}.attention .status-badge{background:#351c1a;color:var(--red)}.progress-block{padding:14px 17px 11px}.progress-row{display:flex;justify-content:space-between;gap:10px}.task-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#dddcd5;font-size:12px}.progress-row strong{color:var(--orange);font-size:18px}.progress-track{width:100%;height:5px;margin-top:11px;display:block;appearance:none;border:0;border-radius:3px;background:#2a2c2b}.progress-track::-webkit-progress-bar{background:#2a2c2b}.progress-track::-webkit-progress-value{background:var(--orange)}.progress-track::-moz-progress-bar{background:var(--orange)}.sub-status{display:flex;justify-content:space-between;margin-top:8px;color:#777a75;font-size:10px}.stat-table{margin:0 17px;display:grid;grid-template-columns:repeat(3,1fr);border-top:1px solid #252827;border-bottom:1px solid #252827}.stat{padding:11px 8px;border-left:1px solid #252827}.stat:first-child{border-left:0;padding-left:0}.stat span{display:block;color:#777a75;font-size:10px}.stat strong{display:block;margin-top:3px;color:#dddcd5;font-size:14px}.ams-row{height:44px;padding:9px 17px;display:flex;align-items:center;gap:7px}.ams-row>span:first-child{margin-right:auto;color:#777a75;font-size:10px}.filament{width:20px;height:20px;border:1px solid #555955;border-radius:50%;box-shadow:inset 0 0 0 4px #111313}.filament.active{outline:2px solid var(--orange);outline-offset:1px}.ams-empty{color:#666963;font-size:10px}.card-foot{min-height:40px;padding:8px 13px 8px 17px;display:flex;align-items:center;gap:8px;background:#0d0f0f;color:#777a75;font-size:10px}.card-foot .ip{font-family:ui-monospace,monospace}.card-foot .spacer{flex:1}.camera-button{border:1px solid #393c3a;border-radius:4px;background:#1b1e1d;color:#c9cbc5;font-size:10px;padding:4px 8px}.warning{padding:9px 17px;background:#392914;color:#e9a14d;font-size:10px;border-top:1px solid #694215}.warning.error{background:#351c1a;color:#ff8a7b;border-color:#62302b}.empty{min-height:300px;display:grid;place-content:center;justify-items:center;text-align:center;border:1px dashed #383b39;color:#888b84}.empty h2{margin:10px 0 3px}.empty p:last-child{margin:0;color:#6e716c;font-size:12px}.topbar+.hero-grid{}.icon-button{width:34px;height:34px;border:1px solid #373a38;border-radius:5px;background:#1d201f;font-size:22px}.camera-frame{min-height:280px;padding:18px;background:#0b0c0c}.camera-frame img{display:block;width:100%;max-height:420px;object-fit:contain;aspect-ratio:16/9;background:#161918}.camera-error{color:#ff8a7b;font-size:12px;text-align:center}
dialog{width:min(1320px,calc(100vw - 28px));padding:0;border:1px solid #383b39;border-radius:8px;background:#111313;color:var(--text);box-shadow:0 25px 90px #000b}dialog::backdrop{background:#000d}.dialog-head{padding:16px 19px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid #292c2b}.dialog-head h2{margin:3px 0 0;font-size:17px}.dialog-head .slash-title{margin:0}.camera-meta{display:flex;align-items:center;gap:13px;color:#777a75;font-size:10px}.camera-frame{position:relative;min-height:min(720px,70vh);padding:18px;background:#080909;display:grid;place-items:center}.camera-frame img{display:block;width:100%;max-width:1280px;max-height:720px;object-fit:contain;aspect-ratio:16/9;background:#161918}.camera-loading{position:absolute;color:#8f918b;font-size:12px;letter-spacing:.5px}.camera-error{margin:0;color:#ff8a7b;font-size:12px;text-align:center}
@media(max-width:900px){.content{padding-left:3vw;padding-right:3vw}.hero-orbit{margin-right:2%}}
.hms-help{display:inline-flex;width:15px;height:15px;align-items:center;justify-content:center;margin-left:4px;border:1px solid currentColor;border-radius:50%;color:inherit;font-size:10px;font-weight:800;line-height:1;text-decoration:none;vertical-align:-1px}.hms-help:hover{background:currentColor;color:#351c1a}
.access-button{min-height:34px;padding:0 13px;border:1px solid #87431b;border-radius:5px;background:#21170f;color:var(--orange);font-size:11px;font-weight:700}.access-button:hover{background:var(--orange);color:#170b04}.access-dialog{width:min(780px,calc(100vw - 28px))}.access-body{padding:19px;max-height:min(680px,72vh);overflow:auto}.access-network{margin:0 0 13px;color:#8f918b;font-size:11px}.access-network:before{content:"";display:inline-block;width:6px;height:6px;margin-right:7px;border-radius:50%;background:#57c887;box-shadow:0 0 8px #57c887}.access-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.access-item{min-width:0;padding:14px;border:1px solid #303332;border-radius:6px;background:#0d0f0f}.access-item-head{display:flex;justify-content:space-between;gap:12px}.access-item-head strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:13px}.access-item-head span{color:#737670;font:9px/16px ui-monospace,monospace}.access-item dl{margin:12px 0;display:grid;gap:7px}.access-item dl div{display:grid;grid-template-columns:88px minmax(0,1fr);gap:8px}.access-item dt{color:#777a75;font-size:10px}.access-item dd{min-width:0;margin:0;overflow-wrap:anywhere;color:#e7e5de;font:11px/15px ui-monospace,monospace}.access-actions{display:flex;gap:7px}.access-actions button{height:28px;padding:0 9px;border:1px solid #393c3a;border-radius:4px;background:#1b1e1d;color:#c9cbc5;font-size:10px}.access-actions button:hover{border-color:var(--orange);color:var(--orange)}
@media(max-width:640px){.content{padding:20px 14px 50px}.topbar{margin-bottom:28px}.topbar-brand{align-items:flex-start;flex-direction:column;gap:14px}.brand-logo{width:145px}.topbar-right{gap:8px;flex-direction:column;align-items:flex-end}.hero-grid{padding:25px 22px;min-height:240px}.hero-copy h2{font-size:32px}.hero-orbit{width:130px;transform:scale(.72);margin-right:-18px}.metric-grid{grid-template-columns:repeat(2,1fr);margin-bottom:35px}.metric-card{min-height:100px;padding:14px}.section-head{display:block}.filters{margin-top:15px;width:max-content}.printer-grid{grid-template-columns:1fr}.access-list{grid-template-columns:1fr}}
