/* The design studio: levels down the left, your brief and CSS in the middle, the boards on a cutting mat on the right. */
.studio{display:grid;grid-template-columns:236px minmax(340px,430px) minmax(0,1fr);min-height:calc(100vh - 57px);align-items:start}

/* levels */
.map{position:sticky;top:57px;max-height:calc(100vh - 57px);overflow:auto;padding:18px 12px 24px;border-right:1px solid var(--line);background:var(--panel)}
.map .map-back{display:flex;align-items:center;gap:8px;margin:0 6px 16px;padding:8px 10px;border-radius:8px;border:1px solid var(--line);background:var(--card);font:600 12.5px var(--f-body);color:var(--ink);text-decoration:none;transition:border-color .2s}
.map .map-back:hover{border-color:var(--kc)}
.map .map-back i{font-style:normal;color:var(--kc);transition:transform .2s}
.map .map-back:hover i{transform:translateX(-3px)}
.map-h{display:flex;justify-content:space-between;margin:0 6px 12px;font:600 11px var(--f-mono);letter-spacing:.09em;text-transform:uppercase;color:var(--muted)}
.map-h span{color:var(--kc);letter-spacing:0}
.map ol{list-style:none;margin:0;padding:0;display:grid;gap:2px}
.map .course{display:flex;justify-content:space-between;align-items:baseline;gap:8px;margin:14px 6px 4px;font:600 11px var(--f-mono);letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}
.map .course:first-child{margin-top:0}
.map .course b{font-weight:600;color:var(--ink)}
.map .course.here b{color:var(--kc)}
.map .course span{letter-spacing:0}
.map a{display:grid;grid-template-columns:66px minmax(0,1fr) auto;align-items:center;gap:10px;padding:7px 6px;border-radius:8px;text-decoration:none;color:var(--ink);transition:background .2s}
.map a:hover{background:var(--soft)}
.map a.cur{background:color-mix(in srgb,var(--kc) 14%,var(--card))}
.map .th{width:66px;aspect-ratio:3/2;border-radius:4px;overflow:hidden;background:var(--soft);box-shadow:0 0 0 1px var(--line)}
.map .th img{display:block;width:100%;height:100%;object-fit:cover}
.map a.cur .th{box-shadow:0 0 0 2px var(--kc)}
.map .nm{font:500 13.5px/1.25 var(--f-body)}
.map .nm small{display:block;font:600 10.5px var(--f-mono);color:var(--kc);margin-bottom:2px}
.map .st{font:600 11px var(--f-mono);color:var(--muted)}
.map a.done .st{color:var(--ok)}

/* the desk */
.desk{padding:26px 24px 40px;border-right:1px solid var(--line);min-width:0}
.brief .lvl{display:flex;justify-content:space-between;gap:12px;margin:0;font:600 11px var(--f-mono);letter-spacing:.09em;text-transform:uppercase;color:var(--kc)}
.brief h1{margin:6px 0 10px;font:400 40px/1 var(--f-serif);letter-spacing:-.01em}
.brief .ask{margin:0 0 12px;font-size:15.5px;line-height:1.55;text-wrap:pretty}
.brief .idea{position:relative;margin:0 0 20px;padding-left:17px;font-size:13.5px;line-height:1.55;color:var(--muted)}
.brief .idea::before{content:"";position:absolute;left:0;top:.55em;width:7px;height:7px;background:var(--kc)}
.brief .swt{display:inline-flex;align-items:center;gap:5px;font:12.5px var(--f-mono);white-space:nowrap;margin:3px 6px 0 0}
.brief .swt::before{content:"";width:12px;height:12px;border-radius:3px;background:var(--s);box-shadow:0 0 0 1px var(--line)}

