:root{color-scheme:light dark;--bg: #fafafa;--surface: #fff;--text: #1c1c1e;--muted: #6b6b70;--border: #e2e2e6;--accent: #3b6df0;--danger: #c62828}@media(prefers-color-scheme:dark){:root{--bg: #131316;--surface: #1c1c20;--text: #ececf0;--muted: #9a9aa2;--border: #2e2e34;--accent: #7c9cff;--danger: #ef6b6b}}*{box-sizing:border-box}body{margin:0;font:15px/1.45 system-ui,sans-serif;background:var(--bg);color:var(--text)}button{font:inherit;padding:6px 14px;border:0;border-radius:6px;background:var(--accent);color:#fff;cursor:pointer}button:disabled{opacity:.6;cursor:default}button.link{padding:0;background:none;color:var(--accent)}.muted{color:var(--muted)}.error{color:var(--danger)}.login{max-width:340px;margin:12vh auto;padding:24px;display:flex;flex-direction:column;gap:14px;background:var(--surface);border:1px solid var(--border);border-radius:10px}.login h1{margin:0}.login label{display:flex;flex-direction:column;gap:4px}input{font:inherit;padding:8px;border:1px solid var(--border);border-radius:6px;background:var(--bg);color:var(--text)}.topbar{display:flex;align-items:center;gap:16px;padding:10px 20px;background:var(--surface);border-bottom:1px solid var(--border)}.brand{display:inline-flex;align-items:center;gap:8px}.brand img{display:block}.user-menu{position:relative;margin-left:auto}button.user-menu-trigger{display:inline-flex;align-items:center;gap:6px;background:none;color:var(--muted)}button.user-menu-trigger:hover,button.user-menu-trigger[aria-expanded=true]{background:color-mix(in srgb,var(--accent) 12%,transparent)}.user-menu-list{position:absolute;right:0;top:calc(100% + 6px);z-index:10;min-width:210px;display:flex;flex-direction:column;padding:4px;background:var(--surface);border:1px solid var(--border);border-radius:8px;box-shadow:0 6px 24px #0000002e}.user-menu-list button{display:flex;align-items:center;gap:10px;justify-content:flex-start;background:none;color:var(--text);text-align:left}.user-menu-list button:hover{background:color-mix(in srgb,var(--accent) 12%,transparent)}.explorer{padding:16px 20px}.crumbs{display:flex;flex-wrap:wrap;align-items:center;gap:4px;margin-bottom:12px}.toolbar{margin-left:auto;display:flex;align-items:center;gap:14px}.split{display:flex;gap:20px;align-items:flex-start}.listing{flex:1;width:100%;min-width:0;background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:4px 12px}table{width:100%;border-collapse:collapse}th,td{text-align:left;padding:8px 6px;border-bottom:1px solid var(--border)}tr:last-child td{border-bottom:0}th{color:var(--muted);font-weight:500}.num{text-align:right;white-space:nowrap}.row{cursor:pointer}.row:hover,.row.selected{background:color-mix(in srgb,var(--accent) 10%,transparent)}.badge{margin-left:8px;padding:1px 7px;border-radius:10px;font-size:12px;background:color-mix(in srgb,var(--accent) 18%,transparent);color:var(--accent)}.details{position:sticky;top:16px;max-height:calc(100vh - 32px);overflow-y:auto;width:clamp(360px,36vw,640px);flex-shrink:0;padding:14px 16px;background:var(--surface);border:1px solid var(--border);border-radius:10px}.details-head{display:flex;justify-content:space-between;gap:12px}.details h2{margin:0;font-size:17px;word-break:break-all}.path{word-break:break-all;font-size:13px}dl{display:grid;grid-template-columns:auto 1fr;gap:4px 12px}dt{color:var(--muted)}dd{margin:0}.versions{list-style:none;margin:0;padding:0}.versions li{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:6px 0;border-bottom:1px solid var(--border)}@media(max-width:800px){.split{flex-direction:column;align-items:stretch}.details{top:auto;bottom:0;width:100%;max-height:55vh}}.tabs{display:flex;gap:4px}button.tab{background:none;color:var(--muted)}button.tab.active{background:color-mix(in srgb,var(--accent) 14%,transparent);color:var(--accent)}.conflicts{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:12px}.conflict{padding:12px 16px;background:var(--surface);border:1px solid var(--border);border-radius:10px}.conflict p{margin:6px 0}.conflict-name{font-weight:600;word-break:break-all}.actions{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:10px 0}button.danger{background:var(--danger)}.uploads{list-style:none;margin:0 0 12px;padding:8px 12px;background:var(--surface);border:1px solid var(--border);border-radius:10px}.uploads li{display:flex;justify-content:space-between;gap:12px;padding:3px 0}.row-actions{text-align:right;white-space:nowrap}button.icon-button{display:inline-flex;align-items:center;padding:4px;background:none;color:var(--muted)}button.icon-button:hover:not(:disabled){background:color-mix(in srgb,var(--accent) 12%,transparent);color:var(--accent)}button.icon-button.danger-text:hover:not(:disabled){background:color-mix(in srgb,var(--danger) 14%,transparent);color:var(--danger)}.back{padding:12px 20px 0}.emulators{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:12px}button.emulator{width:100%;display:flex;align-items:center;gap:12px;padding:12px 14px;background:var(--surface);color:var(--text);border:1px solid var(--border);border-radius:10px;text-align:left}button.emulator:hover{border-color:var(--accent)}button.emulator img{object-fit:contain}.back{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}.versions li>span{display:inline-flex;align-items:center;gap:8px}.versions li>span:last-child{flex-shrink:0;white-space:nowrap}.versions .badge{margin-left:0}.icon-slot{display:inline-block;width:26px;height:26px}.selected-files{list-style:none;margin:12px 0 0;padding:0;max-height:40vh;overflow-y:auto;font-size:13px;color:var(--muted)}.selected-files li{padding:3px 0;word-break:break-all}.summary{margin:0 0 12px}.emulator-text{display:flex;flex-direction:column;min-width:0}.emulator-meta{font-size:13px}dialog.clear-dialog{max-width:460px;width:calc(100% - 32px);padding:20px 22px;background:var(--surface);color:var(--text);border:2px solid var(--danger);border-radius:12px}dialog.clear-dialog::backdrop{background:#0009}.clear-dialog h2{margin:0 0 10px;font-size:18px;color:var(--danger)}.clear-dialog .warning{margin:0 0 8px}.clear-dialog ul{margin:0 0 14px;padding-left:20px}.clear-dialog label{display:flex;flex-direction:column;gap:6px}.clear-dialog code{overflow-wrap:anywhere}.devices{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(min(360px,100%),1fr));gap:12px}.device{width:100%;display:flex;align-items:flex-start;gap:12px;padding:14px;background:var(--surface);color:var(--text);border:1px solid var(--border);border-radius:10px;text-align:left}button.device:hover{border-color:var(--accent)}.device.stale,.device.offline{color:var(--muted)}.device-text{display:flex;flex-direction:column;gap:2px;min-width:0}.device-name{display:flex;align-items:center;gap:8px;font-weight:600}.device-meta{font-size:13px}.dot{display:inline-block;width:9px;height:9px;border-radius:50%;background:var(--muted)}.dot.online,.dot.on{background:#3fb950}.device-detail h2{display:flex;align-items:center;gap:10px;margin:0 0 8px}.panel{margin:14px 0;padding:4px 16px 12px;background:var(--surface);border:1px solid var(--border);border-radius:10px}.panel h3{margin:12px 0 8px}.device-emulators{list-style:none;margin:0;padding:0}.device-emulators li{padding:10px 0;border-bottom:1px solid var(--border)}.device-emulators li:last-child{border-bottom:0}.device-emulator-head{display:flex;align-items:center;flex-wrap:wrap;gap:8px}.badge.off{background:color-mix(in srgb,var(--muted) 20%,transparent);color:var(--muted)}.chips{display:flex;flex-wrap:wrap;gap:6px;margin:8px 0 4px}.chip{padding:1px 9px;border-radius:10px;font-size:12px;border:1px solid var(--border);color:var(--muted)}.chip.configured,.chip.saf{color:var(--accent);border-color:color-mix(in srgb,var(--accent) 40%,transparent);background:color-mix(in srgb,var(--accent) 10%,transparent)}.patterns{margin:6px 0 2px;font-size:13px}.patterns summary{color:var(--muted);cursor:pointer;width:fit-content}.pattern-group{margin:8px 0 0 14px}.pattern-group h4{margin:0 0 4px;font-size:12px;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--muted)}.pattern-group ul{list-style:none;margin:0;padding:0;border:1px solid var(--border);border-radius:6px;background:var(--bg)}.pattern-group li{padding:3px 10px;border-bottom:1px solid var(--border)}.pattern-group li:last-child{border-bottom:0}.pattern-group li.comment{color:var(--muted);font-style:italic}.pattern-group code{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12.5px;overflow-wrap:anywhere}.device-emulators li.disabled strong,.device-emulators li.disabled .chips{opacity:.55}.form{display:flex;flex-direction:column;gap:12px;padding-bottom:6px}.field{display:flex;flex-direction:column;gap:4px;max-width:420px}.switch-line{display:flex;align-items:center;gap:8px;cursor:pointer}.pattern-field label{display:flex;flex-direction:column;gap:4px}.pattern-field textarea{width:100%;font:12.5px/1.45 ui-monospace,SFMono-Regular,Menlo,monospace;padding:8px 10px;border:1px solid var(--border);border-radius:6px;background:var(--bg);color:var(--text);resize:vertical}.pattern-field textarea:disabled{opacity:.65}.pattern-hint{display:block;margin-top:3px;font-size:12px}.status-banner{display:flex;flex-direction:column;gap:4px;margin:12px 0;padding:10px 14px;border:1px solid var(--border);border-radius:10px;background:var(--surface)}.status-banner.pending{border-color:color-mix(in srgb,var(--accent) 45%,transparent)}.status-banner.warning{border-color:color-mix(in srgb,#d29922 55%,transparent)}.status-banner.applied{border-color:color-mix(in srgb,#3fb950 45%,transparent)}.status-banner ul{margin:4px 0 0;padding-left:20px}.status-head{display:flex;justify-content:space-between;gap:12px}.savebar{position:sticky;bottom:12px;display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:16px;padding:10px 14px;background:var(--surface);border:1px solid var(--accent);border-radius:10px;box-shadow:0 6px 24px #00000059}.savebar-actions{display:flex;align-items:center;gap:14px}.emulator-tabs{display:flex;gap:4px;margin:0 -4px;padding:0 4px 2px;overflow-x:auto;border-bottom:1px solid var(--border)}button.emulator-tab{position:relative;display:inline-flex;align-items:center;gap:6px;flex-shrink:0;padding:8px 12px;background:none;color:var(--text);border-radius:8px 8px 0 0}button.emulator-tab img{display:block;object-fit:contain;border-radius:6px}button.emulator-tab.off img,button.emulator-tab.off .tab-name{opacity:.4;filter:grayscale(1)}button.emulator-tab:hover{background:color-mix(in srgb,var(--accent) 8%,transparent)}button.emulator-tab.active{background:color-mix(in srgb,var(--accent) 14%,transparent);box-shadow:inset 0 -2px 0 var(--accent)}.unsaved-dot{position:absolute;top:5px;right:5px;width:8px;height:8px;border-radius:50%;background:var(--accent);box-shadow:0 0 0 2px var(--surface)}.emulator-panel{padding-top:6px}.switch-line:has(input:disabled){cursor:default;opacity:.6}.emulator-editor{padding:14px 2px 4px}.editor-grid{display:flex;flex-direction:column}.editor-head{display:flex;align-items:center;gap:12px;margin-bottom:6px}.editor-head img{display:block;object-fit:contain;border-radius:8px}.editor-head h4{margin:0;font-size:17px}.editor-section{margin-top:18px}.editor-section h5{margin:0 0 6px;font-size:12px;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--muted)}.editor-note{margin:8px 0 0;font-size:13px}.toggle-row{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:10px 0;border-bottom:1px solid var(--border);cursor:pointer}.toggle-row:last-of-type{border-bottom:0}.toggle-row.locked{cursor:default}.toggle-row.locked .toggle-text{opacity:.6}.toggle-text{display:flex;flex-direction:column;gap:1px;min-width:0}.toggle-text .muted{font-size:13px}input.switch{-webkit-appearance:none;-moz-appearance:none;appearance:none;flex-shrink:0;position:relative;width:38px;height:22px;margin:0;border-radius:11px;background:color-mix(in srgb,var(--muted) 45%,transparent);cursor:inherit;transition:background .15s}input.switch:after{content:"";position:absolute;top:3px;left:3px;width:16px;height:16px;border-radius:50%;background:#fff;transition:transform .15s}input.switch:checked{background:var(--accent)}input.switch:checked:after{transform:translate(16px)}input.switch:disabled{opacity:.55}input.switch:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.folder-list{list-style:none;margin:0;padding:0;border:1px solid var(--border);border-radius:8px}.folder-list li{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:9px 12px;border-bottom:1px solid var(--border)}.folder-list li:last-child{border-bottom:0}.folder-name{display:flex;align-items:baseline;gap:8px;font-weight:500}.folder-detail{font-size:13px;font-weight:400}.folder-state{display:inline-flex;align-items:center;gap:7px;font-size:13px;color:var(--muted);white-space:nowrap}.state-dot{width:8px;height:8px;border-radius:50%;background:var(--muted)}.folder-state.configured,.folder-state.saf{color:var(--text)}.folder-state.configured .state-dot,.folder-state.saf .state-dot{background:var(--accent)}.pattern-field{margin:12px 0 0}.pattern-label{display:flex;align-items:baseline;justify-content:space-between;gap:12px;font-size:14px;font-weight:600}.pattern-count{font-size:12px;font-weight:400}.panel-head{display:flex;align-items:center;justify-content:space-between;gap:12px}button.danger-outline{background:none;color:var(--danger);border:1px solid color-mix(in srgb,var(--danger) 55%,transparent)}button.danger-outline:hover{background:color-mix(in srgb,var(--danger) 12%,transparent)}.pattern-field textarea{display:block;margin-top:6px}.pattern-field textarea.generated{margin-top:6px;color:var(--muted);background:color-mix(in srgb,var(--muted) 10%,var(--bg));border-style:dashed;resize:none;cursor:default}.devices li,.emulators li{display:flex}.devices li>*,.emulators li>*{flex:1}.device>svg{flex-shrink:0;margin-top:2px}.login .remember{flex-direction:row;align-items:center;gap:8px;cursor:pointer}.subscription{display:flex;flex-direction:column;gap:4px;max-width:640px}.plan-summary{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 12px;margin:8px 0}.plan-summary strong{font-size:22px}.plan-slider{width:100%;padding:0;accent-color:var(--accent)}.subscription .remember{display:flex;align-items:center;gap:8px;margin:10px 0;cursor:pointer}.voucher{display:flex;flex-direction:column;gap:4px;max-width:280px;margin:8px 0}.payment{margin-top:12px}.badge.plan-active{background:color-mix(in srgb,var(--accent) 18%,transparent)}.badge.plan-expired,.badge.plan-cancelling{background:color-mix(in srgb,var(--danger) 16%,transparent);color:var(--danger)}
