:root{color-scheme:light;font-family:Pretendard,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;--bg: #f6f7f9;--surface: #ffffff;--surface-2: #f1f3f6;--border: #e3e7ec;--border-strong: #d4dae1;--text: #16202b;--muted: #5b6573;--accent: #0f9d6b;--online: #15a36a;--warn: #c2790b;--error: #d23f3f;--shadow: 0 1px 2px rgba(16, 32, 43, .04), 0 1px 3px rgba(16, 32, 43, .06);background:var(--bg);color:var(--text);font-synthesis:none;line-height:1.5;text-rendering:optimizeLegibility}*{box-sizing:border-box}html{background:var(--bg)}body{min-width:320px;margin:0;background:var(--bg)}button,input,select{font:inherit}button,select{cursor:pointer}button:disabled{cursor:not-allowed}button,input,select{transition:border-color .16s ease,background-color .16s ease,color .16s ease,box-shadow .16s ease}button:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid rgba(15,157,107,.24);outline-offset:2px}table{width:100%;border-collapse:collapse}th,td{padding:.7rem .9rem;text-align:left;border-bottom:1px solid var(--border);vertical-align:middle}th{color:var(--muted);background:var(--surface-2);font-size:.72rem;font-weight:700;letter-spacing:0;text-transform:uppercase;white-space:nowrap}td{color:var(--text);font-size:.88rem}tbody tr{transition:background-color .16s ease}tbody tr:hover{background:var(--surface-2)}.app-shell{display:grid;grid-template-columns:16rem minmax(0,1fr);min-height:100vh}.sidebar{position:sticky;top:0;display:flex;height:100vh;flex-direction:column;gap:1.35rem;padding:1.15rem 1rem;border-right:1px solid var(--border);background:#fbfcfd}.brand,.nav-item,.ghost-button,.primary-button,.sync-line,.notice,.device-name,.section-title,.toolbar,.select-label{display:flex;align-items:center}.brand{gap:.72rem;min-height:2.85rem;padding:0 .25rem .5rem;border-bottom:1px solid var(--border)}.brand strong{display:block;color:var(--text);font-size:.98rem;font-weight:800}.brand span,.session-card span,.muted,.sync-line,.stat-card small,.login-copy p{color:var(--muted)}.brand-mark{display:grid;width:2.35rem;height:2.35rem;place-items:center;border:1px solid rgba(15,157,107,.24);border-radius:.6rem;color:var(--accent);background:#0f9d6b14}.brand-mark.large{width:3rem;height:3rem;border-radius:.7rem}.nav-list{display:grid;gap:.28rem}.nav-item,.ghost-button,.primary-button{min-height:2.45rem;justify-content:center;gap:.52rem;border:1px solid transparent;border-radius:.45rem}.nav-item{position:relative;justify-content:flex-start;width:100%;padding:0 .78rem;color:var(--muted);background:transparent;font-weight:700}.nav-item:before{position:absolute;top:.48rem;bottom:.48rem;left:0;width:3px;border-radius:999px;background:transparent;content:""}.nav-item:hover{color:var(--text);background:var(--surface-2)}.nav-item.active{color:var(--text);background:#0f9d6b1a}.nav-item.active:before{background:var(--accent)}.sidebar-footer{display:grid;gap:.75rem;margin-top:auto}.session-card{overflow:hidden;padding:.82rem;border:1px solid var(--border);border-radius:.5rem;background:var(--surface)}.session-card strong{display:block;overflow:hidden;margin-top:.22rem;color:var(--text);font-size:.9rem;text-overflow:ellipsis;white-space:nowrap}.ghost-button,.primary-button{padding:0 .9rem;font-weight:800}.ghost-button{color:var(--text);border-color:var(--border-strong);background:var(--surface)}.ghost-button:hover{border-color:#bdc6d0;background:var(--surface-2)}.primary-button{color:#fff;border-color:var(--accent);background:var(--accent)}.primary-button:hover{border-color:#0b8359;background:#0b8f60}.primary-button:disabled{color:var(--muted);border-color:var(--border-strong);background:var(--surface-2);opacity:1}.compact{min-height:2.2rem}.main-panel{width:min(100%,92rem);padding:1.65rem 1.8rem}.page-header{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem;margin-bottom:.9rem}.page-header h1,.login-copy h1{margin:0;letter-spacing:0}.page-header h1{color:var(--text);font-size:1.55rem;line-height:1.2}.page-header p{margin:.3rem 0 0;color:var(--muted);font-size:.92rem}.sync-line,.notice{gap:.45rem;margin-bottom:.9rem;font-size:.86rem}.sync-line svg{color:var(--online)}.notice{padding:.78rem .9rem;border:1px solid rgba(194,121,11,.28);border-radius:.5rem;color:#8a5408;background:#c2790b17}.stats-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.85rem;margin-bottom:.95rem}.stat-card,.data-section,.firmware-card,.login-panel{border:1px solid var(--border);border-radius:.55rem;background:var(--surface);box-shadow:var(--shadow)}.stat-card{min-height:8.2rem;padding:.92rem}.stat-icon{display:grid;width:2rem;height:2rem;margin-bottom:1rem;place-items:center;border:1px solid var(--border);border-radius:.45rem;color:var(--muted);background:var(--surface-2)}.stat-card span{color:var(--muted);font-size:.82rem;font-weight:700}.stat-card strong{display:block;margin:.1rem 0 .04rem;color:var(--text);font-family:JetBrains Mono,SFMono-Regular,Consolas,monospace;font-size:2rem;font-weight:700;line-height:1.08}.stat-card small{display:block;font-size:.78rem}.data-section{overflow:hidden}.section-title{justify-content:space-between;gap:1rem;padding:.82rem .9rem;border-bottom:1px solid var(--border);background:var(--surface)}.section-title h2{margin:0;color:var(--text);font-size:.95rem;font-weight:800}.section-title span{color:var(--muted);font-size:.84rem;font-weight:700}.table-wrap{overflow-x:auto}.mono{font-family:JetBrains Mono,SFMono-Regular,Consolas,monospace;font-size:.82rem;font-variant-numeric:tabular-nums}.device-name{gap:.5rem;min-width:12rem}.status-dot{width:.52rem;height:.52rem;flex:0 0 auto;border-radius:999px;background:#8b96a4;box-shadow:0 0 0 .18rem #5b657324}.status-dot.online{background:var(--online);box-shadow:0 0 0 .18rem #15a36a24}.badge{display:inline-flex;min-height:1.5rem;align-items:center;gap:.38rem;padding:0 .52rem;border:1px solid rgba(91,101,115,.18);border-radius:999px;color:#3d4754;background:#5b657317;font-size:.74rem;font-weight:800}.badge:before{width:.4rem;height:.4rem;flex:0 0 auto;border-radius:999px;background:currentColor;content:""}.badge.green{color:#0c7a4f;border-color:#15a36a38;background:#15a36a1f}.badge.blue{color:#0b7050;border-color:#0f9d6b33;background:#0f9d6b1a}.badge.gray{color:#505b68;border-color:#5b657338;background:#5b65731a}.badge.warning{color:#8d5708;border-color:#c2790b3d;background:#c2790b21}.badge.error{color:#a92f2f;border-color:#d23f3f3d;background:#d23f3f1f}.badge.info{color:#405060;border-color:#5b657333;background:#5b65731a}.toolbar{justify-content:space-between;gap:1rem;margin-bottom:.9rem;padding:.82rem .9rem;border:1px solid var(--border);border-radius:.55rem;background:var(--surface);box-shadow:var(--shadow)}.select-label{gap:.72rem;color:var(--text);font-weight:800}select,input{width:100%;border:1px solid var(--border-strong);border-radius:.45rem;color:var(--text);background:var(--surface);outline:none}select{min-width:18rem;padding:.58rem .72rem}input{min-height:2.55rem;padding:0 .76rem}input:focus,select:focus{border-color:var(--accent);box-shadow:0 0 0 .18rem #0f9d6b1f}.firmware-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.9rem;margin-bottom:.9rem}.firmware-card{display:grid;min-height:11.4rem;gap:.85rem;padding:.95rem}.firmware-card h2{margin:.18rem 0;color:var(--text);font-size:1rem}.firmware-card p{margin:0;color:var(--muted)}.firmware-card small{display:block;margin-top:.32rem}.firmware-version{color:var(--text);font-family:JetBrains Mono,SFMono-Regular,Consolas,monospace;font-size:1.58rem;font-variant-numeric:tabular-nums;line-height:1.1}.empty-cell{padding:1.7rem;text-align:center;color:var(--muted)}.login-page{display:grid;min-height:100vh;place-items:center;padding:1.25rem;background:var(--bg)}.login-panel{display:grid;grid-template-columns:minmax(0,1fr) minmax(20rem,24rem);width:min(100%,58rem);overflow:hidden}.login-copy,.login-form{padding:2rem}.login-copy{display:grid;align-content:center;gap:.95rem;border-right:1px solid var(--border);background:#fbfcfd}.login-copy h1{color:var(--text);font-size:2.1rem;line-height:1.16}.login-copy p{max-width:27rem;margin:0;font-size:.95rem}.login-form{display:grid;align-content:center;gap:.95rem;background:var(--surface)}.login-form label{display:grid;gap:.42rem;color:var(--text);font-weight:800}.form-error{padding:.72rem .82rem;border:1px solid rgba(210,63,63,.24);border-radius:.45rem;color:#a92f2f;background:#d23f3f1a}@media(max-width:1050px){.stats-grid,.firmware-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:820px){.app-shell{grid-template-columns:1fr}.sidebar{position:static;height:auto;border-right:0;border-bottom:1px solid var(--border)}.nav-list{grid-template-columns:repeat(5,minmax(0,1fr))}.nav-item{justify-content:center;padding:0}.nav-item:before{top:auto;right:.55rem;bottom:0;left:.55rem;width:auto;height:3px}.nav-item span{display:none}.sidebar-footer{grid-template-columns:minmax(0,1fr) auto;align-items:center}.main-panel{padding:1rem}.login-panel{grid-template-columns:1fr}.login-copy{border-right:0;border-bottom:1px solid var(--border)}}@media(max-width:620px){.stats-grid,.firmware-grid{grid-template-columns:1fr}.page-header,.toolbar,.select-label{align-items:stretch;flex-direction:column}select{min-width:0}.sidebar-footer{grid-template-columns:1fr}.login-copy,.login-form{padding:1.25rem}}