/* the editor: a tab, the code with a band on the line you're on, and a status line. No scrollbars anywhere: it scrolls, quietly. */
.edwrap{border:1px solid var(--line);border-radius:12px;overflow:hidden;background:var(--code-bg);box-shadow:0 1px 0 var(--line),0 14px 30px -24px rgba(0,0,0,.5);transition:border-color .2s,box-shadow .2s}
.edwrap:focus-within{border-color:color-mix(in srgb,var(--kc) 70%,var(--line));box-shadow:0 0 0 3px color-mix(in srgb,var(--kc) 18%,transparent),0 14px 30px -24px rgba(0,0,0,.5)}
.edhead{display:flex;align-items:flex-end;gap:8px;padding:8px 8px 0 10px;border:1px solid var(--line);border-bottom:0;border-radius:12px 12px 0 0;background:var(--panel);margin-bottom:-1px;position:relative;z-index:1}
.edhead+.edwrap{border-top-left-radius:0;border-top-right-radius:0}
.edhead .tab{display:inline-flex;align-items:center;gap:8px;padding:7px 14px 8px;margin-bottom:-1px;border:1px solid var(--line);border-bottom-color:var(--code-bg);border-radius:8px 8px 0 0;background:var(--code-bg);font:600 12px var(--f-mono);color:var(--ink)}
.edhead .tab i{width:8px;height:8px;background:var(--kc);box-shadow:3px 3px 0 color-mix(in srgb,var(--kc) 40%,transparent)}
.edhead .grow{flex:1}
.edbtn{margin:0 0 6px;padding:5px 10px;border:1px solid transparent;border-radius:7px;background:none;cursor:pointer;font:500 12.5px var(--f-mono);color:var(--muted);transition:color .2s,background .2s,border-color .2s}
.edbtn:hover{color:var(--ink);background:var(--soft);border-color:var(--line)}
.cssed{--lh:21.6px;--pt:14px;position:relative;height:clamp(300px,46vh,520px);font:13.5px/var(--lh) var(--f-mono);overflow:hidden;
  background:linear-gradient(var(--line),var(--line)) 42px 0/1px 100% no-repeat,linear-gradient(var(--panel),var(--panel)) 0 0/42px 100% no-repeat}
.cssed .layer{position:absolute;inset:0 auto auto 0;min-width:100%;pointer-events:none}
.cssed pre,.cssed textarea{margin:0;padding:var(--pt) 18px 60px 56px;font:inherit;line-height:var(--lh);white-space:pre;tab-size:2;border:0}
.cssed pre{position:relative;color:var(--ink)}
.cssed .band{position:absolute;left:0;right:0;top:calc(var(--pt) + var(--ln,0) * var(--lh));height:var(--lh);background:color-mix(in srgb,var(--kc) 9%,transparent);opacity:0;transition:top .08s}
.cssed:focus-within .band{opacity:1}
.cssed textarea{position:absolute;inset:0;width:100%;height:100%;resize:none;background:transparent;color:transparent;caret-color:var(--kc);outline:none;overflow:auto}
.cssed textarea::selection{background:color-mix(in srgb,var(--kc) 30%,transparent);color:transparent}
.cssed .gut{position:absolute;left:0;top:0;width:42px;min-height:100%;padding:var(--pt) 10px 60px 0;text-align:right;color:var(--cm);pointer-events:none;box-sizing:border-box}
.cssed .gut b{display:block;font-weight:400;opacity:.65}
.cssed .gut b.on{opacity:1;color:var(--kc);font-weight:600}
/* hide the bars, keep the scrolling */
.cssed textarea,.map,.map ol,.peek pre,.markup pre{scrollbar-width:none;-ms-overflow-style:none}
.cssed textarea::-webkit-scrollbar,.map::-webkit-scrollbar,.map ol::-webkit-scrollbar,.peek pre::-webkit-scrollbar,.markup pre::-webkit-scrollbar{display:none;width:0;height:0}
/* a soft fade at the bottom says there's more below */
.cssed::after{content:"";position:absolute;left:43px;right:0;bottom:0;height:34px;pointer-events:none;background:linear-gradient(transparent,var(--code-bg))}
.edstat{display:flex;align-items:center;gap:14px;padding:7px 12px;border-top:1px solid var(--line);background:var(--panel);font:11.5px var(--f-mono);color:var(--muted)}
.edstat .keys{margin-left:auto;display:flex;align-items:center;gap:5px}
.edstat kbd{padding:1px 5px;border:1px solid var(--line);border-bottom-width:2px;border-radius:4px;background:var(--card);font:11px var(--f-mono);color:var(--ink)}
.edstat .saved{display:inline-flex;align-items:center;gap:6px}
.edstat .saved::before{content:"";width:7px;height:7px;border-radius:50%;background:var(--ok);transition:transform .2s,box-shadow .3s}
.edstat .saved.now::before{transform:scale(1.4);box-shadow:0 0 0 4px color-mix(in srgb,var(--ok) 25%,transparent)}
@media (max-width:520px){.edstat .keys{display:none}.edstat .saved{margin-left:auto}}
.tk-c{color:var(--cm);font-style:italic}.tk-s{color:var(--s)}.tk-n{color:var(--n)}.tk-k{color:var(--k)}.tk-sel{color:var(--f);font-weight:600}.tk-v{color:var(--s)}.tk-p{color:var(--muted)}
.tk-hex{color:var(--n);box-shadow:inset 0 -3px 0 var(--hx)}

