:root{color-scheme:light;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;background:#f5f7f8;color:#17211d;font-synthesis:none;text-rendering:optimizeLegibility}*{box-sizing:border-box}body{margin:0;min-width:320px;min-height:100vh}button,input,textarea,select{font:inherit}.app-shell{min-height:100vh;padding:24px}.topbar{display:flex;align-items:flex-start;justify-content:space-between;gap:20px;margin:0 auto 16px;max-width:1480px}.topbar h1{margin:0;color:#17211d;font-size:32px;line-height:1.1;font-weight:760;letter-spacing:0}.topbar p{margin:8px 0 0;color:#63706b;font-size:15px}.score-pill{display:flex;align-items:center;gap:10px;border:1px solid #d8e0dd;background:#fff;border-radius:8px;padding:10px 12px;color:#63706b;font-size:13px;box-shadow:0 8px 24px #17211d0f}.score-pill span{color:#17211d;font-weight:800}.status-strip{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin:0 auto 16px;max-width:1480px}.status-item{display:flex;align-items:center;gap:8px;min-height:44px;border:1px solid #d8e0dd;background:#fff;border-radius:8px;padding:0 12px;color:#63706b;font-size:13px}.status-item strong{margin-left:auto;color:#17211d;font-size:12px;text-transform:uppercase}.status-item.connected svg,.pass svg{color:#1b8f5a}.status-item.connecting svg,.warn svg{color:#b7791f}.status-item.error svg,.status-item.disconnected svg,.fail svg{color:#c2413a}.workspace{display:grid;grid-template-columns:minmax(0,1fr) 420px;gap:16px;max-width:1480px;margin:0 auto}.camera-panel{min-width:0}.video-frame{position:relative;overflow:hidden;min-height:min(68vh,780px);border:1px solid #cfd8d4;border-radius:8px;background:#101615;box-shadow:0 20px 44px #17211d1f}.video-frame video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;transform:scaleX(-1)}.photo-guide{position:absolute;left:50%;top:50%;width:min(43vw,360px);aspect-ratio:35 / 45;transform:translate(-50%,-50%);border:2px solid rgba(255,255,255,.86);border-radius:6px;box-shadow:0 0 0 999px #080c0b57,inset 0 0 0 1px #10161538}.eye-band{position:absolute;left:10%;right:10%;top:31%;height:12%;border-top:1px dashed rgba(255,255,255,.75);border-bottom:1px dashed rgba(255,255,255,.75)}.nose-line{position:absolute;left:50%;top:25%;bottom:25%;border-left:1px dashed rgba(255,255,255,.6)}.center-cross{position:absolute;left:50%;top:45%;width:18px;height:18px;transform:translate(-50%,-50%);border:1px solid rgba(255,255,255,.8);border-radius:50%}.camera-hint,.scan-line{position:absolute;display:flex;align-items:center;gap:8px;border:1px solid rgba(255,255,255,.22);background:#101615c2;color:#fff;border-radius:8px;padding:10px 12px;font-size:13px;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}.camera-hint{left:16px;bottom:16px;max-width:calc(100% - 32px)}.scan-line{top:16px;right:16px}.scan-line svg{animation:spin 1.2s linear infinite}.side-rail{display:grid;gap:16px;align-content:start}.panel{border:1px solid #d8e0dd;background:#fff;border-radius:8px;box-shadow:0 8px 24px #17211d0f}.panel-heading{display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid #edf1ef;padding:14px 16px}.panel-heading h2{margin:0;color:#17211d;font-size:15px;line-height:1.2}.panel-heading span{color:#63706b;font-size:12px;text-transform:uppercase}.check-list{display:grid;gap:8px;padding:12px}.check-row{display:grid;grid-template-columns:24px 1fr;gap:10px;align-items:start;border:1px solid #edf1ef;border-radius:8px;padding:10px}.check-row.pass{background:#f0fbf5;border-color:#c9ecda}.check-row.warn{background:#fff8e8;border-color:#f2dda9}.check-row.fail{background:#fff0ee;border-color:#f1c8c3}.check-row h3{margin:0 0 3px;color:#17211d;font-size:14px;line-height:1.25}.check-row p{margin:0;color:#63706b;font-size:12px;line-height:1.35}.metric-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;padding:12px}.metric{border:1px solid #edf1ef;border-radius:8px;padding:10px;background:#fafbfb}.metric span{display:block;color:#63706b;font-size:12px}.metric strong{display:block;margin-top:4px;color:#17211d;font-size:17px}@keyframes spin{to{transform:rotate(360deg)}}@media(max-width:980px){.app-shell{padding:16px}.topbar{display:grid}.score-pill,.status-strip,.workspace{width:100%}.status-strip,.workspace{grid-template-columns:1fr}.video-frame{min-height:58vh}.photo-guide{width:min(70vw,310px)}}@media(max-width:560px){.topbar h1{font-size:25px}.score-pill{flex-wrap:wrap}.metric-grid{grid-template-columns:1fr}.camera-hint,.scan-line{font-size:12px}}
