/* Venice Connect — its own premium dark identity (deep ink base, one red accent, soft depth, crisp type).
   Monochrome-and-red belongs to Sykbot; Venice is its own product. Mobile-first: a real mobile IDE on phones,
   the full desktop IDE on wide screens. All motion is GPU-friendly (transform/opacity) and fully disabled under
   prefers-reduced-motion. No bundler, no framework — modern vanilla CSS only. */
:root{
  color-scheme:dark;
  /* ink base */
  --bg:#0a0a0f;--bg2:#0c0c13;
  /* surfaces + hairlines */
  --card:rgba(22,23,33,.72);--card2:rgba(28,29,41,.82);--panel:#121320;--panel2:#161726;
  --bd:rgba(255,255,255,.09);--bd2:rgba(255,255,255,.17);--bd3:rgba(255,255,255,.28);
  /* type */
  --fg:#edeef4;--mut:#9b9cb0;--dim:#6f7088;
  /* the one accent is red on black; destruction is an outline red, distinct from the filled accent */
  --ac:#ff3b3b;--ac2:#ff6b6b;--ac-soft:rgba(255,59,59,.16);--ac-ink:#fff;
  --grad:linear-gradient(135deg,#ff4b4b 0%,#c81e2e 100%);
  --dang:#ff5a6b;--dang2:#ff8591;--dang-soft:rgba(255,90,107,.16);
  /* radii + elevation */
  --r1:9px;--r2:13px;--r3:18px;
  --sh1:0 1px 2px rgba(0,0,0,.5);--sh2:0 10px 34px rgba(0,0,0,.5);--sh3:0 20px 60px rgba(0,0,0,.6);
  --glow:0 0 0 1px rgba(255,59,59,.5),0 8px 30px rgba(255,59,59,.22);
  --ease:cubic-bezier(.22,.61,.36,1);--spring:cubic-bezier(.34,1.56,.64,1);
}
*{box-sizing:border-box}
/* hidden means hidden, also on an element whose class sets a display (a .row form) */
[hidden]{display:none!important}
@view-transition{navigation:auto}
html{background:var(--bg)}
body{margin:0;min-height:100vh;color:var(--fg);font:16px/1.55 system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif;
  background:radial-gradient(130% 100% at 50% -10%,#1a0a0d 0%,#0b0708 46%,#060405 100%) fixed;
  -webkit-text-size-adjust:100%;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}

/* ---- animated backdrop: a drifting gradient mesh, transform-only (no per-frame blur or JS), paused on a hidden tab ---- */
.bg{position:fixed;inset:0;z-index:-1;overflow:hidden;pointer-events:none;contain:strict}
.bg::after{content:"";position:absolute;inset:0;
  background:radial-gradient(60% 50% at 50% 120%,rgba(0,0,0,.5),transparent 70%);mix-blend-mode:multiply}
.bg i{position:absolute;width:95vmax;height:95vmax;border-radius:50%;will-change:transform;transform:translate3d(0,0,0);opacity:.6;filter:saturate(1.1)}
.bg i:nth-child(1){left:-40vmax;bottom:-55vmax;background:radial-gradient(circle,rgba(255,59,59,.55) 0,rgba(255,59,59,.16) 30%,transparent 62%);animation:drift1 16s ease-in-out infinite alternate}
.bg i:nth-child(2){right:-52vmax;bottom:-72vmax;opacity:.5;background:radial-gradient(circle,rgba(200,40,55,.5) 0,rgba(200,40,55,.14) 30%,transparent 62%);animation:drift2 20s ease-in-out infinite alternate}
.bg i:nth-child(3){left:6vmax;top:-78vmax;opacity:.42;background:radial-gradient(circle,rgba(255,72,72,.42) 0,rgba(255,72,72,.11) 30%,transparent 62%);animation:drift3 24s ease-in-out infinite alternate}
@keyframes drift1{to{transform:translate3d(36vmax,-16vmax,0) scale(1.18)}}
@keyframes drift2{to{transform:translate3d(-40vmax,-24vmax,0) scale(.88)}}
@keyframes drift3{to{transform:translate3d(28vmax,20vmax,0) scale(1.22)}}
.bg-paused .bg i{animation-play-state:paused}
.still .bg i{animation:none}

/* ---- layout ---- */
.wrap{max-width:820px;margin:0 auto;padding:max(18px,env(safe-area-inset-top)) clamp(16px,4vw,26px) 48px}
h1{font-size:clamp(1.6rem,5vw,2rem);margin:14px 0 18px;letter-spacing:-.02em;font-weight:700;line-height:1.1}
h2{font-size:1.12rem;margin:30px 0 12px;letter-spacing:-.01em;font-weight:650}h2.first{margin-top:0}
h3{font-weight:650}
a{color:var(--ac2);text-underline-offset:3px;text-decoration-color:rgba(255,107,107,.4);transition:color .15s var(--ease)}
@media (hover:hover){a:hover{color:#ffb0b0}}

/* ---- cards ---- */
.card,.e{background:var(--card);border:1px solid var(--bd);border-radius:var(--r2);padding:16px;margin:14px 0;box-shadow:var(--sh1);transition:border-color .2s var(--ease),transform .2s var(--ease),box-shadow .2s var(--ease)}
.card{backdrop-filter:blur(12px) saturate(1.2);-webkit-backdrop-filter:blur(12px) saturate(1.2)}
.e{padding:11px 13px;margin:10px 0;box-shadow:none}
@media (hover:hover){.card:hover{border-color:var(--bd2);box-shadow:var(--sh2)}}

/* ---- forms ---- */
label{display:block;margin:13px 0;font-weight:600}label small{font-weight:400;color:var(--mut)}
input,textarea,select{display:block;width:100%;min-height:44px;margin-top:7px;padding:11px 13px;border-radius:var(--r1);border:1px solid var(--bd2);background:rgba(0,0,0,.35);color:var(--fg);font:inherit;transition:border-color .16s var(--ease),box-shadow .16s var(--ease),background-color .16s var(--ease)}
input[type=file]{padding:9px 12px}
/* 16px: below that iOS zooms the page in when a field is focused */
textarea{font-family:ui-monospace,SFMono-Regular,Menlo,"Cascadia Code",monospace;line-height:1.5;font-size:16px}
input:focus,textarea:focus,select:focus{outline:0;border-color:var(--ac);background:rgba(0,0,0,.5);box-shadow:0 0 0 3px var(--ac-soft)}
input:disabled,select:disabled{opacity:.55;cursor:not-allowed}
::placeholder{color:var(--dim)}

/* ---- buttons: primary is the gradient accent; ghost is translucent; red is destruction only ---- */
button,.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:44px;min-width:44px;max-width:100%;padding:10px 18px;border:1px solid transparent;border-radius:var(--r1);
  background:var(--grad);color:var(--ac-ink);font:inherit;font-weight:600;line-height:1.2;text-align:center;text-decoration:none;cursor:pointer;
  box-shadow:0 1px 0 rgba(255,255,255,.14) inset,0 6px 18px rgba(255,59,59,.22);
  touch-action:manipulation;-webkit-tap-highlight-color:transparent;
  transition:transform .14s var(--spring),box-shadow .18s var(--ease),background-color .16s var(--ease),border-color .16s var(--ease),opacity .16s var(--ease)}
button.ghost,.btn.ghost{background:rgba(255,255,255,.05);border-color:var(--bd2);color:var(--fg);box-shadow:none}
button.danger,.btn.danger{background:transparent;border-color:rgba(255,90,107,.5);color:var(--dang2);box-shadow:none}
button.big,.btn.big{font-size:1.08rem;min-height:54px;padding:15px 26px;border-radius:var(--r2)}
button.sm,.btn.sm{font-size:.86rem;padding:8px 13px}
button:active,.btn:active{transform:translateY(1px) scale(.98)}
button:focus-visible,.btn:focus-visible,a:focus-visible,summary:focus-visible,[tabindex]:focus-visible{outline:2px solid var(--ac2);outline-offset:2px;border-radius:var(--r1)}
button:disabled{cursor:progress;opacity:.55}
button.busy{position:relative}
button.busy::after{content:"";width:14px;height:14px;margin-left:2px;border:2px solid currentColor;border-right-color:transparent;border-radius:50%;animation:spin .7s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}
@media (hover:hover){
  button:hover:not(:disabled),.btn:hover{transform:translateY(-1px);box-shadow:0 1px 0 rgba(255,255,255,.18) inset,0 10px 26px rgba(255,59,59,.34)}
  button.ghost:hover:not(:disabled),.btn.ghost:hover{background:rgba(255,255,255,.1);border-color:var(--bd3);box-shadow:none}
  button.danger:hover:not(:disabled),.btn.danger:hover{background:var(--dang-soft);border-color:var(--dang);color:#fff;box-shadow:none}
}

/* ---- text + chips ---- */
pre{white-space:pre-wrap;overflow-wrap:anywhere;background:rgba(0,0,0,.4);border:1px solid var(--bd);padding:12px;border-radius:var(--r1);margin:8px 0 0;font-size:13px;line-height:1.5;max-height:280px;overflow:auto;font-family:ui-monospace,SFMono-Regular,Menlo,monospace}
code{background:rgba(255,255,255,.1);padding:1px 6px;border-radius:5px;overflow-wrap:anywhere;font-size:.92em}
.tag{display:inline-block;font-size:.72rem;background:rgba(255,255,255,.08);padding:3px 9px;border-radius:99px;color:var(--mut);font-weight:600;border:1px solid var(--bd);letter-spacing:.01em}
.muted{color:var(--mut)}
.flash{background:linear-gradient(135deg,rgba(255,59,59,.22),rgba(200,40,55,.14));border:1px solid var(--bd2);color:var(--fg);padding:11px 15px;border-radius:var(--r1);font-weight:600;animation:pop .32s var(--ease) both}
.flash.err{background:var(--dang-soft);border-color:rgba(255,90,107,.5);color:#ffd8dc}
form .flash{margin:12px 0 0}
.hint,.gh-msg{margin:10px 0 0;padding:10px 14px;border:1px solid var(--ac);border-radius:var(--r1);color:var(--fg);background:var(--ac-soft);overflow-wrap:anywhere;animation:pop .3s var(--ease) both}
.hint.info,.gh-msg.info{border-color:var(--bd2);background:rgba(255,255,255,.05)}
.hint>.btn,.hint>button{margin:6px 0 0 8px}
.pop{animation:pop .34s var(--ease) both}
@keyframes pop{from{opacity:0;transform:translateY(10px)}}

/* placeholder while the first answer is slow (only after 250 ms, so a fast answer never flashes it) */
.skel i{display:block;height:14px;margin:12px 0;border-radius:7px;background:linear-gradient(90deg,rgba(255,255,255,.05),rgba(255,255,255,.14),rgba(255,255,255,.05));background-size:200% 100%;animation:shimmer 1.3s ease-in-out infinite}
.skel i:nth-child(1){width:45%}.skel i:nth-child(3){width:70%}
@keyframes shimmer{from{background-position:100% 0}to{background-position:-100% 0}}

.row{display:flex;gap:10px;flex-wrap:wrap;align-items:center;margin:10px 0}.row.between{justify-content:space-between}
.row>*{min-width:0}.ws>input{margin-top:10px}
.two{display:grid;grid-template-columns:1fr 1fr;gap:0 14px}.two label{min-width:0}
@media (max-width:520px){.two{grid-template-columns:1fr}}

/* ---- header + account corner ---- */
.top{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:6px 14px;margin:8px 0 18px}
.top h1{margin:0;background:linear-gradient(120deg,#fff 0%,#ffd0d0 60%,#ff8a8a 100%);-webkit-background-clip:text;background-clip:text;color:transparent}
.acct{margin-left:auto;position:relative}
.acct-out{display:flex;flex-direction:column;align-items:flex-end;gap:4px}.acct-out .row{margin:0}.acct-out small{font-size:.78rem}
.menu summary{list-style:none;cursor:pointer}.menu summary::-webkit-details-marker{display:none}
.menu summary::after{content:"";width:7px;height:7px;margin:-3px 0 0 10px;border:solid currentColor;border-width:0 2px 2px 0;transform:rotate(45deg);transition:transform .2s var(--ease)}
.menu[open] summary::after{margin-top:3px;transform:rotate(-135deg)}
.menu-pop{position:absolute;right:0;top:calc(100% + 8px);z-index:30;display:flex;flex-direction:column;gap:8px;width:max-content;min-width:230px;max-width:calc(100vw - 32px);padding:13px;
  background:var(--panel2);border:1px solid var(--bd2);border-radius:var(--r2);box-shadow:var(--sh3);animation:pop .22s var(--ease) both}
.menu-pop p{margin:0 4px;font-weight:600}.menu-pop form{margin:0}.menu-pop .btn,.menu-pop button{width:100%;justify-content:flex-start}

/* ---- dashboard: credits, usage, keep, frozen, create, templates ---- */
.credits{margin:14px 0 4px}.credits [data-credits]{font-weight:600}[data-credits] small{display:block;font-weight:400;font-size:.82rem;color:var(--mut)}
.usage{margin:10px 0 0;overflow-wrap:anywhere}.month{margin:4px 0 0}
.keep{margin:8px 0 0}.keep label{margin:0}.keep select{display:inline-block;width:auto;min-width:11em;margin:0}
.est{font-weight:400;opacity:.85;white-space:nowrap}
.frozen{border-color:rgba(255,90,107,.5);background:var(--dang-soft)}.frozen>p:first-child{margin:0}
.create{gap:12px}.create .start{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:0;max-width:100%;font-weight:600}
.create select{display:inline-block;width:auto;max-width:100%;min-width:0;margin:0}
#new{background:var(--grad)}
.empty{padding:22px;text-align:center;border:1px dashed var(--bd2);border-radius:var(--r2);margin:14px 0}
/* a workspace card gets a faint accent edge */
.ws{position:relative;overflow:hidden}
.ws::before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--grad);opacity:.8}

/* GitHub: the dashboard's card, and each workspace's panel */
.ws .gh{margin-top:12px;padding-top:4px;border-top:1px solid var(--bd)}
.gh-line{margin:8px 0;overflow-wrap:anywhere}.gh-line .btn{margin-left:6px}
.gh .tag,.gh-body .tag{max-width:100%;overflow-wrap:anywhere}
.e>button.danger,.e>button[data-restore]{margin-left:8px}
.bin h3{font-size:1rem;margin:22px 0 8px}.e.gone{opacity:.68;border-style:dashed}
.e.sec .row{margin:6px 0 0}.e.sec pre{max-height:120px}
#pasteplan p{margin:8px 0;overflow-wrap:anywhere}#pasteplan code{display:inline-block;margin:2px 4px 2px 0}#pasteplan ul{margin:6px 0 0;padding-left:1.2em}
progress{display:block;width:100%;height:8px;margin:4px 0 12px;border:0;border-radius:99px;background:rgba(255,255,255,.1);overflow:hidden;-webkit-appearance:none;appearance:none}
progress::-webkit-progress-bar{background:rgba(255,255,255,.1)}
progress::-webkit-progress-value{background:var(--grad);transition:width .15s linear}
progress::-moz-progress-bar{background:var(--ac)}
progress[hidden]{display:none}
.steps{margin:8px 0 12px;padding-left:1.4em}.steps li{margin:5px 0}
.ro{margin:8px 0 0}.ro input{margin-top:0}
.need .row{margin:6px 0 0}
.cut{margin:4px 0 0;font-size:13px}.egress label{margin:0}.egress select{display:inline-block;width:auto;max-width:100%;min-width:0;margin:0}

/* the landing card for signed-out visitors */
.auth-card p b{font-size:1.1rem}

/* ---- tree, history, diff, search, activity log ---- */
details.dir{margin:6px 0}details.dir>summary{cursor:pointer;min-height:44px;display:flex;align-items:center;gap:8px;list-style:none;padding:4px 6px;border-radius:7px;transition:background-color .14s var(--ease)}
details.dir>summary::-webkit-details-marker{display:none}
details.dir>summary::before{content:"";width:7px;height:7px;border:solid var(--mut);border-width:0 2px 2px 0;transform:rotate(-45deg);margin:0 4px 0 2px;transition:transform .18s var(--ease)}
details.dir[open]>summary::before{transform:rotate(45deg)}
@media (hover:hover){details.dir>summary:hover{background:rgba(255,255,255,.05)}}
.kids{padding-left:14px;border-left:1px solid var(--bd);margin-left:8px}
.e .tools{margin:6px 0 0}.e .tools .btn,.e .tools button{min-height:44px}
.hist{margin:10px 0 0;padding-top:6px;border-top:1px solid var(--bd)}.versions{margin:6px 0 0;padding-left:1.2em}.versions li{margin:8px 0;overflow-wrap:anywhere}
pre.diff span{display:block;white-space:pre-wrap} /* each row its own line: rows are joined with nothing between, or a pre shows a blank line between each */
pre.diff .add{background:rgba(255,255,255,.13);color:#fff}pre.diff .del{background:rgba(255,90,107,.22);color:#fff}
pre.diff .same{color:var(--mut)}pre.diff .skip{color:var(--dim);font-style:italic}
.search{margin:6px 0}.search input{flex:1 1 12em;margin:0}#results ol{padding-left:1.2em}#results li{margin:6px 0;overflow-wrap:anywhere}
mark{background:var(--ac2);color:#161018;border-radius:3px;padding:0 3px;font-weight:600}
.activity .log{padding-left:1.2em;margin:6px 0}.activity li{margin:6px 0;overflow-wrap:anywhere}

/* ---- the sheet: one question over a dimmed page ---- */
dialog.sheet{width:min(520px,calc(100vw - 16px));max-width:none;margin:auto;padding:20px;border:1px solid var(--bd2);border-radius:var(--r3);background:var(--panel2);color:var(--fg);box-shadow:var(--sh3)}
dialog.sheet::backdrop{background:rgba(5,5,10,.72);backdrop-filter:blur(3px)}
#sheet-text{margin:0 0 6px;font-size:1.05rem}dialog.sheet .row{margin:14px 0 0}
@media (max-width:600px){dialog.sheet{margin:auto auto 8px}}

/* ---- network footer ---- */
.net{margin:40px 0 8px;padding-top:4px;border-top:1px solid var(--bd);color:var(--mut)}
.net h2{margin:18px 0 8px;font-size:1rem;color:var(--fg)}
.net ul{list-style:none;margin:0 0 14px;padding:0}
.net li{display:flex;flex-wrap:wrap;align-items:center;gap:2px 12px;min-height:44px;padding:4px 0;border-bottom:1px solid var(--bd);font-size:.92rem}
.net li:last-child{border-bottom:0}
.net a{display:inline-flex;align-items:center;min-height:44px;color:var(--fg);text-decoration:none}
.net .cur b{color:var(--ac2)}
@media (hover:hover){.net a:hover b{color:var(--ac2)}}

/* =========================================================================================================
   The editor (src/pages.js workspacePage, public/ws.js, public/run.js): a flagship code-editor layout — title bar,
   activity bar, resizable side bar, editor tabs and breadcrumbs, a resizable bottom panel (Terminal, Preview,
   Output), a status bar and a command palette — in black, greys and the one red. Every id and data-attribute the
   scripts and tests bind to is unchanged. The activity BAR is `.ide > .activity`; the activity LOG shares the class
   name but sits inside the side bar. Sizes come from --side-w and --panel-h, which public/ws.js sets and remembers.
   ========================================================================================================= */
.ide-body{overflow:hidden}
.ide-root{--side-w:300px;--panel-h:280px;--chrome:#0c0c0f;--chrome2:#101014;--edge:rgba(255,255,255,.07);--editor:#141418;--pane:#0b0b0e;
  display:flex;flex-direction:column;height:100vh;height:100dvh;color:var(--fg);font-size:14px}
.ide-root :is(input,select,textarea){font-size:16px} /* below 16px a phone zooms the page into a focused field */
.ide-root.resizing,.ide-root.resizing *{cursor:col-resize!important;user-select:none}
.ide-root.resizing:has(.sash-panel:active),.ide-root.resizing:has(.sash-panel:active) *{cursor:row-resize!important}
kbd{display:inline-flex;align-items:center;justify-content:center;min-width:20px;height:20px;padding:0 5px;border:1px solid var(--bd2);border-bottom-width:2px;border-radius:5px;background:rgba(255,255,255,.04);color:var(--mut);font:600 .68rem/1 ui-monospace,SFMono-Regular,Menlo,monospace}
kbd+kbd{margin-left:3px}

/* the small square buttons of toolbars (the global button is a big gradient one; these are quiet) */
.icon-btn,.ide-root .side-tools button{display:inline-flex;align-items:center;justify-content:center;min-height:28px;min-width:28px;height:28px;padding:0 6px;border:1px solid transparent;border-radius:7px;background:transparent;color:var(--mut);box-shadow:none;font-size:.8rem}
@media (hover:hover){.icon-btn:hover:not(:disabled),.ide-root .side-tools button:hover:not(:disabled){background:rgba(255,255,255,.08);border-color:transparent;color:var(--fg);transform:none;box-shadow:none}}
.icon-btn[aria-pressed=true]{color:#fff;background:rgba(255,255,255,.08)}
.icon-btn[aria-disabled=true]{opacity:.4;pointer-events:none}

/* ---- title bar: the brand, the command centre, the run pill and the account ---- */
.titlebar{flex:none;display:grid;grid-template-columns:minmax(0,1fr) minmax(0,560px) minmax(0,1fr);align-items:center;gap:12px;height:44px;padding:0 10px 0 12px;
  background:linear-gradient(180deg,rgba(18,18,22,.96),rgba(11,11,14,.96));border-bottom:1px solid var(--edge);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);position:relative;z-index:20}
.tb-brand{display:inline-flex;align-items:center;gap:8px;justify-self:start;min-height:32px;padding:0 8px;border-radius:8px;color:#fff;text-decoration:none;font-weight:700;letter-spacing:-.01em}
.tb-brand svg{color:var(--ac)}
@media (hover:hover){.tb-brand:hover{background:rgba(255,255,255,.06);color:#fff}}
.tb-command{display:flex;align-items:center;justify-content:center;gap:10px;width:100%;min-height:30px;height:30px;padding:0 10px;border:1px solid var(--bd);border-radius:9px;background:rgba(255,255,255,.04);color:var(--mut);box-shadow:none;font-weight:500;font-size:.82rem;overflow:hidden}
.tb-cmd-text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}
.tb-kbd{display:inline-flex;margin-left:auto}
@media (hover:hover){.tb-command:hover:not(:disabled){background:rgba(255,255,255,.07);border-color:var(--bd2);color:var(--fg);transform:none;box-shadow:none}}
.tb-right{display:flex;align-items:center;justify-content:flex-end;gap:8px;min-width:0}
.titlebar .acct{margin-left:0}
.titlebar .acct-out{flex-direction:row;align-items:center}.titlebar .acct-out small{display:none}
.titlebar .acct .btn,.titlebar .acct summary{min-height:30px;padding:5px 12px;font-size:.84rem}
.tb-run{position:relative;display:inline-flex;align-items:center;gap:7px;min-height:30px;height:30px;padding:0 12px 0 10px;border:1px solid rgba(255,59,59,.45);border-radius:99px;background:rgba(255,59,59,.12);color:#fff;box-shadow:none;font-size:.82rem;font-weight:600;white-space:nowrap}
.tb-run svg{width:15px;height:15px;color:var(--ac)}
@media (hover:hover){.tb-run:hover:not(:disabled){background:rgba(255,59,59,.22);border-color:var(--ac);transform:none;box-shadow:0 0 0 3px var(--ac-soft)}}
.tb-run.live svg{fill:var(--ac)}
.tb-run.live::before,.tb-run.starting::before{content:"";position:absolute;inset:-1px;border-radius:inherit;box-shadow:0 0 0 0 rgba(255,59,59,.55);animation:runpulse 1.8s var(--ease) infinite;pointer-events:none}
.tb-run.starting::before{animation-duration:1s}
@keyframes runpulse{70%{box-shadow:0 0 0 8px rgba(255,59,59,0)}100%{box-shadow:0 0 0 0 rgba(255,59,59,0)}}

/* ---- the grid: activity bar, side bar, its sash, and the main column ---- */
.ide{flex:1 1 auto;display:grid;grid-template-columns:52px var(--side-w) 5px minmax(0,1fr) var(--cp-w,0px);min-height:0;position:relative}
.ide-root.side-closed .ide{grid-template-columns:52px 0 0 minmax(0,1fr) var(--cp-w,0px)}
.ide-root.cp-open{--cp-w:clamp(340px,32vw,460px)}
.ide-root.side-closed .side,.ide-root.side-closed .sash-side{visibility:hidden;overflow:hidden}

/* activity bar */
.ide>.activity{display:flex;flex-direction:column;align-items:center;gap:4px;padding:8px 0;background:var(--chrome);border-right:1px solid var(--edge);overflow:auto;scrollbar-width:none}
.ide>.activity .act-item{position:relative;min-height:44px;min-width:44px;width:44px;height:44px;padding:0;border:0;border-radius:10px;background:transparent;color:var(--dim);box-shadow:none;transition:color .16s var(--ease),background-color .16s var(--ease),transform .12s var(--spring)}
@media (hover:hover){.ide>.activity .act-item:hover:not(:disabled){background:rgba(255,255,255,.05);color:var(--fg);transform:none;box-shadow:none}}
.ide>.activity .act-item:active{transform:scale(.92)}
.ide>.activity .act-item::before{content:"";position:absolute;left:-4px;top:10px;bottom:10px;width:2px;border-radius:2px;background:var(--ac);transform:scaleY(0);transition:transform .22s var(--spring)}
.ide>.activity .act-item.active{color:#fff}
.ide>.activity .act-item.active::before{transform:scaleY(1)}
.act-gap{flex:1 1 auto}
.act-label{display:none}
.ide>.activity .act-phone{display:none}

/* side bar */
.side{background:var(--chrome2);border-right:1px solid var(--edge);overflow:hidden;display:flex;flex-direction:column;min-width:0}
.side .view{display:flex;flex-direction:column;min-height:0;height:100%;animation:viewIn .2s var(--ease)}
.side .view[hidden]{display:none}
@keyframes viewIn{from{opacity:0;transform:translateX(-6px)}}
.side-head{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:0 8px 0 16px;height:36px;font-size:.7rem;letter-spacing:.09em;text-transform:uppercase;color:var(--mut);flex:none}
.side-title{font-weight:700;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.side-tools{display:flex;gap:2px}
.side-sub{font-size:.7rem;letter-spacing:.09em;text-transform:uppercase;color:var(--mut);margin:18px 0 8px}
.side-scroll{overflow:auto;padding:0 12px 28px;min-height:0;flex:1 1 auto;scrollbar-width:thin;scrollbar-color:rgba(255,255,255,.14) transparent}
.side-scroll .card{background:rgba(255,255,255,.025);border-color:var(--edge);backdrop-filter:none;-webkit-backdrop-filter:none;box-shadow:none;padding:14px}
@media (hover:hover){.side-scroll .card:hover{box-shadow:none;border-color:var(--bd)}}
.side-scroll .net{margin-top:24px}
.fine{font-size:.8rem}

/* collapsible sections (VS Code panes) */
details.sect{margin:0 -12px;border-top:1px solid var(--edge)}
details.sect:first-of-type{border-top:0}
details.sect>summary{display:flex;align-items:center;gap:6px;min-height:30px;padding:0 12px 0 8px;cursor:pointer;list-style:none;font-size:.7rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--fg);position:sticky;top:0;z-index:2;background:var(--chrome2)}
details.sect>summary::-webkit-details-marker{display:none}
details.sect>summary::before{content:"";width:6px;height:6px;margin:0 6px 0 4px;border:solid var(--mut);border-width:0 1.6px 1.6px 0;transform:rotate(-45deg);transition:transform .18s var(--ease)}
details.sect[open]>summary::before{transform:rotate(45deg)}
.sect-title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.sect-body{padding:4px 12px 14px}
@media (hover:hover){details.sect>summary:hover{color:#fff}}
.ws-actions{margin:6px 0}
.ws-actions button,.ws-actions .btn{min-height:34px;padding:7px 12px;font-size:.84rem}
.side .credits{margin:6px 0}.side .credits small{flex-basis:100%}

/* the tree on wide screens: one row a file, as in an editor's explorer — a click opens it in the editor, so its text is
   not repeated in the tree, and its tools show on hover or focus (always, on a screen without hover). A phone keeps the
   text and every target at 44 px. */
@media (min-width:768px){
  #entries .e{position:relative;display:flex;flex-wrap:wrap;align-items:center;gap:2px 8px;margin:1px 0;padding:3px 8px;border-color:transparent;background:transparent;border-radius:6px;min-height:30px}
  #entries .e>b{cursor:pointer;font-weight:500;font-size:.88rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0;flex:0 1 auto}
  #entries .e>b::before{content:"";display:inline-block;width:7px;height:9px;margin-right:8px;border:1.4px solid var(--dim);border-radius:1.5px;vertical-align:-1px}
  #entries .e .tag{font-size:.64rem;padding:0 6px;border:0;background:transparent;color:var(--dim)}
  #entries .e .tools{gap:2px;margin:0 0 0 auto;flex-wrap:nowrap}
  #entries .e .tools .btn,#entries .e .tools button,#entries .e>button.danger,#entries .e>button[data-restore]{min-height:22px;padding:1px 7px;font-size:.7rem;border-radius:5px;box-shadow:none}
  #entries .e[data-kind=line]>pre,#entries .e[data-kind=file]>pre,#entries .e[data-kind=line]>.cut{display:none}
  #entries .e>pre{flex-basis:100%;max-height:132px;font-size:12px;padding:8px 10px}
  #entries .e>.hist,#entries .e>.diffbox{flex-basis:100%}
  #entries .e.gone{border-color:var(--edge);border-style:dashed}
  @media (hover:hover){
    #entries .e:hover{background:rgba(255,255,255,.045)}
    #entries .e .tools{position:absolute;right:4px;top:3px;padding-left:14px;background:linear-gradient(90deg,transparent,#17171b 14px);opacity:0;transition:opacity .14s var(--ease)}
    #entries .e.gone .tools{position:static;background:none}
    #entries .e:hover .tools,#entries .e:focus-within .tools,#entries .e:has(.hist:not([hidden])) .tools{opacity:1}
  }
  .side .bin h3,.side .activity h3,.side .notes h3{font-size:.7rem;letter-spacing:.08em;text-transform:uppercase;color:var(--mut);margin:18px 0 6px}
  .side .activity .log{font-size:.82rem;color:var(--mut)}
  details.dir{margin:1px 0}
  details.dir>summary{min-height:28px;padding:2px 6px;font-size:.88rem}
  details.dir>summary b{font-weight:600}
  .kids{padding-left:10px;margin-left:9px}
  .tree .tag{font-size:.64rem;padding:0 6px;border:0;background:transparent;color:var(--dim)}
}

/* ---- the main column: the editor over the panel ---- */
.main{display:flex;flex-direction:column;min-width:0;min-height:0;background:var(--editor)}
.sash{position:relative;z-index:6;background:transparent;touch-action:none;outline:0}
.sash::after{content:"";position:absolute;background:transparent;transition:background-color .15s var(--ease) .1s}
.sash-side{cursor:col-resize;margin-left:-3px;margin-right:-1px}
.sash-side::after{top:0;bottom:0;left:2px;width:1px}
.sash-panel{flex:none;height:5px;margin:-2px 0;cursor:row-resize}
.sash-panel::after{left:0;right:0;top:2px;height:1px}
.sash:hover::after,.sash:focus-visible::after,.resizing .sash:active::after{background:var(--ac)}
.sash-side:hover::after,.sash-side:focus-visible::after{width:2px;left:1.5px}
.main:has(>.panel[hidden])>.sash-panel{display:none}

/* editor area */
.editor-area{position:relative;display:flex;flex-direction:column;flex:1 1 auto;min-width:0;min-height:0;background:var(--editor);overflow:hidden}
.panel-max .editor-area{display:none}
.tabs{display:flex;align-items:stretch;flex:none;overflow-x:auto;background:var(--chrome2);border-bottom:1px solid var(--edge);scrollbar-width:none}
.tabs:empty{display:none}
.tab{position:relative;display:inline-flex;align-items:center;gap:7px;min-height:36px;height:36px;padding:0 8px 0 14px;border:0;border-right:1px solid var(--edge);border-radius:0;background:transparent;color:var(--dim);font-weight:500;font-size:.82rem;white-space:nowrap;box-shadow:none;transition:background-color .14s var(--ease),color .14s var(--ease);animation:tabIn .18s var(--ease)}
@keyframes tabIn{from{opacity:0;transform:translateY(-4px)}}
@media (hover:hover){.tab:hover:not(:disabled){background:rgba(255,255,255,.03);color:var(--fg);transform:none;box-shadow:none}}
.tab.active{background:var(--editor);color:#fff}
.tab.active::before{content:"";position:absolute;left:0;right:0;top:0;height:2px;background:var(--grad);animation:tabLine .25s var(--ease)}
@keyframes tabLine{from{transform:scaleX(.3);opacity:0}}
.tab .tab-name{overflow:hidden;text-overflow:ellipsis;max-width:18ch}
.tab .tab-dot{width:7px;height:7px;border-radius:50%;background:var(--ac);opacity:0;flex:none;transform:scale(.4);transition:opacity .15s var(--ease),transform .2s var(--spring)}
.tab.dirty .tab-dot{opacity:1;transform:none}
.tab .tab-x{display:inline-flex;align-items:center;justify-content:center;width:20px;height:20px;min-height:20px;min-width:20px;padding:0;border:0;border-radius:5px;background:transparent;color:inherit;opacity:.45;line-height:1;font-size:1rem;box-shadow:none}
.tab:hover .tab-x,.tab.active .tab-x{opacity:.85}
@media (hover:hover){.tab .tab-x:hover{background:rgba(255,255,255,.14);opacity:1}}
.crumbs{display:flex;align-items:center;gap:2px;flex:none;height:26px;padding:0 14px;overflow:hidden;white-space:nowrap;background:var(--editor);border-bottom:1px solid var(--edge);color:var(--dim);font-size:.78rem}
.crumbs[hidden]{display:none}
.crumb{min-height:20px;height:20px;padding:0 4px;border:0;border-radius:4px;background:transparent;color:inherit;box-shadow:none;font:inherit;font-size:.78rem;font-weight:400}
@media (hover:hover){.crumb:hover:not(:disabled){color:var(--fg);background:rgba(255,255,255,.06);transform:none;box-shadow:none}}
.crumb-file{color:var(--fg)}
.crumb-sep{color:var(--dim);padding:0 2px}
.editor-stack{flex:1 1 auto;min-height:0;position:relative;overflow:auto}
.editor-host{position:absolute;inset:0;overflow:hidden;animation:fadeIn .16s var(--ease)}
.editor-host[hidden]{display:none}
.editor-host .cm-editor{height:100%}
.editor-host .cm-editor.cm-focused{outline:none}
.editor-host.show-note .cm-editor{display:none}
.editor-host .editor-note{display:none;position:absolute;inset:0;padding:22px;margin:0;color:var(--mut)}
.editor-host.show-note .editor-note{display:block}
@keyframes fadeIn{from{opacity:0}}

/* the welcome page (no file open) */
.welcome{padding:clamp(20px,5vw,44px) clamp(18px,5vw,56px);max-width:980px;animation:fadeIn .25s var(--ease)}
.welcome-top{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:4px}
.welcome-top h1{margin:0;font-size:clamp(1.5rem,3.2vw,2.1rem);background:linear-gradient(120deg,#fff 10%,#ffd0d0 60%,#ff7070);-webkit-background-clip:text;background-clip:text;color:transparent;overflow-wrap:anywhere}
.welcome-top h1 .tag{-webkit-text-fill-color:var(--mut);vertical-align:middle}
.ws-intro{margin:8px 0 18px;max-width:70ch}
.starts{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,260px),1fr));gap:12px 40px;margin:22px 0}
.start-col h2{font-size:.78rem;letter-spacing:.09em;text-transform:uppercase;color:var(--mut);margin:0 0 10px}
.start-list{list-style:none;margin:0;padding:0}
.linkish{display:flex;align-items:center;gap:10px;width:100%;min-height:36px;padding:6px 8px;margin:0 -8px;border:0;border-radius:8px;background:transparent;color:var(--ac2);box-shadow:none;font-weight:500;font-size:.92rem;justify-content:flex-start;text-align:left}
.linkish svg{color:var(--mut);flex:none}
@media (hover:hover){.linkish:hover:not(:disabled){background:rgba(255,255,255,.05);color:#fff;transform:none;box-shadow:none}.linkish:hover svg{color:var(--ac)}}
.keys{margin:0;display:grid;gap:4px}
.keys>div{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:28px;color:var(--mut);font-size:.88rem}
.keys dt{min-width:0}.keys dd{margin:0;white-space:nowrap}
details.guide>summary{cursor:pointer;list-style:none;display:flex;align-items:center;gap:10px}
details.guide>summary::-webkit-details-marker{display:none}
details.guide>summary h2{margin:0}
details.guide>summary::after{content:"";width:7px;height:7px;margin-left:auto;border:solid var(--mut);border-width:0 2px 2px 0;transform:rotate(45deg);transition:transform .2s var(--ease)}
details.guide[open]>summary::after{transform:rotate(-135deg)}
details.guide>pre{max-height:420px;margin-top:12px}

/* ---- the panel: Terminal, Preview, Output ---- */
.panel{flex:none;height:var(--panel-h);display:flex;flex-direction:column;min-height:0;background:var(--pane);border-top:1px solid var(--edge)}
.panel[hidden]{display:none}
.panel.opening{animation:panelUp .24s var(--ease)}
@keyframes panelUp{from{opacity:0;transform:translateY(16px)}}
.panel-max .panel{flex:1 1 auto;height:auto}
.panel-head{display:flex;align-items:center;justify-content:space-between;gap:8px;height:36px;flex:none;padding:0 8px 0 10px}
.ptabs{display:flex;align-items:stretch;gap:2px;height:100%;min-width:0;overflow-x:auto;scrollbar-width:none}
.ptab{position:relative;display:inline-flex;align-items:center;gap:7px;min-height:36px;height:36px;padding:0 10px;border:0;border-radius:0;background:transparent;color:var(--dim);box-shadow:none;font-size:.72rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;white-space:nowrap}
.ptab svg{width:15px;height:15px}
.ptab::after{content:"";position:absolute;left:10px;right:10px;bottom:4px;height:2px;border-radius:2px;background:var(--ac);transform:scaleX(0);transition:transform .2s var(--ease)}
.ptab.active{color:#fff}.ptab.active::after{transform:scaleX(1)}
@media (hover:hover){.ptab:hover:not(:disabled){color:var(--fg);background:transparent;transform:none;box-shadow:none}}
.out-dot{width:6px;height:6px;border-radius:50%;background:var(--ac)}
.panel-actions{display:flex;gap:2px;flex:none}
.panel:not([data-tab=terminal]) [data-term-new],.panel:not([data-tab=terminal]) [data-term-kill]{display:none}
.panel-max [data-panel-max] svg{transform:rotate(180deg)}
.panel-body{flex:1 1 auto;min-height:0;position:relative}
.pane{position:absolute;inset:0;display:flex;flex-direction:column;min-height:0;animation:fadeIn .16s var(--ease)}
.pane[hidden]{display:none}
.pane-empty{flex:1 1 auto;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;padding:18px;text-align:center;color:var(--mut)}
.pane-empty p{margin:6px 0;max-width:56ch}
.pane-empty .row{justify-content:center}
.pe-icon{display:flex;align-items:center;justify-content:center;width:46px;height:46px;border-radius:14px;background:rgba(255,59,59,.1);color:var(--ac);margin-bottom:6px}
.pane-empty[hidden]{display:none}

/* terminal */
.term-tabs{display:flex;gap:2px;flex:none;height:30px;padding:0 8px;overflow-x:auto;scrollbar-width:none;border-bottom:1px solid var(--edge)}
.term-tabs[hidden]{display:none}
.ttab{display:inline-flex;align-items:center;gap:7px;min-height:30px;height:30px;padding:0 6px 0 10px;border:0;border-radius:0;background:transparent;color:var(--dim);box-shadow:none;font:500 .78rem/1 ui-monospace,SFMono-Regular,Menlo,monospace;white-space:nowrap}
.ttab.active{color:#fff;box-shadow:inset 0 -2px 0 var(--ac)}
@media (hover:hover){.ttab:hover:not(:disabled){color:var(--fg);background:rgba(255,255,255,.04);transform:none}}
.ttab-dot{width:7px;height:7px;border-radius:50%;background:var(--dim)}
.ttab[data-state=open] .ttab-dot{background:var(--ac);box-shadow:0 0 8px rgba(255,59,59,.6)}
.ttab[data-state=connecting] .ttab-dot,.ttab[data-state=retrying] .ttab-dot{background:var(--ac2);animation:blink 1s steps(2) infinite}
@keyframes blink{50%{opacity:.25}}
.ttab-state{color:var(--dim);font-size:.7rem}
.ttab.active .ttab-state{color:var(--mut)}
.ttab-x{display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;border-radius:4px;opacity:.5}
@media (hover:hover){.ttab-x:hover{background:rgba(255,255,255,.12);opacity:1}}
.term-stack{flex:1 1 auto;min-height:0;position:relative}
.term-host{position:absolute;inset:0;padding:6px 4px 4px 12px;background:#0b0b0e}
.term-host[hidden]{display:none}
.term-host .xterm{height:100%}
.term-host .xterm-viewport{scrollbar-width:thin;scrollbar-color:rgba(255,255,255,.16) transparent}
.term-empty{position:absolute;inset:0}
.term-keys{display:none}

/* preview */
.pv-bar{display:flex;align-items:center;gap:6px;flex:none;padding:6px 10px;border-bottom:1px solid var(--edge);flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none}
.pv-port{display:flex;align-items:center;gap:6px;margin:0;font-weight:600;font-size:.76rem;color:var(--mut);flex:none}
.pv-bar input{min-height:28px;height:28px;margin:0;padding:3px 8px;border-radius:7px;background:rgba(0,0,0,.4)}
@media (min-width:768px){.ide-root .pv-bar input{font-size:.84rem}}
#pvport{width:9ch;font-variant-numeric:tabular-nums}
.pv-path{flex:1 1 12em;min-width:6em}
.pv-picks{display:flex;gap:4px;flex:none}
.chip{min-height:26px;height:26px;padding:0 9px;border:1px solid var(--bd);border-radius:99px;background:transparent;color:var(--mut);box-shadow:none;font-size:.76rem;font-weight:600;font-variant-numeric:tabular-nums}
.chip[aria-pressed=true]{border-color:rgba(255,59,59,.6);background:var(--ac-soft);color:#fff}
@media (hover:hover){.chip:hover:not(:disabled){border-color:var(--bd3);color:var(--fg);background:rgba(255,255,255,.05);transform:none;box-shadow:none}}
.pv-frame{flex:1 1 auto;min-height:0;position:relative;display:flex;flex-direction:column}
#pvframe{flex:1 1 auto;width:100%;min-height:0;border:0;background:#fff}

/* output */
.output{list-style:none;margin:0;padding:8px 14px;overflow:auto;flex:1 1 auto;font:12.5px/1.6 ui-monospace,SFMono-Regular,Menlo,monospace;color:var(--fg)}
.output li{white-space:pre-wrap;overflow-wrap:anywhere}
.output time{color:var(--dim)}
.output .out-ok{color:var(--mut)}
.output .out-err{color:var(--ac2)}
.output:empty::before{content:"Nothing has happened yet: starting a sandbox, its terminals and its preview are logged here.";color:var(--dim)}

/* ---- Run & sandboxes ---- */
.engines{display:grid;grid-template-columns:repeat(auto-fill,minmax(118px,1fr));gap:8px}
.engine{position:relative;display:grid;gap:2px;margin:0;padding:10px 12px;border:1px solid var(--bd);border-radius:11px;background:rgba(255,255,255,.025);cursor:pointer;font-weight:400;transition:border-color .16s var(--ease),background-color .16s var(--ease),transform .16s var(--spring)}
.engine input{position:absolute;inset:0;width:100%;height:100%;min-height:0;margin:0;opacity:0;cursor:pointer}
.en-name{font-weight:700;color:var(--fg)}
.en-spec{font-size:.76rem;color:var(--mut)}
.en-price{font-size:.78rem;color:var(--ac2);font-weight:600;font-variant-numeric:tabular-nums}
.engine:has(input:checked){border-color:var(--ac);background:linear-gradient(160deg,rgba(255,59,59,.16),rgba(255,59,59,.04));box-shadow:0 0 0 1px rgba(255,59,59,.35) inset}
.engine:has(input:focus-visible){outline:2px solid var(--ac2);outline-offset:2px}
@media (hover:hover){.engine:hover{border-color:var(--bd3)}}
.engine:active{transform:scale(.98)}
.run-go{margin:14px 0 8px}
.run-start{width:100%;min-height:40px}
.run-start svg{width:16px;height:16px;fill:currentColor}
.run-progress{margin:10px 0 4px}
.rp-bar{height:4px;border-radius:99px;background:rgba(255,255,255,.08);overflow:hidden}
.rp-bar i{display:block;height:100%;background:var(--grad);transform-origin:left;transform:scaleX(0);transition:transform .25s linear;box-shadow:0 0 12px rgba(255,59,59,.6)}
.rp-line{display:flex;justify-content:space-between;gap:10px;margin-top:6px;font-size:.8rem;color:var(--mut)}
.rp-time{font-variant-numeric:tabular-nums}
.sessions{list-style:none;margin:0;padding:0;display:grid;gap:8px}
.sess{padding:10px 12px;border:1px solid var(--bd);border-radius:11px;background:rgba(255,255,255,.025);cursor:pointer;animation:pop .25s var(--ease) both}
.sess.on{border-color:rgba(255,59,59,.55)}
.sess-top{display:flex;align-items:center;gap:8px}
.sess-time{margin-left:auto;font-variant-numeric:tabular-nums;color:var(--fg);font-size:.86rem}
.sess-cost{font-size:.78rem;margin-top:2px;font-variant-numeric:tabular-nums}
.sess-acts{margin:8px 0 0;gap:6px}
.sess-acts button{min-height:30px;padding:4px 10px;font-size:.78rem}
.dot{width:8px;height:8px;border-radius:50%;background:var(--dim);flex:none}
.dot.live{background:var(--ac);animation:livepulse 2s var(--ease) infinite}
@keyframes livepulse{0%{box-shadow:0 0 0 0 rgba(255,59,59,.6)}70%{box-shadow:0 0 0 6px rgba(255,59,59,0)}100%{box-shadow:0 0 0 0 rgba(255,59,59,0)}}
.sess-empty{padding:10px 0;font-size:.88rem}
.note{margin:16px 0 6px;padding:10px 12px;border-left:2px solid var(--ac);background:rgba(255,59,59,.06);border-radius:0 8px 8px 0;font-size:.86rem;color:var(--fg)}
.run-state{margin:4px 0 10px}
/* changes in a sandbox: the Run view's list, Source Control's item, and Stop's sheet */
.changes{margin:6px 0 0}
.ch-head{display:flex;align-items:center;justify-content:space-between;gap:8px}
.ch-head .side-sub{display:flex;align-items:center;gap:6px}
.ch-head button{min-height:30px;padding:4px 12px;font-size:.78rem}
.ch-count{display:inline-grid;place-items:center;min-width:18px;height:18px;padding:0 5px;border-radius:99px;background:var(--ac);color:var(--ac-ink);font-size:.68rem;font-weight:700;letter-spacing:0;font-variant-numeric:tabular-nums}
.ch-list,.ch-pending{list-style:none;margin:8px 0 0;padding:0;display:grid;gap:6px}
.ch-list li{display:flex;flex-wrap:wrap;align-items:center;gap:6px;padding:6px 8px;border:1px solid var(--bd);border-radius:9px;background:rgba(255,255,255,.025)}
.ch-row{display:flex;align-items:center;gap:8px;flex:1 1 0;min-width:0;margin:0;cursor:pointer;font-size:.84rem}
.ch-row input{width:16px;height:16px;min-height:0;margin:0;flex:none;accent-color:var(--ac)}
.ch-st{flex:none;width:18px;text-align:center;font:700 .74rem/1 ui-monospace,SFMono-Regular,Menlo,monospace;color:var(--mut)}
.ch-st.ch-added{color:var(--fg)}.ch-st.ch-modified{color:var(--ac2)}.ch-st.ch-deleted{color:var(--dang2)}
.ch-path{flex:1 1 auto;min-width:0;overflow-wrap:anywhere;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.8rem;color:var(--fg)}
.ch-size{flex:none;font-size:.74rem;font-variant-numeric:tabular-nums}
.ch-list button[data-diff]{min-height:28px;padding:2px 9px;font-size:.74rem}
.ch-list .diffbox{flex-basis:100%;min-width:0}
.ch-list pre.diff{max-height:240px;font-size:12px}
.ch-acts{margin:10px 0 0;gap:6px}
.ch-pending li{padding:8px 10px;border:1px solid var(--bd2);border-radius:9px;font-size:.84rem;background:rgba(255,59,59,.05)}
.ch-pending .row{margin:6px 0 0;gap:6px}
.scm-sync{margin:0 0 12px}
.scm-item{display:flex;align-items:center;gap:8px;width:100%;justify-content:flex-start;min-height:38px}
.scm-item .ch-count{margin-left:auto}
.statusbar .sb-sync{color:var(--fg)}
.statusbar .sb-sync::before{content:"\2191";color:var(--mut)}
.statusbar .sb-sync.bad{color:var(--dang2)}
.statusbar .sb-sync.bad::before{content:"!";color:var(--dang2);font-weight:700}
dialog.stop-sheet{width:min(560px,calc(100vw - 16px))}
dialog.stop-sheet [data-list]{max-height:min(46vh,380px);overflow:auto;margin:8px 0 0}
dialog.stop-sheet .row{flex-wrap:wrap}
/* the command line's page */
pre.cli-line{user-select:all;-webkit-user-select:all;max-height:none;font-size:13px}
dl.cli-facts{display:grid;grid-template-columns:max-content 1fr;gap:6px 16px;margin:8px 0}
dl.cli-facts dt{color:var(--mut)}dl.cli-facts dd{margin:0;overflow-wrap:anywhere}
table.cli-cmds{width:100%;border-collapse:collapse;font-size:.9rem}
table.cli-cmds td{padding:7px 8px;border-top:1px solid var(--bd);vertical-align:top}
table.cli-cmds td:first-child{white-space:nowrap}
@media (max-width:600px){table.cli-cmds td{display:block;border-top:0;padding:2px 0}table.cli-cmds tr{display:block;padding:8px 0;border-top:1px solid var(--bd)}table.cli-cmds td:first-child{white-space:normal}}

/* ---- status bar ---- */
.statusbar{display:flex;align-items:center;gap:2px;height:24px;padding:0;background:var(--chrome);border-top:1px solid var(--edge);color:var(--mut);font-size:.72rem;flex:none;white-space:nowrap;overflow:hidden}
.statusbar .sb-item{display:inline-flex;align-items:center;gap:6px;height:100%;padding:0 9px;min-width:0}
.statusbar .sb-item[hidden]{display:none}
.statusbar .sb-spacer{flex:1 1 auto}
.sb-brand{background:var(--grad);color:#fff;font-weight:700;padding:0 12px!important;letter-spacing:.02em}
.sb-btn{min-height:24px;height:24px;border:0;border-radius:0;background:transparent;color:inherit;box-shadow:none;font:inherit;font-weight:500}
@media (hover:hover){.sb-btn:hover:not(:disabled){background:rgba(255,255,255,.07);color:var(--fg);transform:none;box-shadow:none}}
.sb-dim{color:var(--dim)}
.statusbar .sb-item[data-sb=dirty]{color:var(--ac2)}
.statusbar .sb-item[data-sb=saved]::before{content:"✓";color:var(--mut)}
.sb-run{color:var(--fg)}
.sb-dot{width:7px;height:7px;border-radius:50%;background:var(--ac);animation:livepulse 2s var(--ease) infinite}
.sb-run.starting .sb-dot{animation:blink 1s steps(2) infinite}
.sb-run [data-sb-timer],.sb-run [data-sb-est]{font-variant-numeric:tabular-nums}

/* ---- command palette ---- */
.palette{position:fixed;inset:0;z-index:60;display:flex;justify-content:center;align-items:flex-start;padding-top:9vh;background:rgba(3,3,5,.55);backdrop-filter:blur(3px);-webkit-backdrop-filter:blur(3px);animation:fadeIn .14s var(--ease)}
.palette[hidden]{display:none}
.palette-box{width:min(640px,94vw);max-height:68vh;display:flex;flex-direction:column;background:rgba(18,18,22,.98);border:1px solid var(--bd2);border-radius:var(--r2);box-shadow:var(--sh3),0 0 0 1px rgba(255,59,59,.12);overflow:hidden;animation:palIn .2s var(--spring) both}
@keyframes palIn{from{opacity:0;transform:translateY(-8px) scale(.98)}}
#palette-input{margin:0;border:0;border-bottom:1px solid var(--bd);border-radius:0;background:transparent;min-height:50px;font-size:1rem;padding:12px 16px}
#palette-input:focus{box-shadow:none}
#palette-list{list-style:none;margin:0;padding:6px;overflow:auto;min-height:0}
#palette-list li{display:flex;justify-content:space-between;align-items:center;gap:12px;min-height:36px;padding:7px 12px;border-radius:8px;cursor:pointer;color:var(--fg);font-size:.92rem}
#palette-list li .pl-hint{color:var(--dim);font-size:.78rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:45%}
#palette-list li.sel{background:var(--ac-soft);color:#fff;box-shadow:inset 2px 0 0 var(--ac)}
@media (hover:hover){#palette-list li:hover{background:rgba(255,255,255,.05)}#palette-list li.sel:hover{background:var(--ac-soft)}}
#palette-list li.sel .pl-hint{color:var(--ac2)}
#palette-list .pl-none{cursor:default}
.palette-foot{display:flex;flex-wrap:wrap;gap:6px 16px;margin:0;padding:8px 14px;border-top:1px solid var(--edge);color:var(--dim);font-size:.74rem}
.palette-foot span{display:inline-flex;align-items:center;gap:5px}

/* the phone's More sheet (hidden on wide screens: everything is in the bars there) */
.more{display:none}

/* =========================================================================================================
   PHONE (<=767px): a real phone IDE — a bottom tab bar (Files, Code, Terminal, Preview, More), one full-height
   pane at a time (data-pane: side, editor or panel), a terminal key row, 44 px targets, the safe areas respected.
   ========================================================================================================= */
@media (max-width:767px){
  .ide-root{--bar:62px;padding-bottom:calc(var(--bar) + env(safe-area-inset-bottom))}
  .titlebar{grid-template-columns:auto minmax(0,1fr) auto;gap:6px;height:auto;min-height:52px;padding:max(4px,env(safe-area-inset-top)) max(8px,env(safe-area-inset-right)) 4px max(8px,env(safe-area-inset-left))}
  .tb-brand{min-height:44px;min-width:44px;justify-content:center;padding:0}
  .tb-brand span,.tb-kbd{display:none}
  .tb-command{min-height:44px;height:44px;justify-content:flex-start;border-radius:12px}
  .tb-run{min-height:44px;height:44px;min-width:44px;justify-content:center;padding:0 12px}
  .tb-run-text{display:none}
  .tb-run{padding:0;width:44px}
  .titlebar .acct .btn,.titlebar .acct summary{min-height:44px;padding:8px 12px}
  .titlebar .acct summary{max-width:34vw;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:block;line-height:28px}
  .titlebar .menu summary::after{display:none}
  .ide{display:block;flex:1 1 auto;min-height:0;position:relative}

  /* the bottom tab bar */
  .ide>.activity{position:fixed;left:0;right:0;bottom:0;z-index:40;flex-direction:row;align-items:stretch;justify-content:space-around;gap:2px;
    padding:6px max(6px,env(safe-area-inset-right)) calc(6px + env(safe-area-inset-bottom)) max(6px,env(safe-area-inset-left));border-right:0;border-top:1px solid var(--edge);
    background:rgba(10,10,13,.92);backdrop-filter:blur(18px) saturate(1.3);-webkit-backdrop-filter:blur(18px) saturate(1.3);box-shadow:0 -8px 30px rgba(0,0,0,.45)}
  .ide>.activity .act-desk,.ide>.activity .act-gap{display:none!important}
  .ide>.activity .act-phone{display:flex}
  .ide>.activity .act-item{flex:1 1 0;min-width:0;width:auto;height:50px;min-height:50px;border-radius:12px;flex-direction:column;align-items:center;justify-content:center;gap:3px}
  .ide>.activity .act-item svg{width:21px;height:21px}
  .ide>.activity .act-item::before{left:30%;right:30%;top:-7px;bottom:auto;width:auto;height:2px;transform:scaleX(0)}
  .ide>.activity .act-item.active::before{transform:scaleX(1)}
  .ide>.activity .act-label{display:block;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.62rem;line-height:1;font-weight:600;letter-spacing:.01em}

  /* one pane at a time, each the full height between the bars */
  .side,.main,.sash{display:none}
  .side{position:absolute;inset:0;border-right:0}
  .main{position:absolute;inset:0}
  .ide-root[data-pane=side] .side{display:flex;animation:slideOver .26s var(--ease)}
  .ide-root[data-pane=editor] .main,.ide-root[data-pane=panel] .main{display:flex;animation:fadeUp .22s var(--ease)}
  .ide-root[data-pane=editor] .panel{display:none}
  .ide-root[data-pane=panel] .editor-area{display:none}
  .ide-root[data-pane=panel] .panel{display:flex;flex:1 1 auto;height:auto;border-top:0}
  .side-head{height:44px}
  .side-scroll{padding:0 14px 28px}
  details.sect{margin:0 -14px}
  details.sect>summary{min-height:44px;padding:0 14px 0 10px}
  .sect-body{padding:4px 14px 16px}
  .ws-actions button,.ws-actions .btn{min-height:44px}
  .ide-root .side-tools button,.icon-btn{min-height:44px;min-width:44px;height:44px}
  .tab{min-height:44px;height:44px}
  .tab .tab-x{width:32px;height:32px;min-height:32px;min-width:32px}
  .crumb{min-height:28px}
  .crumbs{height:32px}
  .editor-host .cm-editor{font-size:14px}
  .linkish{min-height:44px}
  .panel-head{height:44px;padding:0 4px 0 6px}
  .ptab{min-height:44px;height:44px;padding:0 9px}
  .ptab span{display:none}.ptab.active span{display:inline}
  .panel-actions [data-panel-max],.panel-actions [data-panel-close]{display:none}
  .ttab{min-height:44px;height:44px}
  .term-tabs{height:44px}
  .ttab-x{width:32px;height:32px}
  .pv-bar{padding:6px 8px;gap:6px;flex-wrap:wrap}
  .pv-picks{order:5;flex-basis:100%;overflow-x:auto;scrollbar-width:none}
  .pv-bar input,.chip{min-height:44px;height:44px}
  .pv-path{flex:1 1 0;min-width:0}
  #pvport{width:7ch}
  .pv-port span{display:none}
  .sess-acts button{min-height:44px}
  .ch-head button,.ch-list button[data-diff],.ch-acts button,.ch-pending button,.scm-item{min-height:44px}
  .ch-row{min-height:44px}
  .ch-row input{width:20px;height:20px}
  .chip{padding:0 12px}
  /* the terminal key row, above the keyboard */
  .term-keys{display:flex;gap:6px;flex:none;padding:6px 8px calc(6px);overflow-x:auto;scrollbar-width:none;border-top:1px solid var(--edge);background:var(--chrome)}
  .term-keys button{flex:none;min-width:44px;min-height:44px;height:44px;padding:0 12px;border:1px solid var(--bd);border-radius:10px;background:rgba(255,255,255,.05);color:var(--fg);box-shadow:none;font:600 .9rem/1 ui-monospace,SFMono-Regular,Menlo,monospace}
  .term-keys button[aria-pressed=true]{border-color:var(--ac);background:var(--ac-soft);color:#fff}
  .pane[data-pane-tab=terminal]:has(.term-empty:not([hidden])) .term-keys{display:none}
  .statusbar{display:none}
  .welcome{padding:22px 16px 28px}
  /* More: a sheet above the tab bar */
  .more{display:block;position:fixed;left:8px;right:8px;bottom:calc(var(--bar) + 8px + env(safe-area-inset-bottom));z-index:45;padding:10px;border:1px solid var(--bd2);border-radius:18px;background:rgba(18,18,22,.97);box-shadow:var(--sh3);animation:sheetUp .22s var(--spring) both}
  .more[hidden]{display:none}
  .more-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px}
  .more-grid button{flex-direction:column;gap:6px;min-height:72px;padding:10px 6px;border:1px solid var(--edge);border-radius:13px;background:rgba(255,255,255,.04);color:var(--fg);box-shadow:none;font-size:.78rem;font-weight:600}
  .more-grid button svg{color:var(--ac)}
  @keyframes sheetUp{from{opacity:0;transform:translateY(14px)}}
  @keyframes slideOver{from{opacity:0;transform:translateX(-14px)}}
  @keyframes fadeUp{from{opacity:0;transform:translateY(10px)}}
  .palette{padding-top:max(10px,env(safe-area-inset-top))}
  .palette-box{max-height:calc(100dvh - var(--bar) - 30px)}
  #palette-list li{min-height:44px}
  .palette-foot{display:none}
}

/* wide screens: a touch more room */
@media (min-width:1400px){.ide-root{font-size:14.5px}}

/* ---- Copilot: the right-hand column on a wide screen (--cp-w, opened by public/ws.js), its own pane on a phone ---- */
.copilot{display:flex;flex-direction:column;min-width:0;min-height:0;background:var(--chrome2);border-left:1px solid var(--edge);animation:viewIn .2s var(--ease)}
.cp-head{display:flex;align-items:center;justify-content:space-between;gap:8px;height:36px;padding:0 6px 0 14px;flex:none;border-bottom:1px solid var(--edge)}
.cp-title{display:inline-flex;align-items:center;gap:8px;font-size:.72rem;letter-spacing:.09em;text-transform:uppercase;font-weight:700;color:var(--mut)}
.cp-title svg{color:var(--ac)}
.cp-tools{display:flex;gap:2px}
.cp-controls{display:flex;flex-direction:column;gap:8px;padding:10px 12px;border-bottom:1px solid var(--edge);flex:none}
.cp-seg{display:flex;gap:2px;padding:2px;border:1px solid var(--edge);border-radius:10px;background:rgba(0,0,0,.25)}
.cp-seg .seg{flex:1 1 0;min-height:30px;height:30px;padding:0 8px;border:0;border-radius:8px;background:transparent;color:var(--mut);box-shadow:none;font-size:.8rem;font-weight:600}
.cp-seg .seg[aria-pressed="true"]{background:rgba(255,59,59,.16);color:#fff;box-shadow:inset 0 0 0 1px rgba(255,59,59,.45)}
@media (hover:hover){.cp-seg .seg:hover:not([aria-pressed="true"]){background:rgba(255,255,255,.05);color:var(--fg);transform:none;box-shadow:none}}
.cp-pick,.cp-knobs{display:grid;grid-template-columns:1fr 1fr;gap:8px;align-items:end}
.cp-knobs{grid-template-columns:auto 1fr auto}
.cp-cmd{grid-column:1/-1;display:flex;align-items:center;gap:8px}.cp-cmd select{width:auto;flex:1 1 auto}
.cp-pick label,.cp-knobs label{display:flex;flex-direction:column;gap:3px;margin:0;font-size:.7rem;letter-spacing:.06em;text-transform:uppercase;color:var(--dim);min-width:0}
.cp-pick select,.cp-knobs select,.cp-budget input{min-height:32px;padding:4px 8px;font-size:.82rem;text-transform:none;letter-spacing:0;width:100%;min-width:0;text-overflow:ellipsis}
.cp-speed{align-self:end}
.cp-budget{max-width:96px}.cp-budget small{display:none}
.cp-pins{display:flex;flex-wrap:wrap;gap:4px}.cp-pins:empty{display:none}
.cp-pick:has(label[hidden]){grid-template-columns:1fr}
.cp-set{flex:none}
.cp-sum{display:none}
.cp-hist{max-height:40%;overflow:auto;padding:8px 12px;border-bottom:1px solid var(--edge);background:rgba(0,0,0,.25)}
.cp-hist ul{list-style:none;margin:0;padding:0}.cp-hist li{display:flex;flex-direction:column;padding:4px 0}
.cp-hist .cur{color:#fff;font-weight:700}
.cp-log{flex:1 1 auto;overflow:auto;padding:12px;display:flex;flex-direction:column;gap:10px;min-height:0;scrollbar-width:thin;scrollbar-color:rgba(255,255,255,.14) transparent}
.cp-empty{margin:auto 0;padding:12px;text-align:left;color:var(--mut)}
.cp-msg{max-width:100%;font-size:.88rem;line-height:1.5;overflow-wrap:anywhere}
.cp-user{align-self:flex-end;max-width:88%;padding:8px 12px;border-radius:14px 14px 4px 14px;background:rgba(255,59,59,.13);border:1px solid rgba(255,59,59,.3)}
.cp-assistant{padding:2px 0}
.cp-note .cp-body,.cp-error .cp-body{padding:8px 12px;border-radius:10px;border:1px dashed var(--bd2);color:var(--mut);font-size:.82rem}
.cp-error .cp-body{border-style:solid;border-color:rgba(255,90,107,.5);background:var(--dang-soft);color:#fff}
.cp-body p{margin:0 0 .5em}.cp-body p:last-child{margin-bottom:0}
.cp-body code{font-size:.82em;padding:1px 4px;border-radius:4px;background:rgba(255,255,255,.08)}
.cp-body pre.md-code{margin:.5em 0;padding:8px 10px;border-radius:8px;background:#0a0a0d;border:1px solid var(--edge);overflow:auto;font-size:.8rem}
.cp-body pre.md-code code{padding:0;background:none}
.cp-body ul,.cp-body ol{margin:.3em 0 .5em;padding-left:1.3em}
.cp-body .md-h{margin:.6em 0 .3em;font-size:.92rem}
.cp-route{margin-bottom:4px}
.cp-reason{margin:0 0 6px;font-size:.78rem;color:var(--dim)}
.cp-reason pre{white-space:pre-wrap;max-height:180px;overflow:auto;margin:4px 0 0;font-size:.76rem;color:var(--dim)}
.cp-steps{list-style:none;margin:0;padding:6px 10px;border-left:2px solid rgba(255,59,59,.45);display:flex;flex-direction:column;gap:3px;font-size:.78rem;color:var(--mut)}
.cp-tool-name{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.72rem;color:var(--dim)}
.cp-tool.err{color:var(--dang2)}
.cp-out{max-height:160px;overflow:auto;white-space:pre-wrap;font-size:.74rem;background:#0a0a0d;border:1px solid var(--edge);border-radius:6px;padding:6px 8px}
.cp-step{color:var(--fg)}
.cp-cards{display:flex;flex-direction:column;gap:8px}
.cp-card{border:1px solid var(--bd);border-radius:10px;background:rgba(255,255,255,.025);overflow:hidden}
.cp-card-head{display:flex;justify-content:space-between;gap:8px;padding:7px 10px;font-size:.8rem;font-weight:600;border-bottom:1px solid var(--edge);font-family:ui-monospace,SFMono-Regular,Menlo,monospace;overflow-wrap:anywhere}
.cp-stat .add{color:#fff}.cp-stat .del{color:var(--dang2)}
.cp-card pre.diff{margin:0;max-height:260px;overflow:auto;font-size:12px;padding:6px 0}
.cp-card pre.diff span{padding:0 10px}
.cp-card .row{padding:8px 10px;margin:0}
.cp-status{padding:6px 10px;margin:0}
.cp-cost{margin:0;font-size:.74rem;color:var(--dim);font-variant-numeric:tabular-nums}
.cp-handoff dl{display:grid;grid-template-columns:auto 1fr;gap:2px 10px;margin:6px 0 0;font-size:.78rem}
.cp-handoff dt{color:var(--dim)}.cp-handoff dd{margin:0;color:var(--fg)}
.cp-jobs{padding:0 12px 6px;flex:none;max-height:30%;overflow:auto}
.cp-joblist{list-style:none;margin:0;padding:0}.cp-joblist li{display:flex;align-items:center;gap:8px;justify-content:space-between;padding:3px 0;font-size:.8rem}
.cp-msg.hint,.cp-msg{flex:none}
#cpmsg{margin:0 12px 6px}
.cp-compose{flex:none;margin:0;padding:10px 12px;border-top:1px solid var(--edge);background:var(--chrome)}
.cp-compose textarea{width:100%;min-height:64px;max-height:40vh;resize:vertical;font-size:.88rem}
.cp-foot{display:flex;flex-wrap:wrap;align-items:center;gap:6px 10px;margin-top:6px}
.cp-est{font-size:.8rem;font-weight:600;color:#fff;font-variant-numeric:tabular-nums}
.cp-free{flex:1 1 auto}
.cp-bg{display:flex;align-items:center;gap:6px;margin:0;font-size:.78rem;color:var(--mut);flex-basis:100%}
.cp-bg input{width:auto;min-height:0}
.cp-go{display:flex;gap:6px;margin-left:auto}
.cp-go button{display:inline-flex;align-items:center;gap:6px;min-height:34px}
.cp-legal{margin:0;padding:0 12px 8px;background:var(--chrome)}
.tb-ai{display:inline-flex;align-items:center;gap:7px;min-height:30px;height:30px;padding:0 12px 0 10px;border:1px solid var(--bd2);border-radius:99px;background:transparent;color:var(--fg);box-shadow:none;font-size:.82rem;font-weight:600;white-space:nowrap}
.tb-ai svg{color:var(--ac)}
.tb-ai[aria-expanded="true"]{border-color:rgba(255,59,59,.55);background:rgba(255,59,59,.12)}
.act-item.has-news::after{content:"";position:absolute;top:9px;right:9px;width:8px;height:8px;border-radius:50%;background:var(--ac);box-shadow:0 0 0 2px var(--chrome)}
#aikeys .keys{list-style:none;margin:0 0 8px;padding:0;display:flex;flex-direction:column;gap:6px}
#aikeys .keys li{display:flex;flex-wrap:wrap;align-items:center;gap:6px}
#aikeys .key-name{flex:1 1 100%;font-weight:600;font-size:.86rem}
#aikeys .keys input{flex:1 1 140px;min-width:0;min-height:34px;font-size:.84rem}
#aikeys .limits{display:flex;flex-direction:column;gap:8px;margin-top:12px}
#aikeys .lim{display:flex;flex-wrap:wrap;align-items:center;gap:6px;font-size:.86rem}
#aikeys .lim input{flex:0 1 110px;min-width:0;min-height:34px;font-size:.84rem}
#aikeys .lim small{flex:1 1 100%}
.privacy-list li{margin:.4em 0;color:var(--mut)}
/* the plan meter in the Copilot panel: the plan's name, its 5-hour and weekly use, what happens at a limit */
.cp-plan{flex:none;padding:8px 12px;border-bottom:1px solid var(--edge);font-size:.78rem}
.cp-plan p{margin:0}
.cp-plan-head{display:flex;justify-content:space-between;align-items:baseline;gap:8px;margin-bottom:4px}
.cp-plan-bar{display:grid;grid-template-columns:5.2em 1fr auto;align-items:center;gap:8px;min-height:20px;font-variant-numeric:tabular-nums}
.cp-plan-bar progress{height:6px;margin:0}
.cp-plan-bar small{white-space:nowrap;min-width:14em;text-align:right}
.cp-plan .cp-plan-paused{color:#ffb0b0}
/* the Plans page: Monthly or Yearly, the account's plan, the four tiers (one column on a phone, two from 600px) */
.plans-cycle{max-width:420px;margin:0 0 6px}.plans-cycle .seg{white-space:nowrap}
.plans-grid{display:grid;grid-template-columns:1fr;gap:0 14px}
@media (min-width:600px){.plans-grid{grid-template-columns:1fr 1fr}}
.plan{display:flex;flex-direction:column}
.plan.mine{border-color:rgba(255,59,59,.55);box-shadow:var(--glow)}
.plan-price{margin:0 0 8px;font-size:1.02rem}.plan-price b{font-size:1.3rem;color:#fff}
.plans-grid[data-cycle="month"] .plan-price .y,.plans-grid[data-cycle="year"] .plan-price .m{display:none}
.plan-inc{margin:0 0 12px;padding-left:1.2em;color:var(--mut);flex:1 1 auto}
.plan-inc li{margin:.2em 0}
.plan .row{margin-top:auto}
.plans-cur .plan-bar{margin:6px 0}
.plan-bar-head{display:flex;justify-content:space-between;gap:10px;font-size:.88rem;font-variant-numeric:tabular-nums}
.plan-bar progress{margin:4px 0 0}
.plan-at{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:12px 0 4px;font-size:.88rem}
.plan-at select{width:auto;flex:1 1 220px}
.plan-paused{color:#ffb0b0;margin:6px 0}
@media (max-width:767px){
  .copilot{position:absolute;inset:0;border-left:0;display:none}
  .ide-root[data-pane=copilot] .copilot{display:flex;animation:fadeUp .22s var(--ease)}
  .cp-head{height:44px}
  /* on a phone the settings fold into one line (mode · model · reasoning · speed) that opens them */
  .cp-sum{display:flex;align-items:center;min-height:44px;padding:0 14px;border-bottom:1px solid var(--edge);font-size:.82rem;color:var(--mut);cursor:pointer;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}
  .cp-set[open] .cp-sum{color:#fff}
  .cp-head .icon-btn{min-height:44px;min-width:44px;height:44px}
  .cp-seg .seg{min-height:44px;height:44px}
  .cp-pick select,.cp-knobs select,.cp-budget input{min-height:44px;font-size:16px}
  .cp-knobs{grid-template-columns:1fr 1fr}
  .cp-speed{grid-column:1/-1;order:-1}
  .cp-go button,.cp-card button,.cp-joblist button,#aikeys button{min-height:44px}
  #aikeys .lim input,#aikeys .keys input{min-height:44px;font-size:16px}
  .cp-compose textarea{font-size:16px}
  .tb-ai{min-height:44px;height:44px;width:44px;padding:0;justify-content:center}
  .tb-ai .tb-run-text{display:none}
}

/* ---- motion off: everything static, and the "hold still" toggle is unneeded ---- */
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}
  #bgtoggle{display:none}
}