.help{margin-top:18px}
.rh{margin:0 0 8px;font:600 11px var(--f-mono);letter-spacing:.09em;text-transform:uppercase;color:var(--muted)}
.rules{list-style:none;margin:0;padding:0;display:grid;gap:6px;font-size:14px}
.rules li{display:flex;align-items:center;gap:10px;color:var(--muted);transition:color .2s}
.rules i{flex:none;width:14px;height:14px;border-radius:3px;border:1.5px solid var(--line);transition:background .2s,border-color .2s}
.rules li.ok{color:var(--ink)}
.rules li.ok i{background:var(--ok);border-color:var(--ok);box-shadow:inset 0 0 0 2px var(--card)}
.help .btns{margin-top:14px}
.hints p,.peek p{margin:10px 0 0;font-size:14px;line-height:1.55}
.hints p{padding:9px 12px;border-radius:8px;background:color-mix(in srgb,var(--kc) 10%,var(--card));border:1px solid color-mix(in srgb,var(--kc) 30%,var(--line))}
.peek pre{margin:8px 0 0;padding:12px 14px;max-height:300px;overflow:auto;font:12.5px/1.55 var(--f-mono);background:var(--code-bg);border:1px solid var(--line);border-radius:8px}
.markup{margin-top:18px;font-size:13.5px;color:var(--muted)}
.markup summary{cursor:pointer;font:600 11px var(--f-mono);letter-spacing:.09em;text-transform:uppercase}
.markup pre{margin:8px 0 0;padding:10px 12px;font:12.5px/1.55 var(--f-mono);color:var(--ink);background:var(--code-bg);border:1px solid var(--line);border-radius:8px;white-space:pre-wrap}

/* the table */
.table{position:sticky;top:57px;display:flex;flex-direction:column;min-width:0;min-height:calc(100vh - 57px);padding:18px 24px 24px}
.tbar{display:flex;align-items:center;justify-content:space-between;gap:12px 24px;flex-wrap:wrap;margin-bottom:14px}
.views{display:flex;gap:20px}
.views button{padding:4px 0 6px;border:0;background:none;cursor:pointer;font:500 14px var(--f-body);color:var(--muted);box-shadow:inset 0 -2px 0 transparent;transition:color .2s,box-shadow .2s}
.views button:hover{color:var(--ink)}
.views button[aria-selected="true"]{color:var(--ink);box-shadow:inset 0 -2px 0 var(--kc)}
.tright{display:flex;align-items:center;gap:12px 18px;flex-wrap:wrap;margin-left:auto}
/* the screen switch: three drawn screens, each with its own score once it has one */
.devs{display:flex;padding:3px;gap:2px;border-radius:10px;background:var(--soft);box-shadow:inset 0 0 0 1px var(--line)}
.devs button{display:flex;align-items:center;gap:7px;padding:5px 10px;border:0;border-radius:7px;background:none;cursor:pointer;font:500 12.5px var(--f-body);color:var(--muted);transition:background .2s,color .2s,box-shadow .2s}
.devs button:hover{color:var(--ink)}
.devs button[aria-checked="true"]{background:var(--card);color:var(--ink);box-shadow:0 1px 0 var(--line),0 2px 8px -4px rgba(0,0,0,.3)}
.devs .ds{font:600 10.5px var(--f-mono);color:var(--muted)}
.devs .ds:empty{display:none}
.devs.scored button.ok .ds{color:var(--ok)}
.devs.scored button.ok .ds::before{content:"✓ "}
.ico{position:relative;display:block;flex:none;border:1.6px solid currentColor}
.ico-desktop{width:16px;height:11px;border-radius:2px;margin-bottom:3px}
.ico-desktop::after{content:"";position:absolute;left:50%;bottom:-5px;width:8px;height:1.6px;translate:-50% 0;background:currentColor}
.ico-tablet{width:11px;height:14px;border-radius:2.5px}
.ico-phone{width:8px;height:14px;border-radius:2.5px}
.ico-tablet::after,.ico-phone::after{content:"";position:absolute;left:50%;bottom:1px;width:3px;height:1.4px;translate:-50% 0;background:currentColor;border-radius:1px}
.devs button[aria-checked="true"] .ico{color:var(--kc)}
@media (max-width:1320px){.devs .dl{display:none}.devs button{padding:6px 9px}}
.gctl{display:flex;align-items:center;gap:10px;font:12px var(--f-mono);color:var(--muted)}
.gctl input{width:140px;accent-color:var(--kc)}
.gctl b{min-width:3.2em;color:var(--ink);font-weight:600}

