:root{color-scheme:light;--color-brand-950: #003d3f;--color-brand-900: #005457;--color-brand-800: #006e71;--color-brand-700: #007d80;--color-brand-600: #009fa2;--color-brand-500: #08afb2;--color-brand-300: #77d8d9;--color-brand-200: #afe9e9;--color-brand-100: #d9f5f5;--color-brand-50: #effbfb;--color-ink: #163335;--color-ink-soft: #52696a;--color-canvas: #f4fbfb;--color-surface: #ffffff;--color-border: #c9dcdc;--color-danger: #b42318;--color-danger-soft: #fff1f0;--color-warning: #8a4b08;--color-warning-soft: #fff7e6;--color-success: #16704a;--color-success-soft: #eaf8f1;--font-sans: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--text-xs: .75rem;--text-sm: .875rem;--text-base: 1rem;--text-lg: 1.125rem;--text-xl: clamp(1.25rem, 3vw, 1.5rem);--text-2xl: clamp(1.5rem, 5vw, 2rem);--space-1: .25rem;--space-2: .5rem;--space-3: .75rem;--space-4: 1rem;--space-5: 1.25rem;--space-6: 1.5rem;--space-8: 2rem;--space-10: 2.5rem;--space-12: 3rem;--radius-sm: .5rem;--radius-md: .75rem;--radius-lg: 1rem;--radius-pill: 999px;--shadow-sm: 0 1px 2px rgb(0 61 63 / 8%), 0 2px 8px rgb(0 61 63 / 6%);--shadow-lg: 0 18px 50px rgb(0 61 63 / 18%);--content-width: 70rem;--reading-width: 44rem;--touch-target: 2.75rem;--focus-ring: 0 0 0 3px rgb(8 175 178 / 30%);--transition-fast: .14s ease}*,*:before,*:after{box-sizing:border-box}html{min-width:20rem;min-height:100%;background:var(--color-canvas);font-family:var(--font-sans);line-height:1.5;-webkit-text-size-adjust:100%;text-rendering:optimizeLegibility}body{min-width:20rem;min-height:100dvh;margin:0;background:var(--color-canvas);color:var(--color-ink)}body:has(dialog[open]){overflow:hidden}button,input,select,textarea{color:inherit;font:inherit}button,[role=button],input:not([type=checkbox],[type=radio]),select{min-height:var(--touch-target)}button,[role=button]{touch-action:manipulation}button:disabled,[aria-disabled=true]{cursor:not-allowed;opacity:.55}a{color:var(--color-brand-800);text-underline-offset:.18em;text-decoration-thickness:.08em}a:hover{color:var(--color-brand-950)}:focus-visible{outline:2px solid var(--color-brand-800);outline-offset:3px}img,svg{display:block;max-width:100%}h1,h2,h3,p{margin-block-start:0}h1,h2,h3{line-height:1.2}#root{min-height:100dvh}.app-shell{min-height:100dvh;padding:max(var(--space-4),env(safe-area-inset-top)) max(var(--space-4),env(safe-area-inset-right)) max(calc(var(--space-12) + var(--touch-target)),env(safe-area-inset-bottom)) max(var(--space-4),env(safe-area-inset-left))}.page{width:min(100%,var(--content-width));margin-inline:auto}.reading-width{width:min(100%,var(--reading-width));margin-inline:auto}.stack{display:flex;flex-direction:column;gap:var(--space-4)}.cluster{display:flex;flex-wrap:wrap;gap:var(--space-3);align-items:center}.surface{border:1px solid var(--color-border);border-radius:var(--radius-lg);background:var(--color-surface);box-shadow:var(--shadow-sm)}.muted{color:var(--color-ink-soft)}.skip-link{position:fixed;z-index:1000;top:var(--space-3);left:var(--space-3);padding:var(--space-3) var(--space-4);transform:translateY(-200%);border-radius:var(--radius-sm);background:var(--color-brand-950);color:#fff}.skip-link:focus{transform:translateY(0)}.sr-only{position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.primary-button,.secondary-button,.danger-button,.icon-button{display:inline-flex;min-width:var(--touch-target);min-height:var(--touch-target);align-items:center;justify-content:center;gap:var(--space-2);border:1px solid transparent;border-radius:var(--radius-md);padding:var(--space-2) var(--space-4);cursor:pointer;font-weight:700;transition:background-color var(--transition-fast),border-color var(--transition-fast),color var(--transition-fast),transform var(--transition-fast)}.primary-button{background:var(--color-brand-700);color:#fff}.primary-button:hover:not(:disabled){background:var(--color-brand-800)}.secondary-button,.icon-button{border-color:var(--color-border);background:var(--color-surface);color:var(--color-brand-900)}.secondary-button:hover:not(:disabled),.icon-button:hover:not(:disabled){border-color:var(--color-brand-500);background:var(--color-brand-50)}.danger-button{border-color:#f3b6b0;background:var(--color-danger-soft);color:var(--color-danger)}.icon-button{padding:var(--space-2)}.field{display:grid;gap:var(--space-2)}.field>label,.field-label{font-weight:700}.field input,.field select,.field textarea{width:100%;border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface);padding:.7rem .8rem}.field input:hover,.field select:hover,.field textarea:hover{border-color:var(--color-brand-500)}.field input[aria-invalid=true],.field select[aria-invalid=true],.field textarea[aria-invalid=true]{border-color:var(--color-danger)}.field-error{margin:0;color:var(--color-danger);font-size:var(--text-sm)}.status-message{border:1px solid var(--color-border);border-radius:var(--radius-md);padding:var(--space-3) var(--space-4)}.status-message[data-tone=danger]{border-color:#f3b6b0;background:var(--color-danger-soft);color:var(--color-danger)}.status-message[data-tone=warning]{border-color:#f4cf97;background:var(--color-warning-soft);color:var(--color-warning)}.status-message[data-tone=success]{border-color:#a8dfc5;background:var(--color-success-soft);color:var(--color-success)}dialog{width:min(calc(100% - 2 * var(--space-4)),34rem);max-height:min(90dvh,48rem);margin:auto;overflow:auto;border:1px solid var(--color-border);border-radius:var(--radius-lg);background:var(--color-surface);color:var(--color-ink);box-shadow:var(--shadow-lg)}dialog::backdrop{background:#00222485;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.modal{display:grid;gap:var(--space-5);padding:var(--space-5)}.modal__header{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--space-4)}.modal__header h2{margin:0;font-size:var(--text-xl)}.modal__actions{display:flex;flex-direction:column-reverse;gap:var(--space-3)}@media(min-width:40rem){.app-shell{padding-inline:max(var(--space-6),env(safe-area-inset-left))}.modal{padding:var(--space-6)}.modal__actions{flex-direction:row;justify-content:flex-end}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}@media(forced-colors:active){.surface,.primary-button,.secondary-button,.danger-button,.icon-button{border:1px solid ButtonText}}.app-page{min-height:100dvh;background:radial-gradient(circle at 10% -10%,rgb(119 216 217 / 22%),transparent 20rem),var(--color-canvas)}.app-page.with-bottom-nav{padding-bottom:calc(5.25rem + env(safe-area-inset-bottom))}html:has(.pwa-status-banner,.toast){scroll-padding-bottom:calc(12rem + env(safe-area-inset-bottom))}body:has(.pwa-status-banner,.toast) .app-page.with-bottom-nav{padding-bottom:calc(12rem + env(safe-area-inset-bottom))}.top-bar{position:sticky;z-index:20;top:0;display:flex;min-height:4.75rem;align-items:center;justify-content:space-between;gap:var(--space-3);padding:max(var(--space-3),env(safe-area-inset-top)) max(var(--space-4),env(safe-area-inset-right)) var(--space-3) max(var(--space-4),env(safe-area-inset-left));border-bottom:1px solid rgb(201 220 220 / 72%);background:#f4fbfbe0;-webkit-backdrop-filter:blur(18px) saturate(145%);backdrop-filter:blur(18px) saturate(145%)}.top-bar>h1,.top-bar h1{margin:0;color:var(--color-brand-950);font-size:var(--text-xl)}.brand-lockup{display:flex;min-width:0;align-items:center;gap:var(--space-3)}.brand-lockup img{flex:0 0 auto;object-fit:contain}.brand-lockup>div{min-width:0}.brand-lockup p,.brand-lockup h1{overflow:hidden;margin:0;text-overflow:ellipsis;white-space:nowrap}.brand-lockup p{color:var(--color-ink-soft);font-size:var(--text-sm)}.brand-lockup.compact{padding:var(--space-3);border-radius:var(--radius-md);background:var(--color-brand-50)}.brand-lockup.compact strong{color:var(--color-brand-950);font-size:var(--text-lg)}.brand-lockup.compact p{overflow:visible;white-space:normal}.top-actions{display:flex;flex:0 0 auto;align-items:center;gap:var(--space-2)}.top-actions svg,.primary-button svg,.secondary-button svg,.icon-button svg{width:1.2rem;height:1.2rem}.full-width{width:100%}.bottom-nav{position:fixed;z-index:30;right:0;bottom:0;left:0;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--space-2);padding:var(--space-2) max(var(--space-4),env(safe-area-inset-right)) max(var(--space-2),env(safe-area-inset-bottom)) max(var(--space-4),env(safe-area-inset-left));border-top:1px solid var(--color-border);background:#fffffff0;box-shadow:0 -8px 25px #003d3f12;-webkit-backdrop-filter:blur(18px) saturate(140%);backdrop-filter:blur(18px) saturate(140%)}.bottom-nav a{display:flex;min-height:3.5rem;align-items:center;justify-content:center;gap:var(--space-2);border-radius:var(--radius-md);color:var(--color-ink-soft);font-size:var(--text-sm);font-weight:700;text-decoration:none}.bottom-nav a.active{background:var(--color-brand-100);color:var(--color-brand-900)}.bottom-nav svg{width:1.35rem;height:1.35rem}.protocols-layout{display:grid;width:min(100%,var(--content-width));margin:0 auto;padding:var(--space-4);gap:var(--space-5)}.protocol-list{display:grid;align-content:start;gap:var(--space-3)}.protocol-search-area{display:grid;gap:var(--space-2)}.protocol-search-field{display:grid;min-height:var(--touch-target);grid-template-columns:auto minmax(0,1fr) auto;align-items:center;overflow:hidden;border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface);box-shadow:var(--shadow-sm)}.protocol-search-field:focus-within{border-color:var(--color-brand-600);box-shadow:var(--focus-ring)}.protocol-search-field>svg{width:1.2rem;height:1.2rem;margin-left:var(--space-4);color:var(--color-brand-700)}.protocol-search-field input{width:100%;min-width:0;min-height:var(--touch-target);border:0;outline:2px solid transparent;padding:var(--space-3);background:transparent;color:var(--color-ink);font:inherit}.protocol-search-field input::placeholder{color:var(--color-ink-soft)}.protocol-search-field input::-webkit-search-cancel-button{display:none}.protocol-search-clear{display:grid;width:var(--touch-target);min-height:var(--touch-target);place-items:center;border:0;background:transparent;color:var(--color-ink-soft);cursor:pointer}.protocol-search-clear:hover{color:var(--color-brand-800)}.protocol-search-clear svg{width:1.1rem;height:1.1rem}.protocol-search-count{margin:0;color:var(--color-ink-soft);font-size:var(--text-sm)}.search-empty-state{display:grid;min-height:18rem;place-items:center;align-content:center;gap:var(--space-3);padding:var(--space-6) var(--space-5);border:1px dashed var(--color-brand-300);border-radius:var(--radius-lg);background:#ffffffa8;text-align:center}.search-empty-state>svg{width:2.5rem;height:2.5rem;color:var(--color-brand-700)}.search-empty-state h2,.search-empty-state p{margin:0}.search-empty-state p{max-width:28rem;color:var(--color-ink-soft);overflow-wrap:anywhere}@media(forced-colors:active){.protocol-search-field:focus-within{outline:2px solid CanvasText;outline-offset:2px}}.protocol-card{display:grid;min-height:6.25rem;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:var(--space-3);padding:var(--space-4);border:1px solid var(--color-border);border-radius:var(--radius-lg);background:var(--color-surface);box-shadow:var(--shadow-sm);cursor:pointer;transition:border-color var(--transition-fast),box-shadow var(--transition-fast),transform var(--transition-fast)}.protocol-card:has(.protocol-select-button:hover),.protocol-card.selected{border-color:var(--color-brand-500);box-shadow:0 8px 24px #006e711c}.protocol-card:has(.protocol-select-button:active){transform:scale(.992)}.protocol-card.selected{background:linear-gradient(135deg,var(--color-surface),var(--color-brand-50));box-shadow:inset 4px 0 var(--color-brand-600),var(--shadow-sm)}.protocol-card.expired{border-color:#efc4bf}.protocol-card.expired .protocol-card-icon{background:var(--color-danger-soft);color:var(--color-danger)}.protocol-card-icon{display:grid;width:2.75rem;height:2.75rem;place-items:center;border-radius:50%;background:var(--color-brand-100);color:var(--color-brand-800)}.protocol-card-icon svg{width:1.3rem}.protocol-card-copy{display:grid;min-width:0;gap:.2rem}.protocol-select-button{display:grid;min-width:0;min-height:4rem;grid-template-columns:auto minmax(0,1fr);align-items:center;gap:var(--space-3);border:0;padding:0;background:transparent;color:inherit;cursor:pointer;text-align:left}.protocol-card-copy>strong,.protocol-card-copy>small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.protocol-card-copy>strong{color:var(--color-brand-950);font-size:var(--text-lg)}.protocol-card-copy>small,.metadata-line{color:var(--color-ink-soft);font-size:var(--text-sm)}.metadata-line{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-2)}.metadata-line svg{width:.95rem;height:.95rem}.protocol-expiry{display:inline-flex;align-items:center;gap:var(--space-1);color:var(--color-brand-800);font-size:var(--text-xs);font-weight:750}.protocol-expiry.expired{color:var(--color-danger)}.protocol-expiry svg{width:.95rem;height:.95rem;flex:0 0 auto}.danger-ghost{border-color:transparent;background:transparent;color:var(--color-ink-soft)}.danger-ghost:hover:not(:disabled){border-color:#f3b6b0;background:var(--color-danger-soft);color:var(--color-danger)}.empty-state{display:grid;min-height:min(65dvh,31rem);place-items:center;align-content:center;padding:var(--space-8) var(--space-5);border:1px dashed var(--color-brand-300);border-radius:var(--radius-lg);background:#ffffffa8;text-align:center}.empty-state h2{margin:var(--space-4) 0 var(--space-2)}.empty-state p{max-width:28rem;color:var(--color-ink-soft)}.empty-icon{display:grid;width:5rem;height:5rem;place-items:center;border-radius:50%;background:var(--color-brand-100);color:var(--color-brand-800)}.empty-icon svg{width:2.25rem;height:2.25rem}.protocol-detail{align-self:start;padding:var(--space-5);border:1px solid var(--color-border);border-radius:var(--radius-lg);background:var(--color-surface);box-shadow:var(--shadow-sm)}.protocol-detail h2{margin:var(--space-2) 0 0;color:var(--color-brand-950);font-size:var(--text-2xl)}.eyebrow{color:var(--color-brand-800);font-size:var(--text-xs);font-weight:800;letter-spacing:.09em;text-transform:uppercase}.protocol-author{margin:var(--space-1) 0 var(--space-5);color:var(--color-ink-soft)}.protocol-note{padding:var(--space-4);border-left:3px solid var(--color-brand-500);border-radius:0 var(--radius-sm) var(--radius-sm) 0;background:var(--color-brand-50);white-space:pre-wrap}.recipient-note{margin:0 0 var(--space-4);padding:var(--space-4);border:1px solid var(--color-brand-200);border-radius:var(--radius-md);background:var(--color-brand-50);color:var(--color-brand-950)}.recipient-note strong{display:block;margin-bottom:var(--space-2);color:var(--color-brand-800);font-size:var(--text-sm)}.recipient-note p{margin:0;overflow-wrap:anywhere;white-space:pre-wrap}.protocol-expiry-notice{display:flex;align-items:flex-start;gap:var(--space-2);margin:var(--space-4) 0 0;padding:var(--space-3);border-radius:var(--radius-sm);background:var(--color-brand-50);color:var(--color-brand-900);font-size:var(--text-sm);font-weight:700}.protocol-expiry-notice.expired{background:var(--color-danger-soft);color:var(--color-danger)}.protocol-expiry-notice svg{width:1.1rem;flex:0 0 auto}.detail-stats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));margin:var(--space-5) 0;gap:var(--space-2)}.detail-stats div{padding:var(--space-3);border-radius:var(--radius-sm);background:#f6fafa}.detail-stats dt{color:var(--color-ink-soft);font-size:var(--text-xs)}.detail-stats dd{margin:var(--space-1) 0 0;color:var(--color-brand-950);font-weight:800}.run-button{width:100%;min-height:3.5rem;font-size:var(--text-lg)}.app-dialog{max-height:min(92dvh,52rem);padding:0}.dialog-surface{display:grid;overflow:hidden}.dialog-header{display:flex;align-items:center;justify-content:space-between;gap:var(--space-4);padding:var(--space-5) var(--space-5) var(--space-3)}.dialog-header h2{margin:0;color:var(--color-brand-950);font-size:var(--text-xl)}.dialog-body{padding:var(--space-3) var(--space-5) var(--space-5)}.stack-form,.settings-form{display:grid;gap:var(--space-4)}.supporting-copy,.field-hint{margin:0;color:var(--color-ink-soft);font-size:var(--text-sm)}.field-label{display:grid;gap:var(--space-2);font-size:var(--text-sm);font-weight:700}.field-label>input,.input-with-icon,.number-unit{border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface)}.field-label>input{width:100%;padding:.65rem .8rem}.input-with-icon{display:grid;grid-template-columns:auto minmax(0,1fr);align-items:center;padding-left:var(--space-3)}.input-with-icon:focus-within,.field-label>input:focus,.number-unit:focus-within{border-color:var(--color-brand-600);box-shadow:var(--focus-ring)}.input-with-icon svg{width:1.15rem;color:var(--color-brand-700)}.input-with-icon input{width:100%;min-width:0;border:0;outline:0;padding:.65rem .8rem;background:transparent}.read-only-field{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-3);border-radius:var(--radius-sm);background:var(--color-brand-50);color:var(--color-brand-900)}.read-only-field svg{width:1.15rem}.read-only-field span{display:grid;min-width:0}.read-only-field strong{overflow:hidden;text-overflow:ellipsis}.form-error,.inline-warning{display:flex;align-items:flex-start;gap:var(--space-2);margin:0;padding:var(--space-3);border-radius:var(--radius-sm);font-size:var(--text-sm)}.form-error{background:var(--color-danger-soft);color:var(--color-danger)}.inline-warning{background:var(--color-warning-soft);color:var(--color-warning)}.form-error svg,.inline-warning svg{width:1.1rem;flex:0 0 auto}.dialog-actions{display:flex;justify-content:flex-end;gap:var(--space-3)}.spin{animation:spin .9s linear infinite}.settings-dialog{width:min(calc(100% - 2 * var(--space-4)),40rem)}.settings-section{display:grid;gap:var(--space-3);padding-bottom:var(--space-4);border-bottom:1px solid var(--color-border)}.settings-section:last-of-type{border-bottom:0}.settings-section h3{display:flex;align-items:center;gap:var(--space-2);margin:0;color:var(--color-brand-950);font-size:var(--text-base)}.settings-section h3 svg{width:1.15rem;color:var(--color-brand-700)}.segmented-control,.device-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-2)}.segmented-control label,.device-card{position:relative;cursor:pointer}.segmented-control input,.device-card input{position:absolute;opacity:0;pointer-events:none}.segmented-control span,.device-card{display:flex;min-height:var(--touch-target);align-items:center;justify-content:center;gap:var(--space-2);border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface);color:var(--color-ink-soft);font-weight:700}.segmented-control input:checked+span,.device-card:has(input:checked){border-color:var(--color-brand-600);background:var(--color-brand-100);color:var(--color-brand-950);box-shadow:inset 0 0 0 1px var(--color-brand-600)}.device-card{flex-direction:column;padding:var(--space-4);text-align:center}.device-card svg{width:1.4rem}.switch-row{display:flex;min-height:var(--touch-target);align-items:center;justify-content:space-between;gap:var(--space-4);cursor:pointer}.switch-row>span{display:grid}.switch-row small{color:var(--color-ink-soft)}.switch-row input[role=switch]{width:3rem;height:1.75rem;flex:0 0 auto;appearance:none;border:2px solid var(--color-border);border-radius:var(--radius-pill);background:#d8e2e2;cursor:pointer;transition:background var(--transition-fast),border-color var(--transition-fast)}.switch-row input[role=switch]:before{display:block;width:1.25rem;height:1.25rem;margin:.125rem;border-radius:50%;background:#fff;box-shadow:0 1px 4px #0003;content:"";transition:transform var(--transition-fast)}.switch-row input[role=switch]:checked{border-color:var(--color-brand-700);background:var(--color-brand-700)}.switch-row input[role=switch]:checked:before{transform:translate(1.2rem)}.pulse-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--space-3)}.pulse-grid[aria-disabled=true]{opacity:.55}.number-unit{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;overflow:hidden}.number-unit input{width:100%;min-width:0;border:0;outline:0;padding:.55rem .25rem .55rem .65rem}.number-unit span{padding-right:var(--space-2);color:var(--color-ink-soft)}.checkbox-row{display:flex;min-height:var(--touch-target);align-items:center;gap:var(--space-3);cursor:pointer}.checkbox-row input{width:1.25rem;height:1.25rem;accent-color:var(--color-brand-700)}.playlists-layout{display:grid;width:min(100%,var(--content-width));margin:0 auto;padding:var(--space-4);gap:var(--space-5)}.playlist-list{display:grid;align-content:start;gap:var(--space-3)}.playlist-card{overflow:hidden;border:1px solid var(--color-border);border-radius:var(--radius-lg);background:var(--color-surface);box-shadow:var(--shadow-sm);transition:border-color var(--transition-fast),box-shadow var(--transition-fast)}.playlist-card:has(.playlist-select-button:hover),.playlist-card.selected{border-color:var(--color-brand-500);box-shadow:0 8px 24px #006e711c}.playlist-card.selected{background:linear-gradient(135deg,var(--color-surface),var(--color-brand-50));box-shadow:inset 4px 0 var(--color-brand-600),var(--shadow-sm)}.playlist-select-button{display:grid;width:100%;min-height:5.5rem;grid-template-columns:auto minmax(0,1fr);align-items:center;gap:var(--space-3);border:0;padding:var(--space-4);background:transparent;color:inherit;cursor:pointer;text-align:left}.playlist-card-icon{display:grid;width:2.75rem;height:2.75rem;place-items:center;border-radius:50%;background:var(--color-brand-100);color:var(--color-brand-800)}.playlist-card-icon svg{width:1.3rem}.playlist-card-copy{display:grid;min-width:0;gap:var(--space-2)}.playlist-card-copy>strong{overflow:hidden;color:var(--color-brand-950);font-size:var(--text-lg);text-overflow:ellipsis;white-space:nowrap}.playlist-detail{display:grid;align-self:start;gap:var(--space-4);padding:var(--space-5);border:1px solid var(--color-border);border-radius:var(--radius-lg);background:var(--color-surface);box-shadow:var(--shadow-sm)}.playlist-back-link{display:inline-flex;width:fit-content;min-height:var(--touch-target);align-items:center;gap:var(--space-2);border-radius:var(--radius-sm);padding:var(--space-2);color:var(--color-brand-800);font-weight:750;text-decoration:none}.playlist-back-link svg{width:1.15rem}.playlist-detail-heading,.playlist-detail-actions,.playlist-summary,.playlist-entry-actions{display:flex;align-items:center}.playlist-detail-heading,.playlist-summary{justify-content:space-between;gap:var(--space-3)}.playlist-detail-heading h2{margin:var(--space-1) 0 0;color:var(--color-brand-950);font-size:var(--text-2xl);overflow-wrap:anywhere}.playlist-detail-actions,.playlist-entry-actions{flex:0 0 auto;gap:var(--space-1)}.playlist-summary{flex-wrap:wrap;border-radius:var(--radius-sm);padding:var(--space-3);background:var(--color-brand-50);color:var(--color-ink-soft);font-size:var(--text-sm);font-weight:750}.playlist-add-button{width:100%}.playlist-empty-state{display:grid;min-height:12rem;place-items:center;align-content:center;gap:var(--space-2);padding:var(--space-5);border:1px dashed var(--color-brand-300);border-radius:var(--radius-md);background:var(--color-brand-50);text-align:center}.playlist-empty-state>svg{width:2rem;height:2rem;color:var(--color-brand-700)}.playlist-empty-state h3,.playlist-empty-state p{margin:0}.playlist-empty-state p{color:var(--color-ink-soft)}.playlist-entry-list{display:grid;margin:0;padding:0;gap:var(--space-2);list-style:none}.playlist-entry{display:grid;min-height:4.75rem;grid-template-columns:1.75rem var(--touch-target) minmax(0,1fr) auto;align-items:center;gap:var(--space-2);padding:var(--space-2);border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface);box-shadow:var(--shadow-sm);transition:opacity var(--transition-fast),box-shadow var(--transition-fast),transform var(--transition-fast)}.playlist-entry.unavailable{border-color:#e3bd75;background:var(--color-warning-soft)}.playlist-entry.dragging{z-index:10;opacity:.8;box-shadow:var(--shadow-lg)}.playlist-entry-index{color:var(--color-ink-soft);font-variant-numeric:tabular-nums;font-weight:800;text-align:center}.playlist-drag-handle{display:grid;min-width:var(--touch-target);min-height:var(--touch-target);place-items:center;border:0;border-radius:var(--radius-sm);background:transparent;color:var(--color-ink-soft);cursor:grab;touch-action:none}.playlist-drag-handle:active{cursor:grabbing}.playlist-drag-handle svg{width:1.25rem}.playlist-entry-copy{display:grid;min-width:0;gap:.15rem}.playlist-entry-copy strong,.playlist-entry-copy small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.playlist-entry-copy strong{color:var(--color-brand-950)}.playlist-entry-copy small{color:var(--color-ink-soft)}.playlist-entry-policy{display:inline-flex;align-items:center;gap:var(--space-1);color:var(--color-warning);font-size:var(--text-xs);font-weight:800}.playlist-entry-policy svg{width:.95rem;height:.95rem}.playlist-blocked-notice{display:grid;gap:var(--space-1);padding:var(--space-3);border-radius:var(--radius-sm);background:var(--color-warning-soft);color:var(--color-warning);font-size:var(--text-sm)}.playlist-name-dialog,.add-protocols-dialog{width:min(calc(100% - 2 * var(--space-4)),38rem)}.playlist-picker{display:grid;min-height:0;gap:var(--space-4)}.playlist-picker-list{display:grid;max-height:min(48dvh,26rem);overflow-y:auto;margin:0;border:1px solid var(--color-border);border-radius:var(--radius-md);padding:0}.playlist-picker-row{display:grid;min-height:4rem;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:var(--space-3);padding:var(--space-3);border-bottom:1px solid var(--color-border);cursor:pointer}.playlist-picker-row:last-child{border-bottom:0}.playlist-picker-row:has(input:checked){background:var(--color-brand-50)}.playlist-picker-row.expired{background:var(--color-warning-soft)}.playlist-picker-row input{width:1.25rem;height:1.25rem;accent-color:var(--color-brand-700)}.playlist-picker-row>span:nth-of-type(1){display:grid;min-width:0;gap:var(--space-1)}.playlist-picker-row strong,.playlist-picker-row small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.playlist-picker-row small,.playlist-selected-count,.playlist-picker-empty{color:var(--color-ink-soft);font-size:var(--text-sm)}.playlist-selected-count,.playlist-picker-empty{margin:0}.player-top-bar{display:grid;grid-template-columns:auto minmax(0,1fr) auto}.player-top-bar>div{min-width:0;text-align:center}.player-top-bar h1{overflow:hidden;margin-top:.15rem;text-overflow:ellipsis;white-space:nowrap}.player-content{display:grid;width:min(100%,60rem);margin-inline:auto;gap:var(--space-5);padding:var(--space-4)}.playback-panel{display:grid;gap:var(--space-4);padding:var(--space-5);border:1px solid var(--color-brand-200);border-radius:var(--radius-lg);background:linear-gradient(145deg,white,var(--color-brand-50));box-shadow:var(--shadow-sm)}.playback-summary{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:var(--space-2)}.queue-current-protocol{display:grid;gap:.15rem;text-align:center}.queue-current-protocol span,.queue-progress span:first-child{color:var(--color-ink-soft);font-size:var(--text-sm);font-weight:700}.queue-current-protocol strong{overflow:hidden;color:var(--color-brand-950);font-size:var(--text-lg);text-overflow:ellipsis;white-space:nowrap}.queue-progress{display:grid;gap:var(--space-2);padding-top:var(--space-2);border-top:1px solid var(--color-brand-200)}.queue-progress>div{display:flex;justify-content:space-between;gap:var(--space-3);font-variant-numeric:tabular-nums}.queue-progress>div span:last-child{color:var(--color-brand-950);font-size:var(--text-sm);font-weight:800}.queue-navigation{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-3)}.queue-navigation button{width:100%}.status-pill,.device-pill{display:inline-flex;min-height:2rem;align-items:center;gap:var(--space-2);border-radius:var(--radius-pill);padding:var(--space-1) var(--space-3);background:var(--color-surface);color:var(--color-ink-soft);font-size:var(--text-sm);font-weight:700}.status-dot{width:.55rem;height:.55rem;border-radius:50%;background:#94a7a8}.status-pill.playing{color:var(--color-success)}.status-pill.playing .status-dot{background:#20a36f;box-shadow:0 0 #20a36f73;animation:signal-pulse 1.8s ease-out infinite}.status-pill.paused .status-dot,.status-pill.interrupted .status-dot{background:#d9871b}.status-pill.error .status-dot{background:var(--color-danger)}.status-pill.expired{color:var(--color-danger)}.status-pill.expired .status-dot{background:var(--color-danger)}.device-pill svg{width:1rem;color:var(--color-brand-700)}.time-display{display:flex;align-items:baseline;justify-content:center;gap:var(--space-2);font-variant-numeric:tabular-nums}.time-display strong{color:var(--color-brand-950);font-size:clamp(2rem,10vw,3.5rem);letter-spacing:-.04em}.time-display span{color:var(--color-ink-soft);font-size:var(--text-lg)}.playback-panel progress{width:100%;height:.65rem;overflow:hidden;appearance:none;border:0;border-radius:var(--radius-pill);background:var(--color-brand-100)}.playback-panel progress::-webkit-progress-bar{border-radius:var(--radius-pill);background:var(--color-brand-100)}.playback-panel progress::-webkit-progress-value,.playback-panel progress::-moz-progress-bar{border-radius:var(--radius-pill);background:linear-gradient(90deg,var(--color-brand-600),var(--color-brand-800))}.boost-indicator{justify-self:center;margin:-.35rem 0 0;border-radius:var(--radius-pill);padding:.2rem var(--space-3);background:var(--color-warning-soft);color:var(--color-warning);font-size:var(--text-xs);font-weight:800}.playback-button{width:min(100%,24rem);min-height:4rem;justify-self:center;border-radius:var(--radius-lg);font-size:var(--text-xl)}.frequency-list{display:grid;gap:var(--space-5);scroll-margin-block:8rem}.pair-section{overflow:hidden;border:1px solid var(--color-border);border-radius:var(--radius-lg);background:var(--color-surface);box-shadow:var(--shadow-sm)}.pair-section>header{display:flex;align-items:center;justify-content:space-between;padding:var(--space-3) var(--space-4);background:var(--color-brand-50);color:var(--color-brand-950);font-weight:800}.pair-section>header small{color:var(--color-ink-soft);font-weight:600}.pair-section ol{margin:0;padding:0;list-style:none}.pair-section li{display:grid;min-height:4rem;grid-template-columns:2rem minmax(0,1fr) 2rem auto;align-items:center;gap:var(--space-2);padding:var(--space-3) var(--space-4);border-top:1px solid #e3eeee;scroll-margin-block:8rem;transition:background var(--transition-fast),box-shadow var(--transition-fast)}.pair-section li:first-child{border-top:0}.pair-section li.active-segment{background:linear-gradient(90deg,var(--color-brand-100),#f7fefe);box-shadow:inset 4px 0 var(--color-brand-700)}.segment-index{color:var(--color-ink-soft);font-variant-numeric:tabular-nums;font-weight:700}.frequency-sequence{display:flex;min-width:0;flex-wrap:wrap;align-items:baseline;color:var(--color-brand-950);font-size:clamp(1rem,4.7vw,1.35rem);font-variant-numeric:tabular-nums;font-weight:800;line-height:1.4}.hidden-frequency-segment{grid-column:1 / 3;color:var(--color-brand-950);font-size:clamp(1rem,4.7vw,1.35rem);font-weight:800;line-height:1.4}.frequency-sequence>span{border-radius:.3rem;transition:background var(--transition-fast),color var(--transition-fast)}.frequency-sequence>.active-frequency{background:var(--color-brand-700);color:#fff;box-shadow:0 0 0 .2rem var(--color-brand-700)}.segment-polarity{color:var(--color-brand-800);font-size:var(--text-xl);font-weight:900;text-align:center}.segment-duration{color:var(--color-ink-soft);font-variant-numeric:tabular-nums;font-weight:700}.about-content{display:grid;width:min(100% - 2 * var(--space-4),var(--reading-width));margin-inline:auto;padding-block:var(--space-6) var(--space-10);gap:var(--space-4)}.about-hero{display:grid;justify-items:center;padding:var(--space-6) var(--space-4);text-align:center}.about-hero img{width:min(42vw,11rem);margin-bottom:var(--space-4)}.about-hero h2{margin:var(--space-2) 0;color:var(--color-brand-950);font-size:clamp(2rem,9vw,3.25rem);letter-spacing:-.04em}.about-hero p{max-width:36rem;color:var(--color-ink-soft);font-size:var(--text-lg)}.about-card{display:grid;grid-template-columns:auto minmax(0,1fr);gap:var(--space-4);padding:var(--space-5);border:1px solid var(--color-border);border-radius:var(--radius-lg);background:var(--color-surface);box-shadow:var(--shadow-sm)}.about-card>svg{width:1.5rem;color:var(--color-brand-700)}.about-card h3{margin-bottom:var(--space-2)}.about-card p{margin:0;color:var(--color-ink-soft)}.warning-card{border-color:#e3bd75;background:var(--color-warning-soft)}.warning-card>svg{color:var(--color-warning)}.warning-card h3{color:var(--color-warning)}.warning-card ul{margin:var(--space-3) 0;padding-left:var(--space-6)}.warning-card li+li{margin-top:var(--space-2)}.manufacturer-links{display:flex;flex-wrap:wrap;gap:var(--space-3);margin-top:var(--space-4)}.manufacturer-links a{display:inline-flex;min-height:var(--touch-target);align-items:center;gap:var(--space-2);border-radius:var(--radius-sm);padding:var(--space-2) var(--space-3);background:var(--color-brand-50);font-weight:700}.manufacturer-links svg{width:1rem}.version-label{color:var(--color-ink-soft);font-size:var(--text-sm);text-align:center}.splash-screen,.fatal-screen{display:grid;min-height:100dvh;place-items:center;align-content:center;gap:var(--space-3);padding:var(--space-6);background:radial-gradient(circle,var(--color-brand-100),var(--color-canvas) 55%);text-align:center}.splash-screen h1,.fatal-screen h1{margin:0;color:var(--color-brand-950)}.loading-line{width:8rem;height:.3rem;overflow:hidden;border-radius:var(--radius-pill);background:var(--color-brand-200)}.loading-line:after{display:block;width:45%;height:100%;border-radius:inherit;background:var(--color-brand-700);content:"";animation:loading 1.1s ease-in-out infinite alternate}.fatal-screen>svg{width:3rem;height:3rem;color:var(--color-danger)}.toast,.update-banner,.pwa-status-banner{position:fixed;z-index:80;right:var(--space-4);bottom:calc(5.75rem + env(safe-area-inset-bottom));left:var(--space-4);display:flex;width:min(calc(100% - 2 * var(--space-4)),32rem);min-height:var(--touch-target);align-items:center;justify-content:space-between;gap:var(--space-3);margin-left:auto;padding:var(--space-3) var(--space-4);border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-brand-950);color:#fff;box-shadow:var(--shadow-lg)}.toast.success{background:var(--color-success)}.toast.error{background:var(--color-danger)}.toast button,.update-banner button,.pwa-status-banner button{min-height:var(--touch-target);border:0;background:transparent;color:inherit;cursor:pointer;font-weight:800}.toast button{min-width:var(--touch-target);padding:var(--space-2)}.toast svg,.update-banner svg,.pwa-status-banner>svg,.pwa-status-banner .icon-button svg{width:1rem}.update-banner{bottom:var(--space-4);background:var(--color-brand-950)}.pwa-status-banner{border-color:transparent;background:var(--color-brand-950)}.pwa-status-banner.preparing,.pwa-status-banner.ready{background:var(--color-brand-800)}.pwa-status-banner.error{background:var(--color-danger)}.pwa-status-banner>svg{flex:0 0 auto;width:1.25rem;height:1.25rem}.pwa-status-banner>span{flex:1}.pwa-status-actions{display:flex;flex:0 0 auto;align-items:center;gap:var(--space-1)}.pwa-status-banner .icon-button{display:inline-grid;min-width:var(--touch-target);place-items:center;padding:var(--space-2)}.pwa-status-spinner{animation:pwa-status-pulse 1.2s ease-in-out infinite alternate}.pwa-diagnostic-card>div{min-width:0;flex:1}.pwa-diagnostics{display:grid;gap:var(--space-2);margin:var(--space-3) 0 0}.pwa-diagnostics>div{display:flex;align-items:baseline;justify-content:space-between;gap:var(--space-3);padding-block:var(--space-2);border-bottom:1px solid var(--color-border)}.pwa-diagnostics dt{color:var(--color-ink-soft)}.pwa-diagnostics dd{margin:0;font-weight:800;text-align:right}.pwa-diagnostics .diagnostic-value.ready{color:var(--color-success)}.pwa-diagnostics .diagnostic-value.error{color:var(--color-danger)}.about-card .pwa-first-launch-note{margin-top:var(--space-3);color:var(--color-ink-soft);font-size:var(--text-sm)}@keyframes pwa-status-pulse{0%{opacity:.45}to{opacity:1}}@media(min-width:48rem){.top-bar{padding-inline:max(var(--space-6),calc((100vw - var(--content-width)) / 2))}.protocols-layout.has-selection{grid-template-columns:minmax(20rem,1.05fr) minmax(19rem,.95fr);align-items:start;padding:var(--space-6)}.protocol-detail{position:sticky;top:6.25rem}.playlists-layout.has-selection{grid-template-columns:minmax(19rem,.9fr) minmax(25rem,1.1fr);align-items:start;padding:var(--space-6)}.playlist-detail{position:sticky;top:6.25rem}.playlist-back-link{display:none}.bottom-nav{right:var(--space-6);bottom:var(--space-5);left:50%;width:min(26rem,calc(100% - 2 * var(--space-6)));transform:translate(-50%);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:var(--space-2);box-shadow:var(--shadow-lg)}.app-page.with-bottom-nav{padding-bottom:7rem}.player-content{grid-template-columns:minmax(18rem,.75fr) minmax(26rem,1.25fr);align-items:start;padding:var(--space-6)}.playback-panel{position:sticky;top:6.25rem}.toast{right:var(--space-5);bottom:var(--space-5);left:auto}}@media(max-width:47.999rem){.playlists-layout.has-selection .playlist-list{display:none}}@media(max-width:35rem){.import-button span{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0)}.import-button{padding:var(--space-2)}.detail-stats,.pulse-grid{grid-template-columns:1fr}.dialog-actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr))}.dialog-actions button{width:100%}.playlist-entry{grid-template-columns:1.5rem var(--touch-target) minmax(0,1fr)}.playlist-entry-actions{grid-column:2 / -1;justify-content:flex-end}.playlist-picker-row{grid-template-columns:auto minmax(0,1fr)}.playlist-picker-row>.playlist-entry-policy{grid-column:2}}@keyframes spin{to{transform:rotate(360deg)}}@keyframes loading{0%{transform:translate(-20%)}to{transform:translate(145%)}}@keyframes signal-pulse{60%{box-shadow:0 0 0 .45rem #20a36f00}to{box-shadow:0 0 #20a36f00}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important;animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}
