:root{font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;color:#f2f5f9;background:#0b1017;color-scheme:dark}*{box-sizing:border-box}body{margin:0}.viewer-page{min-height:100vh;min-height:100dvh;display:grid;place-items:center;padding:clamp(12px,3vw,32px)}.camera-frame{position:relative;width:min(100%,1200px);aspect-ratio:16 / 9;overflow:hidden;border:1px solid #273241;border-radius:12px;background:#000}.camera-viewer{display:block;width:100%;height:100%}.camera-viewer video{display:block;width:100%;height:100%;object-fit:contain}.message{margin:0;padding:24px;text-align:center;line-height:1.6}.connecting{position:absolute;inset:0;display:grid;place-items:center;pointer-events:none}@media(max-width:600px){.viewer-page{padding:0}.camera-frame{border-radius:0;border:0}}.viewer-session{width:min(100%,1200px)}.access-controls{padding:16px;text-align:center}.countdown{font-variant-numeric:tabular-nums;margin:0}.expiry-warning{margin-top:12px;color:#f8d594}.expiry-warning p{margin:0 0 12px}.expiry-warning button{min-height:44px;padding:10px 22px;border:1px solid #92bbeb;border-radius:8px;background:#bedcff;color:#101c2d;font:inherit;cursor:pointer}.expiry-warning button:disabled{opacity:.55;cursor:wait}.expiry-warning button:focus-visible{outline:3px solid #fff;outline-offset:3px}.admin-page{max-width:1200px;margin:0 auto;padding:clamp(16px,3vw,32px)}.admin-page header p,.admin-details dt{color:#abb9ca}.admin-details{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,180px),1fr));gap:16px}.admin-details dt{font-size:.875rem}.admin-details dd{margin:4px 0 0}.admin-table-scroll{overflow-x:auto}.admin-table-scroll:focus-visible{outline:2px solid #92bbeb;outline-offset:3px}.admin-policy fieldset{border:0;padding:0;margin:0;min-width:0}.admin-policy label{display:grid;gap:8px;color:#abb9ca;font-size:.875rem}.admin-policy input[type=number]{width:100%;min-width:0}.admin-policy input[type=number],.admin-policy button{padding:10px;border:1px solid #273241;border-radius:8px;font:inherit}.admin-policy .admin-policy-checkbox{display:flex;align-items:center}.admin-policy button{margin-top:16px;background:#bedcff;color:#101c2d;cursor:pointer}.admin-policy button:disabled,.admin-policy fieldset:disabled{opacity:.6}.admin-policy button:disabled{cursor:default}.admin-policy input:focus-visible,.admin-policy button:focus-visible{outline:2px solid #92bbeb;outline-offset:3px}.admin-policy p{margin-bottom:0}.admin-login{max-width:440px}.admin-auth-form{display:grid;gap:12px}.admin-auth-form input,.admin-auth-form button,.admin-session-bar button{padding:10px 14px;border:1px solid #273241;border-radius:8px;font:inherit}.admin-auth-form button,.admin-session-bar button{background:#bedcff;color:#101c2d;cursor:pointer}.admin-auth-form button:disabled{opacity:.6;cursor:wait}.admin-auth-form :focus-visible,.admin-session-bar button:focus-visible{outline:2px solid #92bbeb;outline-offset:3px}.admin-session-bar{max-width:1200px;margin:0 auto;padding:16px 32px 0;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:12px}.admin-session-bar span{color:#abb9ca;overflow-wrap:anywhere}.user-cameras-page header p{color:#abb9ca}.user-camera-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,280px),1fr));gap:16px;margin-top:24px}.user-camera-card{display:block;padding:20px;border:1px solid #273241;border-radius:12px;background:#101822;color:inherit;text-decoration:none}.user-camera-card:hover{border-color:#92bbeb}.user-camera-card:focus-visible{outline:2px solid #92bbeb;outline-offset:3px}.user-camera-card h2{margin:0 0 12px;font-size:1.1rem}.user-camera-card p{margin:8px 0 0;color:#abb9ca}.user-cameras-empty{margin-top:24px;padding:24px;border:1px solid #273241;border-radius:12px;background:#101822}.admin-user-form-section,.admin-user-card{margin:24px 0;padding:20px;border:1px solid #273241;border-radius:12px;background:#101822}.admin-user-form{display:grid;gap:14px;max-width:560px}.admin-user-form label{display:grid;gap:8px;color:#abb9ca}.admin-user-form input,.admin-user-form select,.admin-user-form button{padding:10px;border:1px solid #273241;border-radius:8px;font:inherit}.admin-user-form fieldset{border:1px solid #273241;border-radius:8px;display:grid;gap:8px}.admin-user-camera-option{display:flex!important;align-items:center}.admin-user-card h3{margin-bottom:4px}.admin-user-card button{padding:9px 14px;border:1px solid #273241;border-radius:8px;font:inherit;cursor:pointer}.admin-user-edit-form{display:grid;gap:12px;max-width:560px}.admin-user-edit-form label{display:grid;gap:8px;color:#abb9ca}.admin-user-edit-form input{padding:10px;border:1px solid #273241;border-radius:8px;font:inherit}.admin-user-edit-form fieldset{border:1px solid #273241;border-radius:8px;display:grid;gap:8px}.admin-user-actions{display:flex;gap:10px}.admin-user-actions button[type=submit]{background:#bedcff;color:#101c2d}.admin-user-actions button:disabled{opacity:.6;cursor:wait}.admin-camera-form fieldset{padding:12px}.admin-camera-form legend{color:#abb9ca;font-size:.875rem;padding:0 4px}.admin-camera-form-note{margin:0 0 4px;color:#abb9ca;font-size:.875rem;line-height:1.5}.admin-button{display:inline-block;padding:9px 14px;border:1px solid #273241;border-radius:8px;background:#16202c;color:#dce6f2;font:inherit;text-decoration:none;white-space:nowrap;cursor:pointer}.admin-button:hover{border-color:#92bbeb}.admin-button:focus-visible{outline:2px solid #92bbeb;outline-offset:3px}.admin-button-primary{background:#bedcff;color:#101c2d;border-color:#bedcff}.admin-button:disabled{opacity:.55;cursor:default}.admin-page-header{display:flex;flex-wrap:wrap;align-items:flex-start;justify-content:space-between;gap:16px}.admin-page-header h1{margin:4px 0 6px}.admin-page-header p{margin:0}.admin-page-actions{display:flex;flex-wrap:wrap;align-items:flex-start;gap:10px}.admin-breadcrumb{font-size:.875rem}.admin-breadcrumb a{color:#92bbeb}.admin-toolbar{display:flex;flex-wrap:wrap;align-items:end;justify-content:space-between;gap:12px;margin-top:24px}.admin-search{display:grid;gap:6px;flex:1 1 260px;color:#abb9ca;font-size:.875rem}.admin-search input{padding:10px;border:1px solid #273241;border-radius:8px;background:#101822;color:inherit;font:inherit}.admin-search input:focus-visible{outline:2px solid #92bbeb;outline-offset:2px}.admin-count{margin:0;color:#abb9ca;font-size:.875rem}.admin-group{margin-top:28px}.admin-group h2{margin:0 0 12px;font-size:1rem;color:#abb9ca;text-transform:uppercase;letter-spacing:.04em}.admin-camera-list{list-style:none;margin:0;padding:0;display:grid;gap:10px}.admin-camera-row{display:flex;flex-wrap:wrap;align-items:center;gap:12px;padding:14px 16px;border:1px solid #273241;border-radius:12px;background:#101822}.admin-camera-row:hover{border-color:#3a4a5e}.admin-camera-identity{flex:1 1 260px;min-width:0}.admin-camera-name{font-size:1.05rem;font-weight:600;color:#dce6f2;text-decoration:none;overflow-wrap:anywhere}.admin-camera-name:hover{color:#bedcff;text-decoration:underline}.admin-camera-name:focus-visible{outline:2px solid #92bbeb;outline-offset:3px}.admin-camera-meta{margin:4px 0 0;color:#abb9ca;font-size:.875rem;overflow-wrap:anywhere}.admin-row-actions{display:flex;flex-wrap:wrap;gap:8px}.admin-badges{display:flex;flex-wrap:wrap;gap:6px}.admin-badge{padding:4px 10px;border-radius:999px;background:#1b2430;color:#abb9ca;font-size:.8rem;white-space:nowrap}.admin-badge-good{background:#17332a;color:#8fe0b0}.admin-badge-bad{background:#37222a;color:#f2a3ad}.admin-badge-muted{background:#1b2430;color:#abb9ca}.admin-panel{margin-top:24px;padding:20px;border:1px solid #273241;border-radius:12px;background:#101822;overflow-wrap:anywhere}.admin-panel h2{margin:0 0 16px;font-size:1.05rem}.admin-panel table{width:100%;border-collapse:collapse;text-align:left}.admin-panel th,.admin-panel td{padding:12px;border-bottom:1px solid #273241}.admin-panel th{color:#abb9ca;font-size:.875rem}.admin-panel select{padding:8px;border:1px solid #273241;border-radius:8px;background:#16202c;color:inherit;font:inherit}@media(max-width:640px){.admin-camera-row{align-items:stretch}.admin-row-actions{width:100%}.admin-row-actions .admin-button{flex:1 1 auto;text-align:center}.admin-page-actions{width:100%}}.admin-share{position:relative}.admin-share-panel{position:absolute;top:calc(100% + 8px);right:0;left:auto;z-index:30;width:min(340px,calc(100vw - 32px));padding:14px;border:1px solid #3a4a5e;border-radius:10px;background:#16202c;box-shadow:0 12px 28px #00000080;text-align:left}.admin-share-summary,.admin-share-hint{margin:0 0 12px;color:#abb9ca;font-size:.8rem;line-height:1.45}.admin-share-generate{width:100%}.admin-share-result{display:grid;gap:8px}.admin-share-result label{color:#abb9ca;font-size:.8rem}.admin-share-result input,.user-live-page .admin-share-result textarea{width:100%;padding:9px;border:1px solid #273241;border-radius:8px;background:#0b1017;color:inherit;font:inherit;font-size:.8rem}.admin-share-expiry{margin:0;color:#abb9ca;font-size:.8rem}.admin-share-buttons{display:flex;gap:8px}.admin-share-buttons .admin-button{flex:1 1 auto;text-align:center}.admin-share-message{margin:10px 0 0;font-size:.8rem}.admin-live-page{padding-top:16px}.admin-live-header{align-items:center;margin-bottom:12px}.admin-live-header h1{margin:2px 0;font-size:1.2rem}.admin-live-header p{font-size:.8rem}.admin-live-header .admin-breadcrumb{margin-bottom:2px}@media(max-width:640px){.admin-share-panel{right:auto;left:0}}.admin-stream-editors{display:grid;gap:16px;grid-template-columns:repeat(auto-fit,minmax(min(100%,320px),1fr))}.admin-stream-editor{padding:16px;border:1px solid #273241;border-radius:10px;background:#0d151e}.admin-stream-editor h3{margin:0 0 10px;font-size:.95rem}.admin-stream-editor form{display:grid;gap:10px}.admin-stream-editor label{display:grid;gap:6px;color:#abb9ca;font-size:.875rem}.admin-stream-editor input[type=text],.admin-stream-editor input[type=password]{padding:10px;border:1px solid #273241;border-radius:8px;background:#101822;color:inherit;font:inherit}.admin-stream-editor input:focus-visible{outline:2px solid #92bbeb;outline-offset:2px}.admin-stream-state{margin:0 0 10px;color:#abb9ca;font-size:.875rem}.admin-danger{border-color:#4a2b33}.admin-danger h2{color:#f2a3ad}.admin-danger form{display:grid;gap:10px;max-width:420px;margin-top:12px}.admin-danger label{display:grid;gap:6px;color:#abb9ca;font-size:.875rem}.admin-danger code{background:#1b2430;padding:2px 6px;border-radius:6px}.admin-danger input{padding:10px;border:1px solid #273241;border-radius:8px;background:#101822;color:inherit;font:inherit}.admin-button-danger{background:#f2a3ad;color:#2a0f15;border-color:#f2a3ad}.admin-share-copied{margin-left:8px;color:#8fe0b0;font-size:.875rem;white-space:nowrap}.user-live-page .admin-share-result textarea{min-width:0;resize:none;overflow-wrap:anywhere}.admin-stream-field-label{display:none}@media(max-width:600px){.admin-camera-detail-page{min-width:0;overflow-wrap:break-word;word-break:normal}.admin-camera-detail-page .admin-page-header>div{min-width:0;max-width:100%}.admin-camera-detail-page .admin-panel{padding:16px;overflow-wrap:break-word}.admin-camera-detail-page .admin-stream-table-scroll{overflow:visible}.admin-stream-table{display:block}.admin-stream-table thead{position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip-path:inset(50%);white-space:nowrap}.admin-stream-table tbody{display:grid;grid-template-columns:minmax(0,1fr);gap:16px}.admin-stream-table tbody tr{display:block;min-width:0;padding:12px;border:1px solid #273241;border-radius:10px;background:#0d151e}.admin-camera-detail-page .admin-stream-table td{display:block;padding:10px 0;border:0;line-height:1.5}.admin-stream-table .admin-stream-field-label{display:block;margin-bottom:4px;color:#abb9ca;font-weight:600}.admin-stream-table .admin-badge{display:inline-block;max-width:100%;white-space:normal}.admin-camera-detail-page .admin-stream-editors{grid-template-columns:minmax(0,1fr)}.admin-camera-detail-page .admin-stream-editor{min-width:0;padding:12px}.admin-camera-detail-page .admin-stream-editor form{grid-template-columns:minmax(0,1fr)}.admin-camera-detail-page .admin-stream-editor label{min-width:0;line-height:1.5}.admin-camera-detail-page .admin-stream-editor input[type=text],.admin-camera-detail-page .admin-stream-editor input[type=password]{width:100%;min-width:0;max-width:100%;min-height:44px;font-size:1rem}.admin-camera-detail-page .admin-stream-editor input[type=checkbox]{flex-shrink:0}.admin-camera-detail-page .admin-stream-editor .admin-user-camera-option{min-height:44px}.admin-camera-detail-page .admin-stream-editor .admin-row-actions{flex-direction:column}.admin-camera-detail-page .admin-stream-editor .admin-button,.admin-stream-table .admin-button{width:100%;min-height:44px;white-space:normal;text-align:center}}@media(max-width:600px){.user-session-bar{padding:16px 16px 0;flex-direction:column;align-items:stretch}.user-session-bar span{min-width:0;line-height:1.5}.user-session-bar button{min-height:44px;white-space:normal}.user-cameras-page,.user-live-page{min-width:0;overflow-wrap:anywhere;word-break:normal;line-height:1.5}.user-camera-grid{grid-template-columns:minmax(0,1fr)}.user-camera-card{min-width:0;padding:16px}.user-live-page .admin-live-header{display:grid;grid-template-columns:minmax(0,1fr);gap:8px}.user-live-page .admin-live-header p{font-size:1rem;margin:8px 0}.user-live-page .admin-live-header>a{display:flex;align-items:center;min-height:44px}.user-live-page .message{padding:16px 0}.user-live-page .camera-viewer{height:auto;min-width:0}.user-live-page .camera-viewer video{max-width:100%;height:auto;object-fit:contain}.user-live-page .admin-share{min-width:0;margin-bottom:12px}.user-live-page .admin-share-panel{width:100%;max-width:100%;left:0;right:auto}.user-live-page .admin-share-result{grid-template-columns:minmax(0,1fr)}.user-live-page .admin-share-buttons{flex-direction:column}.user-live-page .admin-button{min-height:44px;max-width:100%;white-space:normal}.user-live-page .admin-share>.admin-button{width:100%}.user-live-page .admin-share-result textarea{min-height:6em;font-size:1rem;line-height:1.5}.user-live-page .admin-share-summary,.user-live-page .admin-share-hint,.user-live-page .admin-share-result label,.user-live-page .admin-share-expiry,.user-live-page .admin-share-message{font-size:.9375rem}.user-live-page .admin-share-copied{display:block;margin:8px 0 0;white-space:normal}}
