/* CamBrain Solo — values from references/source-map.md; browser mappings are documented. */
@import url('./tokens.css');
@font-face{font-family:'Space Mono';src:url('./fonts/SpaceMono-Regular.woff2') format('woff2');font-weight:400;font-display:swap}
@font-face{font-family:'Space Mono';src:url('./fonts/SpaceMono-Bold.woff2') format('woff2');font-weight:700;font-display:swap}
@font-face{font-family:Pretendard;src:url('./fonts/Pretendard-Regular.woff2') format('woff2');font-weight:400;font-display:swap}
@font-face{font-family:Pretendard;src:url('./fonts/Pretendard-Medium.woff2') format('woff2');font-weight:500;font-display:swap}
@font-face{font-family:Pretendard;src:url('./fonts/Pretendard-SemiBold.woff2') format('woff2');font-weight:600;font-display:swap}
@font-face{font-family:Pretendard;src:url('./fonts/Pretendard-Bold.woff2') format('woff2');font-weight:700;font-display:swap}
@font-face{font-family:Caveat;src:url('./fonts/Caveat-Variable.ttf') format('truetype');font-weight:400 700;font-display:swap}
@font-face{font-family:Oxanium;src:url('./fonts/Oxanium-SemiBold.ttf') format('truetype');font-weight:600;font-display:swap}
@font-face{font-family:Sixtyfour;src:url('./fonts/Sixtyfour-Variable.ttf') format('truetype');font-weight:400;font-display:swap}
@font-face{font-family:'IBM Plex Sans KR';src:url('./fonts/IBMPlexSansKR-SemiBold.ttf') format('truetype');font-weight:600;font-display:swap}
@font-face{font-family:'KCC Imkwontaek';src:url('./fonts/KCC-Imkwontaek.otf') format('opentype');font-weight:400;font-display:swap}
:root{--cb-font-system:'Space Mono',Pretendard,monospace;--cb-font-body:Pretendard,sans-serif;--cb-operational-radius:4px;--cb-outer-inset:16px;--cb-section-gap:14px;--cb-toolbar-height:36px;--cb-ease-in-out:cubic-bezier(.42,0,.58,1);--cb-ease-out:cubic-bezier(0,0,.58,1)}
.cb-root{color-scheme:dark;background:var(--cb-background);color:var(--cb-text-primary);font:400 14px/1.5 var(--cb-font-body);font-synthesis:none}
.cb-root *{box-sizing:border-box}
.cb-root button,.cb-root input,.cb-root select{font:inherit}
.cb-sr-only{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}
.cb-mono{font-family:var(--cb-font-system)}
.cb-control-header{font:400 12px/1.5 var(--cb-font-system);letter-spacing:3px;color:var(--cb-text-tertiary)}
.cb-caption{font:400 11px/1.5 var(--cb-font-system);color:var(--cb-text-secondary)}
.cb-performance-number{font:600 28px/1.2 Oxanium,sans-serif;font-variant-numeric:tabular-nums}
.cb-body-semibold{font:500 14px/1.5 var(--cb-font-body)} /* Source token bodySemiBold is Pretendard-Medium. */
.cb-body-medium{font:400 14px/1.5 var(--cb-font-body)} /* Source token bodyMedium is Regular. */
.cb-card{padding:var(--cb-card-padding);border-radius:var(--cb-card-radius);background:var(--cb-surface);box-shadow:0 6px 12px rgb(0 0 0 / .5)}
.cb-button{display:inline-flex;align-items:center;justify-content:center;gap:8px;border:0;border-radius:var(--cb-button-radius);padding:var(--cb-button-padding-v) var(--cb-button-padding-h);font:400 12px/1.5 var(--cb-font-system)!important;letter-spacing:1.5px;background:var(--cb-accent);color:var(--cb-background);box-shadow:0 0 8px color-mix(in srgb,var(--cb-accent) 20%,transparent);cursor:pointer}
.cb-button--ghost{background:var(--cb-surface-light);color:var(--cb-text-secondary);box-shadow:none}
.cb-button:disabled{opacity:.45;cursor:default}
.cb-root :focus-visible{outline:2px solid var(--cb-accent);outline-offset:3px} /* Web keyboard adaptation, not a Swift token. */
.cb-input{display:block;width:100%;padding:var(--cb-input-padding-v) var(--cb-input-padding-h);border:1px solid var(--cb-input-border);border-radius:var(--cb-input-radius);background:var(--cb-input-bg);color:var(--cb-text-primary);font:400 14px/1.5 var(--cb-font-body)!important;letter-spacing:.5px}
.cb-input:focus{border-color:var(--cb-focus-color)}
.cb-input::placeholder{color:var(--cb-text-tertiary)}
.cb-toolbar{height:36px;min-height:36px;display:flex;align-items:center;gap:8px;border-bottom:1px solid var(--cb-divider);padding:0 12px;background:var(--cb-background)}
.cb-toolbar-icon{display:inline-grid;place-items:center;width:28px;height:28px;flex:0 0 28px;border:0;background:transparent;color:var(--cb-text-tertiary);font-size:13px!important;cursor:pointer}
.cb-toolbar-icon[aria-pressed=true]{color:var(--cb-accent)}
.cb-toolbar-icon:disabled{color:var(--cb-text-muted);opacity:.45}
.cb-operational{position:relative;isolation:isolate;border-radius:4px;padding:8px;background:linear-gradient(135deg,color-mix(in srgb,var(--cb-surface-light) 61.36%,transparent),color-mix(in srgb,var(--cb-surface) 74%,transparent),color-mix(in srgb,var(--cb-background) 78%,transparent))}
.cb-operational::before{content:'';position:absolute;inset:0;border-radius:inherit;z-index:-1;pointer-events:none;background:radial-gradient(circle 260px at bottom right,color-mix(in srgb,var(--cb-tint) 10.92%,transparent) 10px,transparent),radial-gradient(circle 220px at top left,rgb(255 255 255 / .078) 6px,transparent),linear-gradient(135deg,rgb(255 255 255 / .0858),transparent,color-mix(in srgb,var(--cb-tint) 5.46%,transparent));background-blend-mode:normal,normal,screen}
.cb-operational::after{content:'';position:absolute;inset:0;border-radius:inherit;padding:1px;pointer-events:none;background:linear-gradient(135deg,rgb(255 255 255 / .0936),color-mix(in srgb,var(--cb-tint) 15.84%,transparent),color-mix(in srgb,var(--cb-input-border) 78%,transparent));mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);mask-composite:exclude}
.cb-divider{height:1px;border:0;background:linear-gradient(90deg,color-mix(in srgb,var(--cb-input-border) 18%,transparent),color-mix(in srgb,var(--cb-accent) 32%,transparent),color-mix(in srgb,var(--cb-input-border) 18%,transparent))}
.cb-page-header{position:relative;min-width:0;height:280px;margin:16px 16px 0;padding:24px;border-radius:4px;overflow:hidden;background:linear-gradient(180deg,color-mix(in srgb,var(--cb-background) 8%,transparent),color-mix(in srgb,var(--cb-background) 2%,transparent),color-mix(in srgb,var(--cb-background) 42%,transparent)),linear-gradient(135deg,color-mix(in srgb,var(--cb-accent-dark) 16%,transparent),color-mix(in srgb,var(--cb-surface) 12%,transparent),color-mix(in srgb,var(--cb-background) 18%,transparent),color-mix(in srgb,var(--cb-info) 14%,transparent)),radial-gradient(circle 980px at 118% 50%,color-mix(in srgb,var(--cb-info) 22%,transparent),color-mix(in srgb,var(--cb-info) 7%,transparent),transparent),radial-gradient(circle 920px at -22% 40%,color-mix(in srgb,var(--cb-accent-dark) 24%,transparent),color-mix(in srgb,var(--cb-accent) 7%,transparent),transparent),var(--cb-background)}
.cb-decode{--cb-title-size:36px;--cb-effective-size:var(--cb-title-size);--cb-title-tracking:0px;--cb-title-color:var(--cb-text-bright);--cb-cursor-width:3px;--cb-cursor-gap:7px;--cb-cursor-y:5px;--cb-marker-width:26px;--cb-marker-gap:12px;--cb-title-glow:0 0 0 transparent;--cb-edge-opacity:0;--cb-edge-x:1.2px;--cb-edge-blur:0px;display:inline-flex;align-items:baseline;max-width:100%;font:700 var(--cb-effective-size)/1.4 var(--cb-font-system);letter-spacing:var(--cb-title-tracking);color:var(--cb-title-color);white-space:nowrap;vertical-align:baseline}
.cb-decode[data-cb-hangul=true]{--cb-effective-size:calc(var(--cb-title-size) * .89)}
.cb-decode[data-cb-hangul=true] .cb-decode-text{transform:translateY(1px)}
.cb-decode--operational{--cb-title-tracking:1.44px;--cb-title-color:var(--cb-pulse-title);--cb-title-glow:0 0 14px color-mix(in srgb,var(--cb-accent) 34%,transparent);--cb-edge-opacity:.28;--cb-edge-x:1.4px;--cb-edge-blur:.2px}
.cb-decode--compact{--cb-title-glow:0 0 9px color-mix(in srgb,var(--cb-accent) 22%,transparent);--cb-edge-opacity:.2;--cb-edge-x:1px;--cb-marker-width:16px;--cb-marker-gap:9px;--cb-cursor-width:2px;--cb-cursor-gap:5px;--cb-cursor-y:3px}
.cb-decode-text{display:inline-grid;min-width:0;position:relative;overflow:clip}
.cb-decode-reserve{visibility:hidden;grid-area:1/1}
.cb-decode-live,.cb-decode-edge{position:absolute;inset:0;overflow:hidden;text-overflow:clip;text-shadow:var(--cb-title-glow)}
.cb-decode-edge{z-index:-1;opacity:var(--cb-edge-opacity);color:var(--cb-accent);transform:translateX(var(--cb-edge-x));filter:blur(var(--cb-edge-blur));text-shadow:none}
.cb-marker{display:inline-flex;align-self:center;align-items:center;gap:6px;flex-shrink:0;transform:translateY(1px);margin-right:var(--cb-marker-gap);opacity:.9;filter:drop-shadow(0 0 8px color-mix(in srgb,var(--cb-accent) 32%,transparent))}
.cb-marker::before{content:'';width:var(--cb-marker-width);height:2px;background:var(--cb-accent)}
.cb-marker::after{content:'';width:5px;height:5px;background:var(--cb-accent)}
.cb-cursor{display:inline-block;flex-shrink:0;width:var(--cb-cursor-width);height:max(12px,calc(var(--cb-effective-size) * .94));margin-left:var(--cb-cursor-gap);transform:translateY(var(--cb-cursor-y));background:var(--cb-accent);opacity:.78;box-shadow:0 0 8px color-mix(in srgb,var(--cb-accent) 58%,transparent)}
.cb-launcher{position:relative;display:block;text-align:left;width:100%;padding:16px;background:var(--cb-surface);color:var(--cb-text-primary);border:1px solid color-mix(in srgb,var(--cb-accent) 24%,transparent);border-radius:4px;cursor:pointer;transition:border-color .14s var(--cb-ease-out),box-shadow .14s var(--cb-ease-out)}
.cb-launcher-title{--cb-title-size:19px;--cb-title-color:var(--cb-text-bright);transition:color .14s var(--cb-ease-out)}
.cb-launcher-kicker{display:block;color:var(--cb-accent);font-family:var(--cb-font-system);margin-bottom:6px;transition:color .14s var(--cb-ease-out)}
.cb-launcher-description{display:block;color:var(--cb-text-secondary);font:500 9.9px/1.5 var(--cb-font-body);margin-top:5px;transition:color .14s var(--cb-ease-out)}
.cb-launcher:is(:hover,:focus-visible){border-color:color-mix(in srgb,var(--cb-accent) 82%,transparent);box-shadow:0 0 6px color-mix(in srgb,var(--cb-accent) 30%,transparent),0 0 12px color-mix(in srgb,var(--cb-accent) 14%,transparent)}
.cb-launcher:is(:hover,:focus-visible) .cb-launcher-title{--cb-title-color:var(--cb-accent);--cb-title-glow:0 0 10px color-mix(in srgb,var(--cb-accent) 22%,transparent)}
.cb-launcher:is(:hover,:focus-visible) .cb-launcher-kicker{color:color-mix(in srgb,var(--cb-text-bright) 92%,transparent)}
.cb-launcher:is(:hover,:focus-visible) .cb-launcher-description{color:color-mix(in srgb,var(--cb-text-bright) 82%,transparent)}
.cb-node{position:relative;isolation:isolate;display:flex;align-items:center;gap:8px;min-height:43px;padding:0 9px;border:1px solid color-mix(in srgb,var(--cb-tint) 50%,transparent);border-radius:6px;background:color-mix(in srgb,var(--cb-surface) 68%,transparent);color:var(--cb-text-primary)}
.cb-node-name{font:700 10.2px/1.4 var(--cb-font-body);overflow:hidden;white-space:nowrap;text-overflow:ellipsis}
.cb-node-detail{font:400 7.4px/1.4 var(--cb-font-system);letter-spacing:.35px;color:var(--cb-text-tertiary)}
.cb-status-dot{display:inline-block;width:5px;height:5px;flex-shrink:0;border-radius:50%;background:var(--cb-success);margin-left:auto}
.cb-node[data-kind=local]{--cb-tint:var(--cb-accent)}
.cb-node[data-kind=card]{--cb-tint:var(--cb-info)}
.cb-node[data-kind=external]{--cb-tint:var(--cb-clone-sync-destination3)}
.cb-node[data-kind=network]{--cb-tint:var(--cb-storage-network)}
.cb-signal-svg{position:absolute;inset:0;width:100%;height:100%;overflow:visible;pointer-events:none;color:var(--cb-tint)}
.cb-signal-svg *{pointer-events:none}
.cb-gaffer{position:relative;display:grid;place-items:center;width:320px;max-width:100%;height:72px;overflow:hidden;background:url('./images/gaffer-tape.png') center/cover no-repeat;color:var(--cb-accent);font:600 30px/1 Caveat;white-space:nowrap}
.cb-gaffer[data-role=decorative]{font-weight:400}.cb-gaffer[data-role=label]{font-weight:500}.cb-gaffer[data-role=sectionTitle]{font-weight:600}.cb-gaffer[data-role=heroAction]{font-weight:700}
.cb-korean-gaffer{font-family:'KCC Imkwontaek';font-weight:400;font-synthesis:none}
@media(prefers-reduced-motion:reduce){.cb-root *, .cb-root *::before,.cb-root *::after{transition:none!important}}
[data-cb-motion=off] .cb-launcher,[data-cb-motion=off] .cb-launcher *{transition:none!important}
.cb-cursor[hidden]{display:none}