/* a cutting mat: dot grid with ruler ticks along the top */
.mat{position:relative;flex:1;display:grid;place-items:center;min-height:340px;padding:34px 20px 26px;border-radius:14px;overflow:hidden;
  background:radial-gradient(circle,color-mix(in srgb,var(--ink) 16%,transparent) 1px,transparent 1.4px) 0 0/20px 20px,var(--soft);box-shadow:inset 0 0 0 1px var(--line)}
.mat::before{content:"";position:absolute;left:0;right:0;top:0;height:12px;
  background:repeating-linear-gradient(90deg,color-mix(in srgb,var(--ink) 30%,transparent) 0 1px,transparent 1px 10px),repeating-linear-gradient(90deg,color-mix(in srgb,var(--ink) 45%,transparent) 0 1px,transparent 1px 50px);
  background-size:auto 6px,auto 12px;background-repeat:repeat-x}
.pane{--s:1;display:flex;gap:20px;align-items:flex-start;justify-content:center}
.pane figure{margin:0;display:grid;gap:8px;justify-items:center}
.pane figcaption{font:600 11px var(--f-mono);letter-spacing:.09em;text-transform:uppercase;color:var(--muted)}
.frame{position:relative;padding:0;border-radius:4px;box-shadow:0 1px 0 rgba(0,0,0,.08),0 18px 40px -18px rgba(0,0,0,.45)}
/* each screen's body: a browser window, a tablet with an even bezel, a phone with a pill cut-out */
.frame.dev-desktop{padding-top:26px;border-radius:9px;background:#24262b}
.frame.dev-desktop .art{border-radius:0 0 4px 4px}
.chrome{position:absolute;left:0;right:0;top:0;height:26px;display:flex;align-items:center;gap:6px;padding:0 10px}
.chrome i{width:8px;height:8px;border-radius:50%;background:#ff5f57}.chrome i:nth-child(2){background:#febc2e}.chrome i:nth-child(3){background:#28c840}
.chrome em{margin:0 auto;padding:1px 10px;border-radius:5px;background:#33363d;font:500 10.5px var(--f-mono);font-style:normal;color:#a9adb7;transform:translateX(-14px)}
.frame.dev-tablet{padding:14px;border-radius:22px;background:#1d1f24;box-shadow:inset 0 0 0 1.5px #3a3d45,0 18px 40px -18px rgba(0,0,0,.55)}
.frame.dev-tablet .art{border-radius:6px}
.frame.dev-phone{padding:12px 9px;border-radius:30px;background:#1d1f24;box-shadow:inset 0 0 0 1.5px #3a3d45,0 18px 40px -18px rgba(0,0,0,.55)}
.frame.dev-phone .art{border-radius:20px}
.frame.dev-phone::after{content:"";position:absolute;left:50%;top:3px;width:40px;height:6px;translate:-50% 0;border-radius:4px;background:#0c0d10;z-index:2}
.art{position:relative;width:calc(var(--w) * 1px * var(--s));height:calc(var(--h) * 1px * var(--s));overflow:hidden;border-radius:4px}
.art .bd{position:absolute;left:0;top:0;width:calc(var(--w) * 1px);height:calc(var(--h) * 1px);border:0;transform:scale(var(--s));transform-origin:0 0;background:#fff}
.art .ghost{pointer-events:none;mix-blend-mode:normal;transition:opacity .15s}
.heat{image-rendering:pixelated}

/* the meter */
.meter{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:10px 20px;margin-top:16px;padding:14px 18px;border-radius:12px;background:var(--card);border:1px solid var(--line);transition:border-color .3s,background .3s}
.mtop{display:flex;align-items:baseline;gap:10px;min-width:0}
.pct{position:relative;font:400 44px/1 var(--f-serif);font-variant-numeric:tabular-nums;min-width:2.3em}
.mtop>span{font:600 11px var(--f-mono);letter-spacing:.09em;text-transform:uppercase;color:var(--muted)}
.mst{margin-left:8px;font-size:13.5px;color:var(--muted)!important;font:400 13.5px var(--f-body)!important;letter-spacing:0!important;text-transform:none!important;text-wrap:pretty}
.mbar{grid-column:1/-1;position:relative;height:6px;border-radius:3px;background:var(--soft);order:3}
.mbar i{position:absolute;left:0;top:0;bottom:0;width:0;border-radius:3px;background:var(--kc);transition:width .35s cubic-bezier(.2,.8,.3,1),background .3s}
.mbar em{position:absolute;top:-4px;bottom:-4px;width:2px;background:var(--ink);opacity:.5}
.meter.won{border-color:color-mix(in srgb,var(--ok) 55%,var(--line));background:color-mix(in srgb,var(--ok) 8%,var(--card))}
.meter.won .mbar i{background:var(--ok)}
.nextbtn{display:inline-flex;align-items:center;gap:12px;font:600 14.5px var(--f-body);color:var(--ink);text-decoration:none;white-space:nowrap}
.arw{position:relative;display:inline-block;width:18px;height:2px;border-radius:1px;background:var(--kc);transition:width .35s cubic-bezier(.2,.8,.3,1)}
.arw::after{content:"";position:absolute;right:0;top:50%;width:7px;height:7px;border:solid var(--kc);border-width:2px 2px 0 0;transform:translate(-.5px,-50%) rotate(45deg)}
.nextbtn:hover .arw{width:34px}
.burst{position:absolute;left:50%;top:50%;pointer-events:none}
.burst i{position:absolute;width:7px;height:7px;animation:pop .9s cubic-bezier(.2,.8,.3,1) forwards}
@keyframes pop{to{transform:translate(var(--dx),var(--dy)) rotate(200deg);opacity:0}}

.dz-count{font:12px var(--f-mono);color:var(--muted)}

@media (max-width:1180px){
  .studio{grid-template-columns:minmax(320px,400px) minmax(0,1fr)}
  .map{grid-column:1/-1;position:static;max-height:none;border-right:0;border-bottom:1px solid var(--line);padding:12px 16px}
  .map-h{margin:0 0 8px}
  .map .map-back{display:inline-flex;margin:0 0 10px;padding:6px 12px}
  .map ol{grid-auto-flow:column;grid-auto-columns:max-content;overflow-x:auto;padding-bottom:4px;scrollbar-width:thin}
  .map a{grid-template-columns:54px auto;gap:8px;padding:6px 8px 6px 6px}
  .map .th{width:54px}
  .map .st{display:none}
  .table{top:0;min-height:0;position:relative}
}
@media (max-width:760px){
  .studio{grid-template-columns:minmax(0,1fr)}
  .desk{border-right:0;padding:20px 16px 28px;order:2}
  .map{order:0}
  .table{order:1;padding:14px 16px 0}
  .mat{min-height:0;padding:28px 10px 16px}
  .brief h1{font-size:34px}
  .cssed{height:340px}
  .cssed pre,.cssed textarea{padding-right:14px}
  .gctl input{width:100px}
  .pane.two{flex-direction:column;align-items:center}
  .meter{padding:12px 14px}
  .pct{font-size:36px}
  .mst{display:none}
}
