semantic-golfer 1.0.0 → 1.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +5 -5
- package/dist/assets/index-DAIwZNXp.css +1 -0
- package/dist/assets/index-DaeR_fkO.js +26 -0
- package/dist/index.html +2 -2
- package/dist/licenses/icons/LICENSES.md +1 -1
- package/dist-cli/prepareUpdate.js +1 -1
- package/dist-electron/index.js +3800 -1324
- package/package.json +17 -4
- package/dist/assets/index-BpGPtiwR.css +0 -1
- package/dist/assets/index-chSqUrSa.js +0 -9
package/README.md
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
<div align="center">
|
|
2
|
-
<a href="https://
|
|
2
|
+
<a href="https://semantic-golfer.giladgd.com"><img alt="Semantic Golfer icon" src="https://raw.githubusercontent.com/giladgd/semantic-golfer/master/assets/icon.png" width="200" /></a>
|
|
3
3
|
<h1>Semantic Golfer</h1>
|
|
4
4
|
<p>How little can you write and still get everything right?</p>
|
|
5
5
|
<p></p>
|
|
@@ -9,10 +9,10 @@
|
|
|
9
9
|
|
|
10
10
|
[](https://github.com/giladgd/semantic-golfer/actions/workflows/release.yml)
|
|
11
11
|
[](https://github.com/giladgd/semantic-golfer/blob/master/LICENSE)
|
|
12
|
-
[](https://
|
|
12
|
+
[](https://semantic-golfer.giladgd.com)
|
|
13
13
|
[](https://www.npmjs.com/package/semantic-golfer)
|
|
14
14
|
|
|
15
|
-
[](https://
|
|
15
|
+
[](https://semantic-golfer.giladgd.com)
|
|
16
16
|
|
|
17
17
|
</div>
|
|
18
18
|
|
|
@@ -20,7 +20,7 @@ A playground and a game to play around with [node-llama-cpp](https://github.com/
|
|
|
20
20
|
Try writing the shortest text that meets all criteria, and watch the local model score its meaning as you type in real time.
|
|
21
21
|
|
|
22
22
|
```bash
|
|
23
|
-
npx semantic-golfer
|
|
23
|
+
npx -y semantic-golfer@latest
|
|
24
24
|
```
|
|
25
25
|
|
|
26
26
|
[Or download the desktop app](https://github.com/giladgd/semantic-golfer/releases/latest)
|
|
@@ -28,7 +28,7 @@ npx semantic-golfer
|
|
|
28
28
|
## Features
|
|
29
29
|
|
|
30
30
|
- **Semantic Golfing:** write a message that matches every condition within the character limit
|
|
31
|
-
- **Signal Mixing:**
|
|
31
|
+
- **Signal Mixing:** balance competing communication goals without crossing the line
|
|
32
32
|
- **Playground:** experiment with `noul`, `choice`, and `score` decisions using your own documents and criteria
|
|
33
33
|
- Download a model in the app or open a local GGUF file. Inference runs on your machine
|
|
34
34
|
- macOS, Windows, and Linux support
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(./inter-cyrillic-ext-wght-normal-BOeWTOD4.woff2) format("woff2-variations");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(./inter-cyrillic-wght-normal-DqGufNeO.woff2) format("woff2-variations");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(./inter-greek-ext-wght-normal-DlzME5K_.woff2) format("woff2-variations");unicode-range:U+1F00-1FFF}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(./inter-greek-wght-normal-CkhJZR-_.woff2) format("woff2-variations");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(./inter-vietnamese-wght-normal-CBcvBZtf.woff2) format("woff2-variations");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(./inter-latin-ext-wght-normal-DO1Apj_S.woff2) format("woff2-variations");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(./inter-latin-wght-normal-Dx4kXJAl.woff2) format("woff2-variations");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}.decisionProgressBar{height:8px;background:var(--track-color);border-radius:99px;overflow:hidden;>.fill{width:100%;height:100%;background:var(--accent-color);border-radius:inherit;transform-origin:left;transition:transform .18s var(--transition-easing)}&[data-indeterminate]>.fill{animation:decisionProgressPulse 1.2s ease-in-out infinite alternate}}@keyframes decisionProgressPulse{to{translate:180%}}.deleteModelDialog{width:min(420px,calc(100vw - 32px));max-height:calc(100dvh - 32px);padding:24px;border:1px solid var(--border-color);border-radius:22px;background:var(--surface-color);color:var(--text-color);box-shadow:0 20px 70px -20px var(--popover-shadow-color);app-region:no-drag;opacity:0;transform:translateY(24px) scale(.96);transition:opacity .18s,transform .22s var(--transition-easing),display .22s allow-discrete,overlay .22s allow-discrete;&[open]{opacity:1;transform:none}&::backdrop{background:color-mix(in srgb,var(--background-color) 55%,transparent);opacity:0;transition:opacity .18s,display .22s allow-discrete,overlay .22s allow-discrete}&[open]::backdrop{opacity:1}>h2{margin:0 0 12px;font-size:20px;font-weight:550;letter-spacing:-.03em}>p{margin:0;color:var(--muted-text-color);font-size:12px;line-height:1.7}>.deleteError{margin-top:16px;color:var(--error-color);font-size:12px;overflow-wrap:anywhere}>.dialogActions{display:flex;justify-content:flex-end;gap:10px;margin-top:24px;>button{font-size:12px}>.confirmDelete{background:var(--error-color);color:var(--surface-color);&:hover:not(:disabled){background:color-mix(in srgb,var(--error-color) 90%,var(--text-color))}}}@starting-style{&[open]{opacity:0;transform:translateY(24px) scale(.96)}&[open]::backdrop{opacity:0}}}.modelList{background:color-mix(in srgb,var(--surface-color) 80%,transparent);backdrop-filter:blur(20px) saturate(1.15);border:1px solid var(--border-color);border-radius:22px;box-shadow:0 20px 70px -20px var(--popover-shadow-color);overflow-y:auto;overscroll-behavior:auto;max-height:calc(100dvh - 110px);padding:10px;>.modelRows{display:flex;flex-direction:column;gap:10px}.modelRow{border-radius:12px;background:light-dark(color-mix(in srgb,var(--accent-color) 8%,transparent),color-mix(in srgb,var(--subtle-surface-color) 40%,transparent));transition:background-color .15s;&:has(button:hover:not(:disabled)){background:light-dark(color-mix(in srgb,var(--accent-color) 14%,transparent),color-mix(in srgb,var(--hover-surface-color) 55%,transparent))}&:has(.modelSelect:focus-visible){outline:2px solid var(--accent-color);outline-offset:2px}&[data-active=true]{background:light-dark(color-mix(in srgb,var(--accent-color) 14%,transparent),color-mix(in srgb,var(--accent-surface-color) 60%,transparent));&:has(button:hover:not(:disabled)){background:light-dark(color-mix(in srgb,var(--accent-color) 20%,transparent),color-mix(in srgb,var(--hover-accent-surface-color) 70%,transparent))}}>.modelRowMain{display:flex;align-items:center;gap:2px;padding-inline-end:8px}}.modelSelect{display:flex;align-items:center;gap:12px;padding:8px 12px;text-align:start;flex:1;min-width:0;width:100%;background:transparent;color:var(--text-color);border-radius:12px;&:hover:not(:disabled){background:transparent}&:focus-visible{outline:none}&:disabled{opacity:.75}>.modelIcon{display:grid;place-items:center;flex-shrink:0;width:26px;height:26px;color:var(--accent-color)}>.modelDetails{min-width:0;display:flex;flex-wrap:wrap;align-items:center;gap:6px 8px}.modelName{max-width:100%;font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.modelMeta{display:flex;gap:4px;font-size:10px;color:var(--muted-text-color);>.modelTag{padding:2px 6px;border-radius:6px;background:var(--tag-overlay-color);white-space:nowrap;&.ourPick{color:var(--accent-color);background:var(--accent-overlay-color)}}}}svg{fill:currentColor;width:18px;height:18px}.deleteModel{border:0;display:grid;place-items:center;padding:8px;background:transparent;color:var(--muted-text-color);&:hover:not(:disabled){color:var(--error-color);background:color-mix(in srgb,var(--error-color) 10%,transparent)}}.cancelDownload{padding:5px 8px;font-size:11px}.modelProgress{display:flex;flex-direction:column;gap:6px;padding:0 14px 12px;font-size:10px;color:var(--muted-text-color);font-variant-numeric:tabular-nums;>div:first-child{display:flex;justify-content:space-between}}>.fileActions{display:flex;justify-content:space-between;gap:8px;margin-top:10px;>button{display:flex;align-items:center;justify-content:center;gap:7px;flex:1;padding:8px 10px;font-size:11px;background:light-dark(color-mix(in srgb,var(--accent-color) 8%,transparent),color-mix(in srgb,var(--subtle-surface-color) 65%,transparent));&:hover:not(:disabled){background:light-dark(color-mix(in srgb,var(--accent-color) 14%,transparent),color-mix(in srgb,var(--hover-surface-color) 85%,transparent))}>svg{width:16px;height:16px;flex-shrink:0}}}.error{margin:10px 12px;color:var(--error-color);overflow-wrap:anywhere;font-size:12px}@media(prefers-reduced-transparency:reduce){background:var(--surface-color);backdrop-filter:none}}.switchModelDialog{width:min(420px,calc(100vw - 32px));padding:24px;border:1px solid var(--border-color);border-radius:22px;background:var(--surface-color);color:var(--text-color);box-shadow:0 20px 70px -20px var(--popover-shadow-color);app-region:no-drag;opacity:0;transform:translateY(16px) scale(.96);transition:opacity .18s,transform .22s var(--transition-easing),display .22s allow-discrete,overlay .22s allow-discrete;&[open]{opacity:1;transform:none}&::backdrop{background:color-mix(in srgb,var(--background-color) 55%,transparent);opacity:0;transition:opacity .18s,display .22s allow-discrete,overlay .22s allow-discrete}&[open]::backdrop{opacity:1}>p{margin:0;font-size:14px;line-height:1.7}>.dialogActions{display:flex;justify-content:flex-end;gap:10px;margin-top:24px;>button{font-size:12px}>.confirmSwitch{background:var(--accent-color);color:var(--on-accent-color);&:hover{background:var(--hover-accent-color)}}}@starting-style{&[open]{opacity:0;transform:translateY(16px) scale(.96)}&[open]::backdrop{opacity:0}}}.modelPicker{--model-button-color: light-dark(color-mix(in srgb, var(--accent-color) 12%, var(--accent-surface-color)), var(--accent-surface-color));app-region:no-drag;min-width:0;max-width:var(--model-button-max-width, 310px);>.modelButtonArea{position:relative;>.modelButton{anchor-name:--model-button;display:flex;align-items:center;gap:10px;max-width:100%;height:38px;font-size:12px;background:var(--model-button-color);border:0;box-shadow:var(--surface-shadow);&:is(:hover,[data-demo-hover=true]):not(:disabled){background:color-mix(in srgb,var(--accent-color) 16%,var(--model-button-color))}>svg{width:18px;height:18px;flex-shrink:0}>.modelButtonName{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}@media(max-width:900px){gap:6px;padding-inline:12px}}>.decisionProgressBar{position:absolute;inset:auto 4px -6px;height:3px}}>.modelsPopover,>.requiredPicker{color:var(--text-color);background:transparent;border:0;overflow:visible;opacity:0;transition:opacity .18s,transform .22s var(--transition-easing),display .22s allow-discrete,overlay .22s allow-discrete}>.modelsPopover{position:fixed;position-anchor:--model-button;inset:auto;top:calc(anchor(bottom) + 12px);right:anchor(right);margin:0;padding:0;width:min(440px,calc(100vw - 32px));transform-origin:top right;transform:translateY(-8px) scale(.94);&:popover-open{opacity:1;transform:none}}>.requiredPicker{width:min(500px,calc(100vw - 32px));max-height:calc(100dvh - 100px);padding:12px;transform:translateY(24px) scale(.96);>h1{font-size:25px;letter-spacing:-.04em;text-align:center;font-weight:550;margin:0 0 22px}>.modelList{max-height:calc(100dvh - 180px)}&::backdrop{background:transparent}&[open]{opacity:1;transform:none}}@starting-style{>.modelsPopover:popover-open{opacity:0;transform:translateY(-8px) scale(.94)}>.requiredPicker[open]{opacity:0;transform:translateY(24px) scale(.96)}}}.topBar{position:sticky;top:0;z-index:5;height:60px;min-width:0;display:flex;align-items:center;gap:24px;padding:0 24px;padding-left:calc(env(titlebar-area-x,0px) + 24px);padding-right:calc(100% - env(titlebar-area-x,0px) - env(titlebar-area-width,100%) + 11px);background:var(--top-bar-color);border-bottom:1px solid transparent;box-shadow:var(--top-bar-shadow);transition:border-bottom-color .18s,box-shadow .18s;app-region:drag;cursor:default;user-select:none;&[data-mode=playground]{border-bottom-color:var(--border-color);box-shadow:none}&[data-platform=darwin]{padding-inline-start:104px}>.appIdentity{position:relative;display:flex;align-items:center;gap:10px;padding-inline-end:20px;color:var(--text-color);app-region:no-drag;&:is(:hover,[data-demo-hover=true]){text-decoration:none}>.identityLinkIcon{position:absolute;right:0;width:15px;height:15px;opacity:0;transform:translate(-2px,2px);color:var(--accent-color);transition:opacity .15s,transform .15s}&:is(:is(:hover,[data-demo-hover=true]),:focus-visible)>.identityLinkIcon{opacity:1;transform:none}>.appMark{width:36px;height:36px}>strong{font-size:15px;font-weight:550;letter-spacing:-.04em;white-space:nowrap}}>nav{position:absolute;left:50%;transform:translate(-50%);display:flex;gap:6px;padding:3px;border-radius:14px;background:var(--subtle-surface-color);app-region:no-drag;>button{border:0;font-size:13px;padding:6px 16px;color:var(--muted-text-color);background:transparent;&:is(:hover,[data-demo-hover=true]):not(:disabled){color:var(--accent-color);background:var(--hover-surface-color)}&[aria-current=page]{color:var(--accent-color);background:var(--accent-surface-color);box-shadow:0 1px 4px -2px var(--popover-shadow-color);&:is(:hover,[data-demo-hover=true]):not(:disabled){background:var(--hover-accent-surface-color)}}}}>.headerActions{min-width:0;margin-inline-start:auto;display:flex;align-items:center;gap:10px;&:has(.modelButtonArea[hidden]){gap:0}>.repositoryLink{display:flex;align-items:center;gap:8px;padding-inline:14px;height:38px;flex-shrink:0;app-region:no-drag;color:var(--muted-text-color);background:var(--subtle-surface-color);border-radius:10px;transition:color .15s,background-color .15s;&:is(:hover,[data-demo-hover=true]){text-decoration:none;color:var(--accent-color);background:light-dark(color-mix(in srgb,var(--accent-color) 18%,var(--surface-color)),var(--hover-surface-color))}>svg{width:20px;height:20px;flex-shrink:0}>.externalLinkIcon{width:16px;height:16px}>code{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:12px;white-space:nowrap}}}@media(max-width:1400px){--model-button-max-width: 200px}@media(max-width:1200px){>nav{position:static;transform:none;margin-inline:auto;flex-shrink:0}}@media(max-width:900px){gap:8px;padding-left:calc(env(titlebar-area-x,0px) + 16px);--model-button-max-width: 180px;>nav>button{padding-inline:10px}>.headerActions>.repositoryLink{gap:6px;padding-inline:12px}}}.criteriaEditor{display:flex;flex-direction:column;margin:0;min-width:0;min-height:0;padding:0;border:0;>*{flex-shrink:0}h2,>.instructionHeader>span{margin:0;font-size:15px;font-weight:600}textarea{field-sizing:content;resize:none;line-height:1.5;min-height:calc(1lh + 24px);max-height:calc(3lh + 24px);overflow-y:auto;overscroll-behavior:auto;scrollbar-width:thin}>.instructionHeader{--instruction-focus-color: color-mix(in srgb, var(--accent-color) 65%, transparent);position:relative;z-index:2;display:block;padding:var(--panel-padding);background:var(--document-surface-color);border-bottom:1px solid var(--border-color);clip-path:inset(-1px -1px 0 0);transition:border-color .18s,box-shadow .18s;&:has(>textarea:enabled){cursor:text}&:is(:hover,[data-demo-hover=true]):has(>textarea:enabled):not(:focus-within){border-color:var(--hover-border-color);box-shadow:inset 1px 0 0 var(--hover-border-color),0 0 0 1px var(--hover-border-color)}&:focus-within{border-color:var(--instruction-focus-color);box-shadow:inset 1px 0 0 var(--instruction-focus-color),0 0 0 1px var(--instruction-focus-color)}>span{display:block;margin-bottom:22px}>textarea{display:block;width:100%;min-height:1lh;max-height:3lh;padding:0;border:0;border-radius:4px;background:transparent;overscroll-behavior:auto;font-size:17px;line-height:1.9;letter-spacing:-.02em;&:focus-visible{outline:none}}}>.criteriaTitle{padding:var(--panel-padding) var(--panel-padding) 0}>.criteriaList{flex:1;min-height:0;display:grid;grid-template-columns:minmax(0,1fr);align-content:start;row-gap:0px;overflow-y:auto;overscroll-behavior:auto;scrollbar-width:thin;padding:16px var(--panel-padding) var(--panel-padding);scroll-padding-top:16px;mask-image:linear-gradient(to bottom,transparent,#000 16px);>.criterion{display:grid;grid-template-columns:32px minmax(0,1fr) 28px;align-items:start;gap:6px;padding-inline:8px;border:1px solid var(--input-border-color);--input-border-color: var(--border-color);background:var(--subtle-surface-color);transition:--input-border-color .15s ease-out;@property --input-border-color{syntax: "<color>"; inherits: false; initial-value: transparent;}&:not(:last-of-type){border-bottom:none}&:first-of-type{border-start-start-radius:12px;border-start-end-radius:12px}&:last-of-type{border-end-start-radius:12px;border-end-end-radius:12px}&:where(:is(:hover,[data-demo-hover=true]):has(>textarea:enabled):not(:focus-within)){--input-border-color: var(--hover-border-color);+.criterion:where(:not(:focus-within)){border-top-color:var(--hover-border-color)}}&:where(:focus-within){--input-border-color: var(--accent-color);+.criterion{border-top-color:var(--accent-color)}}&:has(>textarea[aria-invalid=true]){--input-border-color: var(--error-color);border-top-color:var(--input-border-color);+.criterion{border-top-color:var(--error-color)}}&:is(:hover,[data-demo-hover=true],:focus-within)>.removeButton:enabled{opacity:1}>label{padding-top:12px;text-align:center;font-size:11px;line-height:18px;color:var(--accent-color);font-weight:600}>textarea{min-width:0;overscroll-behavior:auto;padding:12px 0;border:0;border-radius:0;background:transparent}>.removeButton{margin-top:7px;border:0;padding:5px;width:28px;height:28px;opacity:0;background:transparent;color:var(--muted-text-color);display:grid;place-items:center;transition:opacity .15s,background-color .15s;&:disabled{visibility:hidden}&:is(:hover,[data-demo-hover=true]):not(:disabled){color:var(--error-color);background:color-mix(in srgb,var(--error-color) 10%,transparent)}>svg{width:16px;height:16px;fill:currentColor}}}}>.examples{display:flex;align-items:center;flex-wrap:wrap;gap:8px;padding:16px var(--panel-padding);border-top:1px solid var(--border-color);>span{flex-basis:100%;font-size:11px;color:var(--muted-text-color)}>button{display:flex;align-items:center;gap:8px;font-size:11px;padding:6px 10px;border-radius:12px;>span{opacity:.5}}}}.documentInput{--document-focus-color: color-mix(in srgb, var(--accent-color) 65%, transparent);position:relative;z-index:1;display:flex;flex-direction:column;min-width:0;min-height:0;padding:var(--panel-padding);background:var(--document-surface-color);border-inline:1px solid var(--border-color);transition:border-color .18s,box-shadow .18s;&:has(>textarea:is(:hover,[data-demo-hover=true]):not(:disabled)):not(:focus-within){border-color:var(--hover-border-color);box-shadow:0 -1px 0 var(--hover-border-color),0 1px 0 var(--hover-border-color)}&:focus-within{border-color:var(--document-focus-color);box-shadow:0 -1px 0 var(--document-focus-color),0 1px 0 var(--document-focus-color)}>label{font-weight:600;font-size:15px}>textarea{flex:1;resize:none;width:100%;min-height:0;overflow-y:auto;overscroll-behavior:auto;scrollbar-width:thin;margin-top:22px;padding:0;border:0;border-radius:4px;background:transparent;font-size:17px;line-height:1.9;letter-spacing:-.02em;&:focus-visible{outline:none}}>.documentFooter{text-align:end;margin-top:22px;color:var(--muted-text-color);font-size:10px;opacity:.7}}.noulScale{>.track{position:relative;height:8px;margin:6px;border-radius:99px;background:linear-gradient(90deg,color-mix(in srgb,var(--secondary-accent-color) 65%,transparent),transparent 50%,color-mix(in srgb,var(--accent-color) 65%,transparent));>.position{position:absolute;top:50%;width:14px;height:14px;border:3px solid var(--surface-color);border-radius:50%;background:var(--accent-color);box-shadow:0 0 0 1px var(--accent-color);transform:translate(-50%,-50%);transition:left .18s var(--transition-easing)}}>.labels{display:flex;justify-content:space-between;margin-top:12px;font-size:11px;color:var(--muted-text-color)}}.decisionResult{display:flex;flex-direction:column;gap:22px;padding:var(--panel-padding);min-width:0;min-height:0;>*{flex-shrink:0}>.decisionContent{display:flex;flex-direction:column;gap:26px;flex:1;min-height:0;overflow-y:clip;overscroll-behavior:auto;scrollbar-width:thin;margin-bottom:-22px;padding-bottom:22px;>*{flex-shrink:0}}>h2{margin:0;font-size:15px;font-weight:600}>.decisionContent>.answerSummary{>.answerValue{font-size:48px;font-weight:500;letter-spacing:-.05em;color:var(--accent-color);font-variant-numeric:tabular-nums;>span{font-size:19px;letter-spacing:-.03em}&[data-empty=true]{color:var(--muted-text-color)}}>.choiceValue{display:grid;font-size:22px;font-weight:500;line-height:1.4;color:var(--accent-color);overflow-wrap:anywhere;>span{grid-area:1 / 1;visibility:hidden;&[data-selected=true]{visibility:visible}}}>.answerLabel{font-size:11px;color:var(--muted-text-color);margin-top:4px}}>.decisionContent>.scoreScale{>.scoreMarkers{display:flex;justify-content:space-between;margin-top:8px;font-size:10px;color:var(--muted-text-color);>span{display:flex;flex-direction:column;align-items:center;gap:5px;&:before{content:"";width:1px;height:5px;background:var(--muted-text-color);opacity:.5}}}>.scoreEndpoints{display:flex;justify-content:space-between;gap:24px;font-size:10px;color:var(--muted-text-color);margin-top:8px;>span{max-width:45%;overflow-wrap:anywhere}>span:last-child{text-align:end}}}>.decisionContent>.probabilities{display:flex;flex-direction:column;gap:20px;flex:1;flex-shrink:1;min-height:0;overflow-y:auto;overscroll-behavior:auto;scrollbar-width:thin;margin-inline:calc(-1 * var(--panel-padding));padding-inline:var(--panel-padding);padding-top:16px;margin-top:-16px;margin-bottom:-22px;padding-bottom:22px;mask-image:linear-gradient(to bottom,transparent,#000 16px);>.probability{flex-shrink:0;>.probabilityLabel{display:flex;justify-content:space-between;align-items:baseline;gap:16px;font-size:11px;margin-bottom:8px;>.criterionLabel{display:flex;align-items:baseline;gap:7px;overflow-wrap:anywhere;>.selectedIcon{width:15px;height:15px;flex-shrink:0;align-self:center;visibility:hidden}}>span:last-child{flex-shrink:0;color:var(--muted-text-color);font-variant-numeric:tabular-nums}}&[data-selected=true]>.probabilityLabel{color:var(--accent-color);font-weight:600;.selectedIcon{visibility:visible}}}}&[data-type=score]>.decisionContent>.probabilities{margin-top:18px;.decisionProgressBar{height:4px}}>.resultFooter{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));border-top:1px solid var(--border-color);margin-top:auto;margin-inline:calc(-1 * var(--panel-padding));&:last-child{margin-bottom:calc(-1 * var(--panel-padding))}>.confidence,>.timing{padding:18px var(--panel-padding)}strong{font-size:18px;font-weight:500;font-variant-numeric:tabular-nums;overflow-wrap:anywhere;>span{font-size:11px;color:var(--muted-text-color)}}>.confidence{display:grid;grid-template-columns:1fr auto;align-items:baseline;align-content:center;gap:8px;color:var(--accent-color);>span{font-size:11px;color:var(--muted-text-color)}>strong{font-size:11px;white-space:nowrap}>.decisionProgressBar{grid-column:1 / -1}}>.timing{display:flex;align-items:center;justify-content:flex-end;grid-column:2}>.confidence+.timing{border-inline-start:1px solid var(--border-color)}}>.error{max-height:25%;overflow-y:auto;overscroll-behavior:auto;color:var(--error-color);font-size:12px;overflow-wrap:anywhere;>button{margin-top:12px;font-size:12px}}}.playground{--panel-padding: 24px;display:flex;flex-direction:column;flex:1;min-height:0;background:var(--surface-color);overflow:hidden;>.workspaceToolbar{flex-shrink:0;display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:20px;padding:12px 24px;border-bottom:1px solid var(--border-color);>.typeSwitch{grid-column:2;display:flex;padding:3px;border-radius:14px;background:var(--subtle-surface-color);gap:6px;>button{background:transparent;border:0;padding:6px 16px;font-size:13px;color:var(--muted-text-color);&:is(:hover,[data-demo-hover=true]):not(:disabled){background:var(--hover-surface-color);color:var(--accent-color)}&[aria-pressed=true]{background:var(--accent-surface-color);color:var(--accent-color);box-shadow:0 1px 4px -2px var(--popover-shadow-color);&:is(:hover,[data-demo-hover=true]):not(:disabled){background:var(--hover-accent-surface-color)}}}}>.localBadge{justify-self:end;display:flex;align-items:baseline;gap:7px;font-size:11px;color:var(--muted-text-color)}>.localBadge>span{width:6px;height:6px;border-radius:50%;background:var(--accent-color);transform:translateY(calc(3px - .5cap))}}>.editorGrid{display:grid;flex:1;grid-template-columns:minmax(260px,.95fr) minmax(300px,1.5fr) minmax(310px,.85fr);grid-template-rows:minmax(0,1fr);min-height:0}}.playground{@media(max-width:1100px){--panel-padding: 16px;>.workspaceToolbar{padding-inline:16px}>.editorGrid{grid-template-columns:minmax(190px,.95fr) minmax(240px,1.5fr) minmax(280px,.85fr)}}}.levelPicker{--content-padding: max(36px, calc((100vw - 1100px)/2) );height:100%;display:grid;grid-template-rows:auto auto minmax(0,1fr);padding-top:32px;>.backButton{justify-self:start;margin-inline:var(--content-padding);display:flex;align-items:center;gap:8px;font-size:12px;>svg{width:16px;height:16px;flex-shrink:0}}>h1{font-size:32px;font-weight:550;letter-spacing:-.045em;margin:28px var(--content-padding) 12px}>.levels{display:grid;align-content:start;min-height:0;gap:12px;overflow-y:auto;scrollbar-gutter:stable;overscroll-behavior:auto;padding:16px var(--content-padding) 0;scroll-padding-top:16px;mask-image:linear-gradient(to bottom,transparent,#000 16px);>.level{display:flex;align-items:center;text-align:start;gap:22px;padding:20px 24px;border-radius:18px;background:var(--surface-color);&:last-child{margin-bottom:32px}&:is(:hover,[data-demo-hover=true]):not(:disabled){background:light-dark(color-mix(in srgb,var(--accent-color) 18%,var(--surface-color)),var(--hover-surface-color))}&:focus-visible{outline-offset:-3px}>.levelDetails{min-width:0;display:grid;grid-template-columns:32px minmax(0,1fr);gap:12px;>strong{align-self:center;font-size:16px;font-weight:550}>span{font-size:12px;color:var(--muted-text-color);font-weight:400}>.levelNumber{align-self:center;display:grid;place-items:center;height:32px;border-radius:10px;background:var(--accent-overlay-color);color:var(--accent-color);font-size:18px}>.levelDescription{grid-column:1 / -1}>.levelMeta{grid-column:1 / -1;display:flex;align-items:center;flex-wrap:wrap;gap:8px;font-size:11px;>.levelTag{display:flex;align-items:center;gap:6px;padding:5px 9px;border-radius:8px;background:var(--subtle-overlay-color);white-space:nowrap;>svg{width:14px;height:14px;flex-shrink:0}}}}>.levelScore{margin-inline-start:auto;display:flex;flex-direction:column;align-items:flex-end;gap:4px;white-space:nowrap;color:var(--accent-color);&[data-played=true]{align-items:center;flex-shrink:0;min-width:116px;max-width:min(38%,260px);padding:10px 14px;border-radius:12px;background:var(--subtle-overlay-color);>span{color:var(--muted-text-color)}}>strong{font-size:20px;font-weight:550;font-variant-numeric:tabular-nums}>.modelName{max-width:100%;overflow:hidden;text-overflow:ellipsis;font-size:12px}>span{font-size:11px}>.playAction{display:flex;align-items:center;gap:8px;font-size:14px;>svg{width:18px;height:18px;rotate:180deg}}}}}@media(max-width:1100px){--content-padding: max(20px, calc((100vw - 1100px)/2) );padding-top:24px}}.advanceButton{display:inline-flex;align-items:center;justify-content:center;gap:8px;>kbd{display:inline-flex;align-items:center;gap:4px;margin-inline-start:4px;padding:2px 5px;border-radius:5px;background:color-mix(in srgb,currentColor 10%,transparent);font:inherit;font-size:11px;white-space:nowrap;opacity:.8;>span{font-size:14px;line-height:1}}}.levelResult{view-transition-name:play-round;max-width:720px;height:100%;min-height:0;margin:0 auto;padding-block:24px;display:flex;flex-direction:column;text-align:center;>.levelName{font-size:12px;color:var(--muted-text-color)}>h1{margin:8px 0 0;font-size:32px;font-weight:550;letter-spacing:-.045em}>.scoreSummary{display:grid;gap:40px;margin:32px 0 16px;>div{display:flex;align-items:center;justify-content:center;gap:8px;>span{font-size:12px;color:var(--muted-text-color)}>strong{font-weight:550;font-variant-numeric:tabular-nums;letter-spacing:-.045em}}>.yourScore{flex-direction:column;color:var(--accent-color);>strong{font-size:56px;line-height:1}}>.bestScore{flex-direction:column;gap:4px;>strong{font-size:20px}}}>.newBest{margin:0;display:flex;align-items:center;justify-content:center;gap:8px;color:var(--accent-color);font-size:12px;>svg{width:20px;height:20px}}>.roundScores{border:1px solid var(--border-color);border-radius:18px;background:var(--surface-color);margin-top:20px;flex:0 1 auto;min-height:0;overflow-y:auto;scrollbar-width:thin;>.roundScore{display:flex;align-items:center;justify-content:space-between;padding:16px 22px;gap:20px;text-align:start;font-size:13px;&:not(:last-child){border-bottom:1px solid var(--border-color)}>span>small{display:block;margin-top:4px;font-size:11px;color:var(--muted-text-color)}>strong{font-variant-numeric:tabular-nums}}}>.saveError{color:var(--error-color);>button{margin-inline-start:8px}}>.resultActions{flex-shrink:0;display:flex;flex-direction:column;align-items:center;gap:16px;margin-top:24px;>.secondaryActions{display:flex;justify-content:center;flex-wrap:wrap;gap:10px}button{display:flex;align-items:center;justify-content:center;gap:8px;>svg{width:18px;height:18px;flex-shrink:0}}>.nextLevel{font-size:15px;background:var(--accent-color);color:var(--on-accent-color);zoom:1.2;margin-top:24px;>svg{transform:rotate(180deg)}&:hover{background:var(--hover-accent-color)}}}@media(max-height:700px){padding-block:8px;>h1{font-size:26px}>.scoreSummary{gap:8px;margin-block:12px;>.yourScore>strong{font-size:48px}}>.roundScores{margin-top:16px}>.resultActions{margin-top:16px;gap:12px}}}.myLevel{--content-padding: max(36px, calc((100vw - 1200px)/2) );height:100%;display:grid;grid-template-rows:auto auto auto minmax(0,1fr);padding-top:32px;>.backButton{justify-self:start;margin-inline:var(--content-padding);display:flex;align-items:center;gap:8px;font-size:12px;>svg{width:16px;height:16px;flex-shrink:0}}>h1{font-size:32px;font-weight:550;letter-spacing:-.045em;margin:28px var(--content-padding) 8px}>p{margin:0 var(--content-padding) 12px;color:var(--muted-text-color);font-size:13px}>.scoreContent{min-width:0;min-height:0;overflow-y:auto;overscroll-behavior:auto;padding:16px var(--content-padding) 0;scroll-padding-top:16px;mask-image:linear-gradient(to bottom,transparent,#000 16px);>.scoreError{color:var(--error-color)}>.scoreTable{overflow-x:auto;margin-top:30px;padding-bottom:8px;margin-bottom:32px;&:first-child{margin-top:0}>table{width:100%;border-collapse:collapse;font-size:12px;font-variant-numeric:tabular-nums;>caption{text-align:start;font-size:20px;font-weight:550;padding-bottom:16px}th,td{padding:15px 14px;border-bottom:1px solid var(--border-color);text-align:end;min-width:130px}th{font-weight:500}th:first-child{min-width:240px;text-align:start}small{display:block;font-size:10px;font-weight:400;color:var(--muted-text-color);margin-top:5px}[data-loaded=true]{background:var(--accent-overlay-color)}.notPlayed{color:var(--muted-text-color);opacity:.6}>tbody>tr{>th>span{display:inline-block;width:25px;color:var(--muted-text-color)}&:hover{background:var(--subtle-surface-color)}}>tfoot{color:var(--accent-color);font-size:15px;font-weight:550}}}}@media(max-width:1100px){--content-padding: 20px;padding-top:24px}}.meterHelp{display:inline-flex;flex-shrink:0;>button{display:grid;place-items:center;height:18px;width:16px;padding:2px 0;margin-inline-start:1px;border-radius:6px;background:transparent;color:var(--muted-text-color);opacity:.2;transition:opacity .15s,background-color .15s;&:is(:hover,:focus-visible):not(:disabled){opacity:1;background:color-mix(in srgb,currentColor 12%,transparent)}>svg{width:14px;height:14px}}>.meterTooltip{position:fixed;inset:auto;position-area:top;justify-self:anchor-center;position-try-fallbacks:flip-block;width:min(280px,calc(100vw - 24px));margin:0 0 8px;overflow:visible;padding:12px 14px;border:0;border-radius:12px;color:var(--text-color);background:color-mix(in srgb,light-dark(var(--surface-color),var(--subtle-surface-color)) 50%,transparent);backdrop-filter:blur(8px) saturate(1.15);box-shadow:0 8px 24px -6px var(--popover-shadow-color);font-size:12px;font-weight:400;line-height:1.5;opacity:0;pointer-events:none;transform:translateY(6px) scale(.96);transform-origin:bottom center;transition:opacity .15s,transform .15s var(--transition-easing),display .15s allow-discrete,overlay .15s allow-discrete;&:before{content:"";position:absolute;inset:-8px 0;z-index:-1}&:popover-open{opacity:1;transform:none;transition-duration:.2s}@starting-style{&:popover-open{opacity:0;transform:translateY(6px) scale(.96)}}@media(prefers-reduced-motion:reduce){transition:none}}}.gameMeterList{--game-meter-heading-bottom-row: minmax(min(16px, var(--game-meter-gap, 24px)), var(--game-meter-gap, 24px));--game-meter-first-heading-rows: minmax(min(16px, var(--game-meter-top-gap, 0px)), var(--game-meter-top-gap, 0px)) max-content var(--game-meter-heading-bottom-row);--game-meter-heading-rows: minmax(16px, 20px) max-content var(--game-meter-heading-bottom-row);--game-meter-divider-row: calc(var(--game-meter-inset, 0px) + 1px);--game-meter-spacing-row: minmax(11px, var(--game-meter-gap, 24px));--game-meter-rows: max-content minmax(5px, var(--game-meter-label-gap, 10px)) max-content;display:grid;grid-template-columns:minmax(0,1fr);align-content:start;min-width:0;height:100%;>.meterSectionHeading{display:grid;grid-template-rows:subgrid;grid-row:span 3;margin:0;font-size:15px;font-weight:500;>span{grid-row:2}&[data-start-risks=true]{grid-row:span 4;>span{grid-row:3}&:before{content:"";grid-row:1;border-bottom:1px solid var(--border-color);margin-inline:calc(-1 * var(--game-meter-inset, 0px))}}}>.gameMeter{display:grid;grid-template-rows:subgrid;grid-row:span 3;>.meterHeading{grid-row:1;display:flex;align-items:center;justify-content:space-between;gap:10px;font-size:var(--game-meter-label-size, 12px);>.meterLabel{flex:1;min-width:0;display:flex;align-items:center;gap:10px;>.labelText{min-width:0}.meterHelp{margin-inline-start:4px;vertical-align:middle}}>strong{flex-shrink:0;font-weight:500;font-variant-numeric:tabular-nums}.lockNumber{display:grid;place-items:center;flex-shrink:0;border-radius:8px;width:var(--game-meter-number-size, 24px);height:var(--game-meter-number-size, 24px);font-size:10px;background:var(--subtle-surface-color);color:var(--muted-text-color);transition:color .18s,background .18s}}&[data-target=true] .lockNumber{color:var(--accent-color);background:var(--accent-surface-color)}>.meterBar{grid-row:3;--threshold-shadow-color: color-mix(in srgb, var(--text-color) 14%, transparent);position:relative;>.threshold{position:absolute;inset-block:0px;width:0;border-inline-start:1px solid color-mix(in srgb,var(--text-color) 65%,transparent);translate:-50% 0;pointer-events:none;transition:left .18s var(--transition-easing);opacity:.5;&:before{content:"";position:absolute;inset-block:0;width:20px;background:linear-gradient(to right,var(--threshold-shadow-color),transparent)}&[data-bound=minimum]:before{right:1px;background:linear-gradient(to left,var(--threshold-shadow-color),transparent)}}}}}.gameDemo{--game-meter-gap: 14px;--game-meter-label-size: 11px;--game-meter-label-gap: 8px;margin:16px 0 0;>.demoScene{display:grid;grid-template-columns:minmax(0,1fr) minmax(240px,1.15fr);min-height:218px;border:1px solid var(--border-color);border-radius:16px;overflow:hidden;>.demoDocument{display:flex;flex-direction:column;padding:18px;background:var(--document-surface-color);>.demoLabel{font-size:11px;color:var(--muted-text-color)}>.demoSentence{flex:1;padding:18px 0;font-size:18px;line-height:1.65;letter-spacing:-.03em;overflow-wrap:anywhere;>.caret{display:inline-block;width:2px;height:1em;vertical-align:-.1em;margin-inline-start:2px;background:var(--accent-color);&[data-playing=true]{animation:gameDemoCaret 1s steps(1) infinite}}}>.demoFooter{display:flex;align-items:center;justify-content:space-between;gap:8px;font-size:10px;font-variant-numeric:tabular-nums;color:var(--muted-text-color);>.demoSuccess{display:flex;align-items:center;gap:4px;color:var(--accent-color);visibility:hidden;&[data-won=true]{visibility:visible}>svg{width:14px;height:14px}}}}>.demoMeters{--game-meter-inset: 18px;padding:var(--game-meter-inset);align-content:center;border-inline-start:1px solid var(--border-color);background:var(--surface-color)}}>figcaption{margin-top:10px;min-height:18px;text-align:center;color:var(--muted-text-color);font-size:11px;line-height:1.6}}@property --demo-fill-color{syntax: "<color>"; inherits: true; initial-value: transparent;}.gameDemoPlayback{--demo-fill-color: var(--accent-surface-color);min-width:112px;background-color:color-mix(in srgb,var(--demo-fill-color) 45%,transparent);background-image:linear-gradient(var(--demo-fill-color),var(--demo-fill-color));background-repeat:no-repeat;transition:background-size 65ms linear,--demo-fill-color .15s;&:hover:not(:disabled){--demo-fill-color: light-dark(color-mix(in srgb, var(--accent-color) 20%, var(--accent-surface-color)), var(--hover-accent-surface-color));background-color:color-mix(in srgb,var(--demo-fill-color) 45%,transparent)}}@keyframes gameDemoCaret{50%{opacity:0}}.gameHelpDialog{width:min(740px,calc(100vw - 32px));max-height:calc(100dvh - 40px);padding:24px;border:1px solid var(--border-color);border-radius:24px;background:var(--surface-color);color:var(--text-color);box-shadow:0 20px 70px -20px var(--popover-shadow-color);overflow-y:auto;overscroll-behavior:auto;scrollbar-width:thin;opacity:0;transform:translateY(24px) scale(.96);transition:opacity .18s,transform .22s var(--transition-easing),display .22s allow-discrete,overlay .22s allow-discrete;&[open]{opacity:1;transform:none}&::backdrop{background:color-mix(in srgb,var(--background-color) 65%,transparent);opacity:0;transition:opacity .18s,display .22s allow-discrete,overlay .22s allow-discrete}&[open]::backdrop{opacity:1}>h2{margin:0 0 8px;font-size:22px;font-weight:550;letter-spacing:-.04em}>p{margin:0;font-size:12px;line-height:1.7;color:var(--muted-text-color)}>.dialogActions{display:flex;justify-content:space-between;align-items:center;gap:16px;margin-top:16px;>button{font-size:12px}>.startButton{background:var(--accent-color);color:var(--on-accent-color);&:hover:not(:disabled){background:var(--hover-accent-color)}}}@media(max-height:700px){padding:20px}@starting-style{&[open]{opacity:0;transform:translateY(24px) scale(.96)}&[open]::backdrop{opacity:0}}}.roundFeedback{color:var(--accent-color);font-size:13px;text-align:end;opacity:0;transition:opacity .18s;&[data-visible=true]{opacity:1;animation:feedbackEnter .22s var(--transition-easing)}}@keyframes feedbackEnter{0%{transform:translateY(6px) scale(.98)}to{transform:none}}.playRound{--writing-padding: 26px;--meters-padding: 30px;view-transition-name:play-round;display:flex;flex-direction:column;height:100%;min-height:0;max-width:1100px;margin:0 auto;padding-top:24px;>.gameHeading,>.roundHeader,>.roundFooter{padding-inline:calc(var(--writing-padding) + 1px) calc(var(--meters-padding) + 1px)}h1{font-weight:550;letter-spacing:-.045em}>.spacer{flex-grow:1}>.gameHeading{display:flex;align-items:center;gap:20px;font-size:12px;color:var(--muted-text-color);>.backButton{display:flex;align-items:center;gap:8px;font-size:12px;>svg{width:16px;height:16px;flex-shrink:0}}.roundCount{white-space:nowrap;font-variant-numeric:tabular-nums}}>.roundHeader{margin:24px 0 18px;>.roundIntro{>h1{font-size:32px;margin:0 0 10px}>p{color:var(--muted-text-color);font-size:13px;margin:0;line-height:1.5}}}>.gameBoard{flex:0 1 auto;min-height:200px;display:grid;grid-template-columns:minmax(0,1.3fr) minmax(260px,1fr);border:1px solid var(--border-color);border-radius:24px;overflow:clip;overflow-clip-margin:1px;background:var(--surface-color);box-shadow:var(--surface-shadow);>.writingArea{contain:size;contain-intrinsic-height:calc(456px - 2px - 2 * var(--writing-padding));min-height:0;padding:var(--writing-padding);display:flex;flex-direction:column;background:var(--document-surface-color);border-radius:inherit;border-start-end-radius:0;border-end-end-radius:0;transition:box-shadow .18s;&:has(>textarea:is(:hover,[data-demo-hover=true]):not(:disabled)):not(:focus-within){box-shadow:0 0 0 1px var(--hover-border-color)}&:focus-within{box-shadow:0 0 0 1px color-mix(in srgb,var(--accent-color) 65%,transparent)}>.writingHeading{font-size:15px}>textarea{flex:1;resize:none;background:transparent;border:0;padding:22px 0;font-size:24px;letter-spacing:-.035em;line-height:1.65;min-height:0;overflow:auto;width:100%;&::placeholder{opacity:.6}&:focus-visible{outline:none}}>.writingFooter{display:flex;justify-content:flex-end;color:var(--muted-text-color);font-size:11px;>.characterBudget{font-variant-numeric:tabular-nums;border-radius:8px;background:var(--subtle-surface-color);padding:4px 8px;&[data-full=true]{color:var(--accent-color);background:var(--accent-surface-color)}}}}>.gameMeters{min-height:0;display:flex;flex-direction:column;padding:0 var(--meters-padding) var(--meters-padding);border-inline-start:1px solid var(--border-color);>.gameMeterViewport{--game-meter-inset: var(--meters-padding);--game-meter-top-gap: 20px;flex:1 1 auto;min-height:0;overflow-y:auto;margin-inline:calc(-1 * var(--meters-padding));padding:0 var(--meters-padding) 26px;scrollbar-width:thin}>.gameTiming{flex:0 1 auto;display:flex;justify-content:flex-end;align-items:center;font-size:18px;height:calc(1lh + 37px);min-height:calc(1lh + 29px);padding:14px var(--meters-padding);margin-top:auto;margin-inline:calc(-1 * var(--meters-padding));&:last-child{margin-bottom:calc(-1 * var(--meters-padding))}border-top:1px solid var(--border-color);>strong{font-weight:500;font-variant-numeric:tabular-nums;>span{font-size:11px;color:var(--muted-text-color)}}}>.gameError{margin-top:24px;color:var(--error-color);font-size:12px;overflow-wrap:anywhere;>button{display:block;margin-top:8px}}}}>.roundFooter{display:flex;justify-content:flex-end;align-items:center;gap:16px;margin-top:18px;>.howToPlay{margin-inline-end:auto;font-size:12px}>.nextButton{flex-shrink:0;border-radius:12px;transition:background-color .15s,color .15s,box-shadow .18s;&:not(:disabled){background:var(--accent-color);color:var(--on-accent-color);box-shadow:0 4px 16px -6px color-mix(in srgb,var(--accent-color) 60%,transparent);&:is(:hover,[data-demo-hover=true]){background:var(--hover-accent-color)}}}}@media(max-height:800px){padding-top:0;>.roundHeader{margin:20px 0 16px}>.roundFooter{margin-top:16px}}}::view-transition-old(play-round){animation:roundLeave .24s ease-in both}::view-transition-new(play-round){animation:roundEnter .28s var(--transition-easing) both}::view-transition-group(play-round){animation-duration:.28s}@media(prefers-reduced-motion:no-preference){:root:active-view-transition-type(next-round){--mode-slide-offset: 24px;&::view-transition-group(play-round){animation-duration:.24s}&::view-transition-old(play-round){animation:appModeLeave .22s var(--transition-easing) both;mix-blend-mode:normal}&::view-transition-new(play-round){animation:appModeEnter .24s var(--transition-easing) both;mix-blend-mode:normal}}}@keyframes roundLeave{to{opacity:0;transform:translate(-24px) scale(.97)}}@keyframes roundEnter{0%{opacity:0;transform:translate(24px) scale(.97)}to{opacity:1;transform:none}}@media(prefers-reduced-motion:reduce){::view-transition-group(play-round),::view-transition-old(play-round),::view-transition-new(play-round){animation:none}}.play{--content-padding: max(36px, calc((100vw - 1100px)/2) );display:flex;flex-direction:column;min-height:100%;padding-top:56px;>.appVersion{align-self:flex-end;margin-top:auto;padding:24px 16px 12px;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:11px;opacity:.16}h1{font-size:clamp(28px,3.2vw,42px);line-height:1.15;font-weight:550;letter-spacing:-.055em;margin:12px 0}>.intro{position:relative;>button{position:absolute;inset-inline-end:0;top:0;display:flex;align-items:center;gap:8px;>svg{width:18px;height:18px}}margin:5vh var(--content-padding) 36px}>.gameChoices{margin-inline:var(--content-padding);display:grid;grid-template-columns:1fr 1fr;gap:24px;>.gameChoice{display:flex;flex-direction:column;align-items:flex-start;text-align:start;padding:32px;min-height:300px;border-radius:26px;background:var(--surface-color);color:var(--text-color);box-shadow:var(--surface-shadow);transition:transform .2s var(--transition-easing),background-color .15s;&:is(:hover,[data-demo-hover=true]):not(:disabled){transform:translateY(-4px);background:light-dark(color-mix(in srgb,var(--accent-color) 18%,var(--surface-color)),var(--hover-surface-color))}>.gameSymbol{display:grid;place-items:center;width:64px;height:64px;border-radius:20px;margin-bottom:30px;color:var(--accent-color);background:var(--accent-overlay-color);>svg{width:36px;height:36px}}&:last-child>.gameSymbol{color:var(--secondary-accent-color);background:color-mix(in srgb,var(--secondary-accent-color) 12%,transparent)}>.gameName{font-size:22px;font-weight:550;letter-spacing:-.04em}>.description{font-size:12px;color:var(--muted-text-color);margin-top:8px;font-weight:400}>.gameMeta{width:100%;display:flex;align-items:center;gap:8px;padding-top:28px;margin-top:auto;color:var(--muted-text-color);font-size:11px;white-space:nowrap;>.gameTag{display:flex;align-items:center;gap:6px;padding:5px 9px;border-radius:8px;background:var(--subtle-overlay-color);>svg{width:14px;height:14px}}>.playGame{display:flex;align-items:center;gap:8px;margin-inline-start:auto;font-size:13px;color:var(--accent-color);>svg{width:18px;height:18px;rotate:180deg}}}}}@media(max-width:1100px){--content-padding: 20px;padding-top:48px}@media(max-width:900px){>.gameChoices{grid-template-columns:1fr}}}.updateToast{inset:auto 24px 24px auto;margin:0;padding:18px;width:min(380px,calc(100vw - 32px));border:1px solid var(--border-color);border-radius:18px;background:color-mix(in srgb,var(--surface-color) 92%,transparent);backdrop-filter:blur(24px);color:var(--text-color);box-shadow:0 12px 48px -14px var(--popover-shadow-color);opacity:0;transform:translateY(10px);transition:opacity .18s,transform .18s,display .18s allow-discrete,overlay .18s allow-discrete;&:popover-open{display:grid;grid-template-columns:1fr auto;gap:14px;opacity:1;transform:none}@starting-style{&:popover-open{opacity:0;transform:translateY(10px)}}>.updateMessage{align-self:center;min-width:0;>strong{display:block;font-size:13px;font-weight:550}>span{display:block;margin-top:6px;font-size:11px;line-height:1.6;color:var(--muted-text-color);overflow-wrap:anywhere}}>.dismissUpdate{align-self:start;padding:5px;background:transparent;color:var(--muted-text-color);display:flex;>svg{width:16px;height:16px}&:hover{background:var(--hover-surface-color);color:var(--text-color)}}>.installUpdate{position:relative;grid-column:1 / -1;overflow:hidden;font-size:12px;padding:10px 16px;background:var(--accent-surface-color);&:hover:not(:disabled){background:var(--hover-accent-surface-color)}&:disabled{opacity:1}>span{position:relative}>progress{appearance:none;position:absolute;inset:0;width:100%;height:100%;border:0;background:transparent;&::-webkit-progress-bar{background:transparent}&::-webkit-progress-value{background:var(--accent-overlay-color);transition:width .16s linear}&:indeterminate{background:linear-gradient(90deg,transparent,var(--accent-overlay-color),transparent) -100% 0 / 50% 100% no-repeat;animation:updateToastProgress 1.5s ease-in-out infinite}}}}@keyframes updateToastProgress{to{background-position:200% 0}}#root{width:100%;height:100dvh;overflow:hidden}.app{display:grid;grid-template-rows:auto minmax(0,1fr);height:100%;>.mainContent{width:100%;max-width:1500px;min-height:0;overflow:hidden;margin:0 auto;padding:32px 36px 48px;transition:opacity .22s,filter .22s;&[data-blocked=true]{opacity:.2;filter:blur(2px)}>.page{height:100%;min-height:0;animation:appPageEnter .22s var(--transition-easing)}&[data-mode=play]>.page{overflow-y:auto;overscroll-behavior:auto}&:has(>.page>.play){max-width:none;padding:0;>.page{scrollbar-gutter:stable}}&:has(>.page>:is(.levelPicker,.myLevel)){max-width:none;padding:0;>.page{overflow:hidden}}&[data-mode=playground]{display:flex;max-width:none;padding:0;>.page{display:flex;flex-direction:column;flex:1;min-width:0}}}@media(max-width:1100px){>.mainContent{padding:24px 20px}}}@keyframes appPageEnter{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}::view-transition-old(root),::view-transition-new(root){animation:none;mix-blend-mode:normal}:root:active-view-transition-type(to-playground){--mode-slide-offset: 24px}:root:active-view-transition-type(to-play){--mode-slide-offset: -24px}:root:active-view-transition-type(to-playground,to-play){.mainContent{view-transition-name:app-mode;*{view-transition-name:none}}&::view-transition{pointer-events:none}&::view-transition-group(app-mode){animation-duration:.24s}&::view-transition-old(app-mode){animation:appModeLeave .22s var(--transition-easing) both;mix-blend-mode:normal}&::view-transition-new(app-mode){animation:appModeEnter .24s var(--transition-easing) both;mix-blend-mode:normal}}@keyframes appModeLeave{to{opacity:0;transform:translate(calc(-1 * var(--mode-slide-offset)))}}@keyframes appModeEnter{0%{opacity:0;transform:translate(var(--mode-slide-offset))}to{opacity:1;transform:none}}:root{font-family:Inter Variable,Inter,system-ui,sans-serif;line-height:1.5;font-weight:400;color-scheme:light dark;background:var(--background-color);color:var(--text-color);font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;--transition-easing: cubic-bezier(.4, 0, .2, 1);--background-color: light-dark(#f4f5f2, #141916);--surface-color: light-dark(#ffffff, #1c221f);--subtle-surface-color: light-dark(#f5f7f4, #232b26);--subtle-overlay-color: light-dark(rgb(155 175 145 / 10%), rgb(98 124 101 / 10%));--accent-overlay-color: light-dark(rgb(125 190 125 / 20%), rgb(100 162 111 / 25%));--tag-overlay-color: light-dark(rgb(102 153 72 / 10%), rgb(134 198 152 / 15%));--document-surface-color: light-dark(#fcfdfb, #1e2520);--text-color: light-dark(#263c32, #e2eee5);--muted-text-color: light-dark(#718078, #96a79c);--border-color: light-dark(#263c3212, #96a79c1c);--top-bar-color: light-dark(#edf1eb, #1a211c);--top-bar-shadow: 0 4px 20px -12px light-dark(#263c3233, #00000066);--accent-color: light-dark(#337654, #8ace9e);--on-accent-color: light-dark(#ffffff, #183c28);--accent-surface-color: light-dark(#e5f2e5, #2e4233);--hover-border-color: color-mix(in srgb, var(--accent-color) 20%, transparent);--hover-accent-color: color-mix(in srgb, var(--accent-color) 84%, light-dark(black, white));--hover-surface-color: color-mix(in srgb, var(--accent-color) 10%, var(--surface-color));--hover-accent-surface-color: light-dark(var(--hover-surface-color), color-mix(in srgb, var(--accent-color) 16%, var(--accent-surface-color)));--track-color: light-dark(#eaf0e8, #303d33);--error-color: light-dark(#b23e3e, #ffaaa4);--surface-shadow: 0 12px 40px -28px light-dark(#51664b40, #00000060);--popover-shadow-color: light-dark(#243c3650, #000000a0);--secondary-accent-color: light-dark(#7167a3, #b3a4ed)}*{box-sizing:border-box;user-select:none}[hidden]{display:none!important}body{margin:0;min-width:360px;min-height:100vh;overflow:hidden}a{cursor:default;color:var(--accent-color);text-decoration:none}a:is(:hover,[data-demo-hover=true]){text-decoration:underline}button,input,textarea{font:inherit;color:inherit}button{cursor:default;user-select:none;border:0;border-radius:10px;padding:9px 14px;background:var(--accent-surface-color);color:var(--accent-color);font-weight:500;transition:background-color .15s;&:is(:hover,[data-demo-hover=true]):not(:disabled){background-color:light-dark(color-mix(in srgb,var(--accent-color) 20%,var(--accent-surface-color)),var(--hover-accent-surface-color))}&:disabled{opacity:.5}}input,textarea{user-select:text;border:1px solid var(--border-color);border-radius:10px;padding:11px 12px;background:var(--subtle-surface-color);font-size:12px;transition:border-color .15s;&:is(:hover,[data-demo-hover=true]):not(:disabled):not(:focus){border-color:var(--hover-border-color)}&:focus{outline:none;border-color:var(--accent-color)}&:disabled{opacity:.55}&::placeholder{color:var(--muted-text-color)}}:focus-visible{outline:2px solid var(--accent-color);outline-offset:3px}::selection{background:var(--accent-surface-color);color:var(--text-color)}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important}}
|