chiltepin-studio 0.16.0

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/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Chiltepin contributors
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,60 @@
1
+ # chiltepin-studio
2
+
3
+ Chiltepin Studio — a full-screen local visual editor for Chiltepin docs (Markdown +
4
+ typed YAML blocks). The files on disk stay the single source of truth: the
5
+ studio reads and writes them through the CLI's JSON file bridge, and all
6
+ parsing, validation, and rendering happens in the browser via `chiltepin-core`
7
+ and `chiltepin-render`.
8
+
9
+ ## Usage
10
+
11
+ Run it from a Chiltepin project:
12
+
13
+ ```sh
14
+ chiltepin studio
15
+ ```
16
+
17
+ The CLI serves the built app (from this package's `dist/app/`) together with
18
+ the file-bridge API (`/api/*` + `/__events` SSE) and opens the browser.
19
+
20
+ ## Editing model
21
+
22
+ Authoring is keyboard-first, directly on the rendered doc:
23
+
24
+ - **Click** selects — a block on the canvas, or a part inside a rendered
25
+ block (a sequence message, a diagram node, a table cell).
26
+ - **Enter** (or double-click) edits the selection: a block opens the edit
27
+ sheet — a schema-generated form with smart per-field controls, plus a raw
28
+ YAML tab — while a diagram part opens an in-place micro-editor for exactly
29
+ that YAML value.
30
+ - **Arrow keys** move the selected part — grid cells for diagram nodes,
31
+ reorder for list items, cell navigation on table cells; ⌥+arrows nudge the
32
+ hovered part, ⌫ deletes an item, Tab cycles parts, Esc pops back out.
33
+ - **Drag** moves parts on the diagram itself — block-graph nodes snap to
34
+ grid cells, order-based lists reorder with a live insertion indicator.
35
+ - **Draw a node** — press <kbd>D</kbd> on a selected diagram block (or the
36
+ pen in its toolbar) and sketch: a rectangle becomes a process or a service,
37
+ a diamond a decision or a gateway, a cylinder a database, a pill or an
38
+ ellipse a start/end. A line between two nodes becomes an edge in the
39
+ direction you drew it; from a node into empty space it adds a node there and
40
+ connects it. An unclear stroke asks instead of guessing. Esc leaves pen mode.
41
+ - **Insert** via the `+` menu (a searchable gallery of every insertable
42
+ block with live-rendered thumbnails) or the `/` slash command; `?` shows
43
+ the full shortcut list.
44
+
45
+ Edits are written back as surgical rewrites of individual fenced blocks, and
46
+ outside changes to the same files (e.g. by an AI agent) repaint live over SSE.
47
+
48
+ ## Development
49
+
50
+ ```sh
51
+ # terminal 1 — the file-bridge API on 127.0.0.1:4174 (chiltepin studio --no-open, or a mock)
52
+ # terminal 2 — the app with hot reload; /api and /__events proxy to :4174
53
+ pnpm --filter chiltepin-studio dev
54
+ ```
55
+
56
+ `pnpm --filter chiltepin-studio build` produces:
57
+
58
+ - `dist/app/` — the static app (Vite build), and
59
+ - `dist/index.js` + `dist/index.d.ts` — a tiny Node entry exporting
60
+ `assetsPath()` so the CLI can locate `dist/app/`.
@@ -0,0 +1 @@
1
+ :root{color-scheme:dark;--stu-navy: #233a5e;--stu-navy-strong: #1b2e4c;--stu-on-navy: #fbfaf7;--stu-display: #1f2430;--stu-teal: #2f6f6a;--stu-terra: #b04a25;--stu-terra-soft: rgba(176, 74, 37, .09);--stu-ink: #1f2430;--stu-slate: #4f5868;--stu-gray: #646d7b;--stu-faint: #66707e;--stu-bg: #f7f6f2;--stu-panel: #fbfaf7;--stu-well: #efede8;--stu-rule: rgba(31, 36, 48, .14);--stu-rule-soft: rgba(31, 36, 48, .07);--stu-amber: #955d10;--stu-amber-soft: #f7ecd8;--stu-red: #a13b2e;--stu-red-soft: #f7e4df;--stu-on-red: #fff;--stu-green: #3f7d4e;--stu-green-soft: #e7f0e2;--stu-navy-soft: color-mix(in srgb, var(--stu-navy) 9%, var(--stu-panel));--stu-teal-soft: color-mix(in srgb, var(--stu-teal) 12%, var(--stu-panel));--stu-ring: 0 0 0 3px rgba(35, 58, 94, .16);--stu-switch-off: #c9c6bd;--stu-tip-bg: #1f2430;--stu-tip-fg: #f7f6f2;--stu-scrim: rgba(31, 36, 48, .4);--stu-shadow: 0 1px 2px rgba(31, 36, 48, .05), 0 10px 24px -12px rgba(31, 36, 48, .16);--stu-shadow-lift: 0 2px 4px rgba(31, 36, 48, .06), 0 18px 44px -16px rgba(31, 36, 48, .28);--stu-radius: 10px;--stu-font: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;--stu-mono: "JetBrains Mono", ui-monospace, "SF Mono", SFMono-Regular, Menlo, Consolas, monospace;--stu-sel: #233a5e;--stu-sel-line: #2f6f6a;--stu-navy: #e6ddc7;--stu-navy-strong: #f0e9d8;--stu-on-navy: #15171d;--stu-display: #e8e6df;--stu-teal: #8ec4ba;--stu-terra: #e0714a;--stu-terra-soft: rgba(224, 113, 74, .14);--stu-ink: #e8e6df;--stu-slate: #aeb5c3;--stu-gray: #9aa3b3;--stu-faint: #8a93a3;--stu-bg: #15171d;--stu-panel: #1d2028;--stu-well: #191c23;--stu-rule: rgba(232, 230, 223, .14);--stu-rule-soft: rgba(232, 230, 223, .07);--stu-amber: #d9a05a;--stu-amber-soft: #322818;--stu-red: #e0705c;--stu-red-soft: #3a221d;--stu-on-red: #2b130d;--stu-green: #94bd85;--stu-green-soft: #23301e;--stu-ring: 0 0 0 3px rgba(230, 221, 199, .22);--stu-switch-off: #3a4050;--stu-tip-bg: #e8e6df;--stu-tip-fg: #15171d;--stu-scrim: rgba(5, 5, 7, .6);--stu-shadow: 0 1px 2px rgba(0, 0, 0, .3), 0 10px 24px -12px rgba(0, 0, 0, .5);--stu-shadow-lift: 0 2px 4px rgba(0, 0, 0, .35), 0 18px 44px -16px rgba(0, 0, 0, .65)}:root[data-theme=light]{color-scheme:light;--stu-navy: #233a5e;--stu-navy-strong: #1b2e4c;--stu-on-navy: #fbfaf7;--stu-display: #1f2430;--stu-teal: #2f6f6a;--stu-terra: #b04a25;--stu-terra-soft: rgba(176, 74, 37, .09);--stu-ink: #1f2430;--stu-slate: #4f5868;--stu-gray: #646d7b;--stu-faint: #66707e;--stu-bg: #f7f6f2;--stu-panel: #fbfaf7;--stu-well: #efede8;--stu-rule: rgba(31, 36, 48, .14);--stu-rule-soft: rgba(31, 36, 48, .07);--stu-amber: #955d10;--stu-amber-soft: #f7ecd8;--stu-red: #a13b2e;--stu-red-soft: #f7e4df;--stu-on-red: #fff;--stu-green: #3f7d4e;--stu-green-soft: #e7f0e2;--stu-navy-soft: color-mix(in srgb, var(--stu-navy) 9%, var(--stu-panel));--stu-teal-soft: color-mix(in srgb, var(--stu-teal) 12%, var(--stu-panel));--stu-ring: 0 0 0 3px rgba(35, 58, 94, .16);--stu-switch-off: #c9c6bd;--stu-tip-bg: #1f2430;--stu-tip-fg: #f7f6f2;--stu-scrim: rgba(31, 36, 48, .4);--stu-shadow: 0 1px 2px rgba(31, 36, 48, .05), 0 10px 24px -12px rgba(31, 36, 48, .16);--stu-shadow-lift: 0 2px 4px rgba(31, 36, 48, .06), 0 18px 44px -16px rgba(31, 36, 48, .28);--stu-radius: 10px;--stu-font: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;--stu-mono: "JetBrains Mono", ui-monospace, "SF Mono", SFMono-Regular, Menlo, Consolas, monospace;--stu-sel: #233a5e;--stu-sel-line: #2f6f6a}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{font-family:var(--stu-font);color:var(--stu-ink);background:var(--stu-bg);-webkit-font-smoothing:antialiased}button{font-family:inherit}kbd{font-family:var(--stu-mono);font-size:10px;font-weight:600;background:var(--stu-rule-soft);border:1px solid var(--stu-rule);border-bottom-width:2px;border-radius:5px;padding:1px 5px;color:var(--stu-slate)}@keyframes stu-fade-in{0%{opacity:0}to{opacity:1}}@keyframes stu-pop-in{0%{opacity:0;transform:translateY(-3px) scale(.985)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes stu-sheet-in{0%{opacity:0;transform:scale(.98)}to{opacity:1;transform:scale(1)}}.stu-app{display:flex;flex-direction:column;height:100%;overflow:hidden}.stu-topbar{display:flex;align-items:center;gap:8px;height:48px;padding:0 16px;background:var(--stu-panel);border-bottom:1px solid var(--stu-rule);flex:none;z-index:20}.stu-topbar-wide{display:contents}.stu-topbar-more{display:none}.stu-morebtn{padding:0 9px;font-size:15px;line-height:1}.stu-spacer{flex:1}.stu-autosave{display:inline-flex;align-items:center;gap:7px;font-size:12px;font-weight:500;color:var(--stu-slate);cursor:pointer;user-select:none}.stu-autosave input,.stu-toggle input{position:absolute;opacity:0;width:0;height:0}.stu-switch{width:30px;height:17px;border-radius:999px;background:var(--stu-switch-off);position:relative;transition:background .15s;flex:none}.stu-switch:after{content:"";position:absolute;top:2px;left:2px;width:13px;height:13px;border-radius:50%;background:#fdfcf7;box-shadow:0 1px 2px #0003;transition:left .15s}.stu-autosave input:checked+.stu-switch,.stu-toggle input:checked+.stu-switch{background:var(--stu-teal)}.stu-autosave input:checked+.stu-switch:after,.stu-toggle input:checked+.stu-switch:after{left:15px}.stu-modearea{position:relative;display:flex;flex-direction:column;flex:1;min-height:0;background:var(--stu-bg)}.stu-modeframe{flex:1;width:100%;min-height:0;border:0;background:var(--stu-panel)}.stu-present-back{position:absolute;top:14px;right:18px;z-index:10;display:inline-flex;align-items:center;gap:7px;padding:6px 14px;border:1px solid var(--stu-rule);border-radius:999px;background:color-mix(in srgb,var(--stu-panel) 85%,transparent);backdrop-filter:blur(6px);color:var(--stu-navy);font-size:12px;font-weight:600;letter-spacing:.01em;cursor:pointer;box-shadow:0 1px 2px #0000000f}.stu-present-back:hover{background:var(--stu-panel);border-color:var(--stu-navy)}.stu-present-empty{margin:auto;padding:24px 32px;font-size:13px;color:var(--stu-gray)}.stu-canvas{flex:1;min-width:0;overflow-y:auto;padding:36px 48px 140px;background:var(--stu-bg)}.stu-page{max-width:1040px;margin:0 auto;border-radius:14px;box-shadow:var(--stu-shadow);overflow:hidden}.stu-page>.docskin{padding-bottom:96px}.stu-render-error{max-width:720px;margin:40px auto;padding:16px 20px;background:var(--stu-red-soft);color:var(--stu-red);border-radius:var(--stu-radius);font-size:13px}.stu-seg{position:relative;border-radius:var(--stu-radius);transition:box-shadow .14s ease-out}.stu-seg:hover{box-shadow:0 0 0 1px #1f24303d,0 2px 10px -4px #1f243029}.stu-seg-selected,.stu-seg-selected:hover{box-shadow:0 0 0 2px var(--stu-sel)}.stu-seg-editing,.stu-seg-editing:hover{box-shadow:none}.stu-seg-html{padding:2px 6px}.stu-blocktools{position:absolute;top:-14px;right:10px;display:inline-flex;align-items:center;gap:1px;background:var(--stu-panel);border:1px solid var(--stu-rule);border-radius:9px;box-shadow:var(--stu-shadow);padding:2px;z-index:3;opacity:0;visibility:hidden;transform:translateY(2px);transition:opacity .13s ease-out,transform .13s ease-out,visibility .13s}.stu-seg:hover .stu-blocktools,.stu-seg-selected .stu-blocktools{opacity:1;visibility:visible;transform:translateY(0)}.stu-tool{display:inline-flex;align-items:center;justify-content:center;width:26px;height:26px;border:none;background:none;border-radius:7px;color:var(--stu-slate);cursor:pointer;padding:0;transition:background .12s ease-out,color .12s ease-out}.stu-tool:hover:not(:disabled){background:var(--stu-navy-soft);color:var(--stu-navy)}.stu-tool:disabled{opacity:.35;cursor:default}.stu-tool-grip{cursor:grab;color:var(--stu-faint)}.stu-tool-grip:active{cursor:grabbing}.stu-tool-on,.stu-tool-on:hover:not(:disabled){background:var(--stu-terra-soft);color:var(--stu-terra)}.stu-tool-danger:hover:not(:disabled){background:var(--stu-red-soft);color:var(--stu-red)}.stu-placeholder{display:flex;align-items:center;gap:10px;padding:14px 16px;margin:4px 6px;border-radius:var(--stu-radius);font-size:12.5px;color:var(--stu-gray)}.stu-placeholder-meta{background:var(--stu-navy-soft)}.stu-placeholder-empty{border:1.5px dashed var(--stu-rule)}.stu-placeholder-chip{font-family:var(--stu-mono);font-size:10.5px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:var(--stu-navy);background:color-mix(in srgb,var(--stu-navy) 10%,transparent);padding:2px 8px;border-radius:999px;flex:none}.stu-gap{position:relative;height:20px;margin:0 6px;display:flex;align-items:center;justify-content:center;border-radius:6px}.stu-gap-line{position:absolute;left:8px;right:8px;top:50%;border-top:2px solid transparent;border-radius:2px;pointer-events:none;transition:border-color .13s ease-out}.stu-gap:hover .stu-gap-line{border-top-color:#233a5e4d}.stu-gap-plus{position:relative;display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;border-radius:50%;border:1px solid var(--stu-rule);background:var(--stu-panel);color:var(--stu-navy);cursor:pointer;box-shadow:var(--stu-shadow);opacity:0;transform:scale(.9);transition:opacity .13s ease-out,transform .13s ease-out,background .13s ease-out;z-index:2;padding:0}.stu-gap:hover .stu-gap-plus,.stu-gap-plus:focus-visible{opacity:1;transform:scale(1)}.stu-gap-plus:hover{background:var(--stu-navy);border-color:var(--stu-navy);color:var(--stu-on-navy)}.stu-gap-armed{height:26px}.stu-gap-armed .stu-gap-line{border-top-color:#233a5e6b;border-top-style:dashed}.stu-gap-over{background:#2f6f6a1f}.stu-gap-over .stu-gap-line{border-top-width:2.5px;border-top-color:var(--stu-sel-line);border-top-style:solid}.stu-prose-editor{display:block;width:calc(100% - 12px);margin:4px 6px;border:none;border-radius:var(--stu-radius);box-shadow:0 0 0 2px var(--stu-sel);padding:12px 14px;font-family:inherit;font-size:14px;line-height:1.6;color:inherit;background:#233a5e0a;resize:none;outline:none}.stu-ghost{display:flex;flex-direction:column;align-items:center;gap:14px;padding:72px 24px;margin:8px 6px;border:1.5px dashed var(--stu-rule);border-radius:12px;color:var(--stu-gray);font-size:13px}.stu-ghost-plus{display:inline-flex;align-items:center;justify-content:center;width:40px;height:40px;border-radius:50%;border:1px solid var(--stu-rule);background:var(--stu-panel);color:var(--stu-navy);cursor:pointer;box-shadow:var(--stu-shadow);transition:background .13s ease-out,color .13s ease-out,transform .13s ease-out}.stu-ghost-plus:hover{background:var(--stu-navy);color:var(--stu-on-navy);transform:scale(1.05)}.stu-hero{display:flex;align-items:center;justify-content:center;min-height:70%}.stu-hero-card{background:var(--stu-panel);border-radius:16px;box-shadow:var(--stu-shadow);padding:48px 56px;text-align:center;max-width:460px}.stu-hero-mark{width:44px;height:44px;margin:0 auto 18px;border-radius:50%;background:radial-gradient(circle at 50% 62%,var(--stu-panel) 0 34%,var(--stu-navy) 35%);border:2.5px solid var(--stu-navy)}.stu-hero-card h1{margin:0 0 10px;font-size:20px;font-weight:750;letter-spacing:-.02em;color:var(--stu-display)}.stu-hero-card p{margin:0;font-size:13.5px;line-height:1.6;color:var(--stu-gray)}.stu-hero-card code{font-family:var(--stu-mono);font-size:12px;background:var(--stu-rule-soft);padding:1px 6px;border-radius:5px;color:var(--stu-teal)}.stu-cardgrid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.stu-card{display:flex;flex-direction:column;align-items:stretch;gap:4px;min-width:0;overflow:hidden;border:1px solid var(--stu-rule);border-radius:10px;background:var(--stu-panel);padding:6px 6px 8px;cursor:pointer;text-align:left;transition:border-color .13s ease-out,box-shadow .13s ease-out,transform .13s ease-out}.stu-card:hover{border-color:var(--stu-navy);box-shadow:var(--stu-shadow);transform:translateY(-1px)}.stu-card:focus-visible{outline:none;border-color:var(--stu-navy);box-shadow:var(--stu-ring)}.stu-thumb{position:relative;height:106px;border-radius:7px;background:var(--stu-well);border:1px solid var(--stu-rule-soft);overflow:hidden;pointer-events:none}.stu-thumb-doc{transform-origin:top left;padding:10px 12px;background:transparent!important}.stu-thumb-blank{display:flex;align-items:center;justify-content:center;height:100%;font-family:var(--stu-mono);font-size:11px;color:var(--stu-faint)}.stu-card-head{display:flex;align-items:baseline;gap:6px;min-width:0;margin-top:3px;padding:0 2px}.stu-card-name{font-size:12px;font-weight:600;color:var(--stu-ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.stu-card-type{font-family:var(--stu-mono);font-size:9.5px;font-weight:600;color:var(--stu-navy);background:var(--stu-navy-soft);padding:1px 6px;border-radius:999px;flex:none}.stu-card-desc{font-size:10.5px;line-height:1.4;color:var(--stu-gray);padding:0 2px;overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}.stu-picker-compact{position:fixed;width:420px;max-width:calc(100vw - 24px);background:var(--stu-panel);border:1px solid var(--stu-rule);border-radius:12px;box-shadow:var(--stu-shadow-lift);z-index:50;display:flex;flex-direction:column;overflow:hidden;animation:stu-pop-in .14s ease-out}.stu-picker-compact-centered{top:16vh;left:50%;transform:translate(-50%)}.stu-picker-search{display:flex;align-items:center;gap:9px;padding:11px 13px;border-bottom:1px solid var(--stu-rule);color:var(--stu-faint);flex:none}.stu-picker-search input{flex:1;border:none;outline:none;font-family:inherit;font-size:13.5px;color:var(--stu-ink);background:none}.stu-picker-search kbd{font-family:var(--stu-font);font-size:10px;color:var(--stu-faint);border:1px solid var(--stu-rule);border-radius:4px;padding:0 4px;background:var(--stu-well)}.stu-picker-list{list-style:none;margin:0;padding:6px;max-height:322px;overflow-y:auto}.stu-picker-item{display:flex;align-items:center;gap:8px;width:100%;border:none;background:none;padding:7px 9px;border-radius:8px;cursor:pointer;text-align:left}.stu-picker-item-active{background:var(--stu-navy-soft)}.stu-picker-item-name{font-size:12.5px;font-weight:600;color:var(--stu-ink);flex:none}.stu-picker-item-active .stu-picker-item-name{color:var(--stu-navy)}.stu-picker-item-active .stu-card-type{background:color-mix(in srgb,var(--stu-navy) 16%,transparent)}.stu-picker-item-fam{margin-left:auto;font-size:10.5px;color:var(--stu-faint);white-space:nowrap}.stu-picker-none{padding:18px;text-align:center;font-size:12.5px;color:var(--stu-faint)}.stu-app{--stu-sheetw: min(430px, 46vw)}.stu-sheet-backdrop{position:fixed;inset:48px 0 0 auto;width:var(--stu-sheetw);z-index:45}.stu-app:has(.stu-sheet-backdrop) .stu-canvas{margin-right:var(--stu-sheetw)}.stu-sheet{width:100%;height:100%;background:var(--stu-panel);border-left:1px solid var(--stu-rule);box-shadow:-18px 0 32px -28px #10182859;display:flex;flex-direction:column;overflow:hidden;animation:stu-sheet-dock .16s ease-out}@keyframes stu-sheet-dock{0%{opacity:.5;transform:translate(26px)}to{opacity:1;transform:none}}.stu-sheet-head{display:flex;align-items:center;flex-wrap:wrap;gap:8px 12px;padding:10px 14px;border-bottom:1px solid var(--stu-rule);flex:none}.stu-sheet-title{display:flex;align-items:center;gap:10px;min-width:0;flex:1 1 100%}.stu-sheet-title h2{margin:0;font-size:15.5px;font-weight:750;letter-spacing:-.02em;color:var(--stu-display);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.stu-kind-chip{font-family:var(--stu-mono);font-size:10.5px;font-weight:700;letter-spacing:.04em;color:var(--stu-on-navy);background:var(--stu-navy);padding:2px 9px;border-radius:999px;flex:none}.stu-family-label{font-size:10.5px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--stu-faint);white-space:nowrap}.stu-tabs{display:flex;gap:4px;background:var(--stu-rule-soft);border-radius:9px;padding:3px}.stu-sheet-tabs{width:170px;flex:none}.stu-tab{flex:1;border:none;background:none;padding:5px 0;font-size:12px;font-weight:600;color:var(--stu-gray);border-radius:7px;cursor:pointer}.stu-tab-active{background:var(--stu-panel);color:var(--stu-navy);box-shadow:0 1px 2px #0000000f}.stu-tab:disabled{opacity:.4;cursor:default}.stu-sheet-actions{display:flex;gap:8px;flex:none;margin-left:auto}.stu-sheet-prevbtn[aria-pressed=true]{background:var(--stu-navy-soft);color:var(--stu-navy);border-color:var(--stu-navy)}.stu-sheet-body{display:flex;flex-direction:column;flex:1;min-height:0}.stu-sheet-form{width:100%;min-width:0;flex:1;min-height:0;overflow-y:auto;padding:16px 16px 40px}.stu-sheet-yaml{display:flex;flex-direction:column;gap:10px;height:100%}.stu-sheet-yaml .stu-yaml-editor{flex:1;min-height:260px}.stu-sheet-diags{display:flex;flex-direction:column;gap:6px;margin-top:14px}.stu-sheet-preview{display:none;min-width:0;position:relative;background:var(--stu-bg);flex-direction:column}.stu-sheet-preview.stu-sheet-preview-open{display:flex;flex:0 0 44%;min-height:0;border-top:1px solid var(--stu-rule)}.stu-sheet-preview-label{position:absolute;top:10px;right:14px;font-size:9.5px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--stu-faint);background:var(--stu-panel);border:1px solid var(--stu-rule);padding:2px 8px;border-radius:999px;z-index:2}.stu-sheet-preview-scroll{flex:1;overflow:auto;padding:22px}.stu-sheet-preview-doc{border-radius:10px;box-shadow:var(--stu-shadow);padding:28px 32px 36px!important;min-height:100%}.stu-sheet-preview-empty{display:flex;align-items:center;justify-content:center;height:100%;font-size:13px;color:var(--stu-faint)}.stu-diag{border-radius:9px;padding:8px 10px;font-size:12px;line-height:1.45}.stu-diag-error{background:var(--stu-red-soft);color:var(--stu-red)}.stu-diag-warn{background:var(--stu-amber-soft);color:var(--stu-amber)}.stu-diag-code{font-family:var(--stu-mono);font-size:9.5px;font-weight:700;letter-spacing:.05em;opacity:.75}.stu-diag-msg{margin-top:2px;font-weight:500}.stu-diag-hint{margin-top:3px;font-size:11.5px;opacity:.85}.stu-field-diags{display:flex;flex-direction:column;gap:3px}.stu-field-diag{font-size:11px;line-height:1.4;border-radius:6px;padding:4px 8px}.stu-field-diag-error{background:var(--stu-red-soft);color:var(--stu-red)}.stu-field-diag-warn{background:var(--stu-amber-soft);color:var(--stu-amber)}.stu-form{display:flex;flex-direction:column;gap:13px}.stu-field{display:flex;flex-direction:column;gap:4px}.stu-field-label{font-size:11.5px;font-weight:600;color:var(--stu-slate);display:flex;align-items:baseline;gap:6px}.stu-optional{font-size:9px;font-weight:500;letter-spacing:.05em;text-transform:uppercase;color:var(--stu-faint)}.stu-input{width:100%;border:1px solid var(--stu-rule);border-radius:8px;padding:7px 9px;height:32px;font-size:12.5px;font-family:inherit;color:var(--stu-ink);background:var(--stu-panel);outline:none;transition:border-color .13s ease-out,box-shadow .13s ease-out}.stu-input:focus{border-color:var(--stu-navy);box-shadow:var(--stu-ring)}.stu-input-area{resize:vertical;min-height:64px;height:auto;line-height:1.5}.stu-input-select{cursor:pointer}.stu-toggle{display:inline-flex;align-items:center;gap:8px;cursor:pointer;user-select:none}.stu-toggle-label{font-size:12px;color:var(--stu-gray)}.stu-swatches{display:flex;align-items:center;gap:6px}.stu-swatch{width:20px;height:20px;border-radius:50%;border:2px solid transparent;cursor:pointer;padding:0;transition:transform .1s}.stu-swatch:hover{transform:scale(1.12)}.stu-swatch-active{border-color:var(--stu-ink);box-shadow:inset 0 0 0 2px var(--stu-panel)}.stu-swatch-clear{border:none;background:none;color:var(--stu-faint);font-size:14px;cursor:pointer;padding:0 2px}.stu-chips{display:flex;flex-wrap:wrap;gap:6px;align-items:center}.stu-chip-item{display:inline-flex;align-items:center;gap:5px;background:var(--stu-navy-soft);color:var(--stu-navy);font-size:12px;font-weight:500;padding:3px 6px 3px 10px;border-radius:999px;max-width:100%}.stu-chip-item button{border:none;background:none;color:inherit;opacity:.6;cursor:pointer;font-size:13px;padding:0 2px}.stu-chip-item button:hover{opacity:1}.stu-chips-add{width:90px;flex:1 0 90px;padding:4px 8px;height:28px;font-size:12px}.stu-items{display:flex;flex-direction:column;gap:6px}.stu-item{border:1px solid var(--stu-rule);border-radius:9px;background:var(--stu-well)}.stu-item-open{border-color:var(--stu-navy);background:var(--stu-panel)}.stu-item-row{display:flex;align-items:center}.stu-item-summary{flex:1;min-width:0;display:flex;align-items:center;gap:7px;border:none;background:none;padding:7px 10px;cursor:pointer;text-align:left}.stu-item-caret{display:inline-block;font-size:10px;color:var(--stu-faint);transition:transform .12s;flex:none}.stu-item-caret-open{transform:rotate(90deg)}.stu-item-title{font-size:12px;font-weight:500;color:var(--stu-ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.stu-item-tools{display:flex;gap:1px;padding-right:6px}.stu-item-tools button{border:none;background:none;color:var(--stu-faint);font-size:12px;cursor:pointer;width:22px;height:22px;border-radius:6px}.stu-item-tools button:hover:not(:disabled){background:var(--stu-rule-soft);color:var(--stu-slate)}.stu-item-tools button:disabled{opacity:.3;cursor:default}.stu-item-remove:hover:not(:disabled){background:var(--stu-red-soft)!important;color:var(--stu-red)!important}.stu-item-fields{border-top:1px solid var(--stu-rule);padding:10px;display:flex;flex-direction:column;gap:10px}.stu-addbtn{border:1.5px dashed var(--stu-rule);background:none;border-radius:9px;padding:7px;font-size:12px;font-weight:600;color:var(--stu-navy);cursor:pointer;transition:border-color .12s,background .12s}.stu-addbtn:hover{border-color:var(--stu-navy);background:var(--stu-navy-soft)}.stu-fieldset{border:1px solid var(--stu-rule);border-radius:9px;padding:10px;margin:0;display:flex;flex-direction:column;gap:10px}.stu-fieldset legend{display:flex;align-items:baseline;gap:6px;font-size:11px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:var(--stu-gray);padding:0 5px}.stu-opaque{font-size:12px;color:var(--stu-gray);background:var(--stu-rule-soft);border-radius:8px;padding:8px 10px}.stu-opaque-block{margin-top:4px}.stu-linkbtn{border:none;background:none;padding:0;color:var(--stu-navy);font-size:inherit;font-weight:600;cursor:pointer;text-decoration:underline;text-underline-offset:2px}.stu-yaml-editor{width:100%;min-height:300px;border:1px solid var(--stu-rule);border-radius:9px;padding:10px 12px;font-family:var(--stu-mono);font-size:12px;line-height:1.55;color:var(--stu-ink);background:var(--stu-well);resize:vertical;outline:none}.stu-yaml-editor:focus{border-color:var(--stu-navy);box-shadow:var(--stu-ring)}.stu-btn{border:1px solid var(--stu-rule);background:var(--stu-panel);border-radius:8px;padding:0 14px;height:32px;font-size:12.5px;font-weight:600;color:var(--stu-slate);cursor:pointer;white-space:nowrap;transition:background .13s ease-out,border-color .13s ease-out}.stu-btn:hover{background:var(--stu-rule-soft)}.stu-btn:focus-visible{outline:none;box-shadow:var(--stu-ring)}.stu-btn-primary{background:var(--stu-navy);border-color:var(--stu-navy);color:var(--stu-on-navy)}.stu-btn-primary:hover{background:var(--stu-navy-strong);border-color:var(--stu-navy-strong)}.stu-conflict{position:fixed;top:64px;left:50%;transform:translate(-50%);display:flex;align-items:center;gap:18px;background:var(--stu-panel);border:1px solid var(--stu-red);border-radius:12px;box-shadow:var(--stu-shadow-lift);padding:12px 16px;z-index:60;max-width:min(560px,calc(100vw - 32px));animation:stu-pop-in .15s ease-out}.stu-conflict-msg{display:flex;flex-direction:column;gap:2px;font-size:12.5px}.stu-conflict-msg strong{color:var(--stu-red)}.stu-conflict-msg span{color:var(--stu-gray)}.stu-conflict-actions{display:flex;gap:8px}.stu-toasts{position:fixed;bottom:18px;right:18px;display:flex;flex-direction:column;gap:8px;z-index:70;max-width:360px}.stu-toast{display:flex;align-items:flex-start;gap:10px;background:var(--stu-tip-bg);color:var(--stu-tip-fg);border-radius:10px;box-shadow:var(--stu-shadow);padding:10px 12px;font-size:12.5px;line-height:1.4;animation:stu-pop-in .15s ease-out}.stu-toast-error{background:#8a2f22;color:#f8ece7}.stu-toast button{border:none;background:none;color:inherit;opacity:.65;cursor:pointer;font-size:14px;padding:0;line-height:1}.stu-toast button:hover{opacity:1}.stu-dx-overlay{position:absolute;inset:0;pointer-events:none;z-index:30}.stu-dx-hl{position:absolute;border:1.5px solid var(--stu-sel);border-radius:6px;background:#233a5e0f;pointer-events:none;animation:stu-fade-in .1s ease-out}.stu-dx-link{position:absolute;border:1.5px solid var(--stu-sel-line);border-radius:6px;background:#2f6f6a1a;box-shadow:0 0 0 3px #2f6f6a1f;pointer-events:none;animation:stu-fade-in .1s ease-out}.stu-dx-chip{position:absolute;font-size:10px;font-weight:700;letter-spacing:.02em;color:#fff;background:var(--stu-sel);border-radius:5px;padding:2px 7px;pointer-events:none;white-space:nowrap;box-shadow:var(--stu-shadow);animation:stu-fade-in .1s ease-out;z-index:2}.stu-dx-chip-keys{font-weight:600;opacity:.75}.stu-dx-x{position:absolute;width:17px;height:17px;border-radius:50%;border:1px solid var(--stu-rule);background:var(--stu-panel);color:var(--stu-red);font-size:12px;line-height:1;padding:0;cursor:pointer;pointer-events:auto;box-shadow:var(--stu-shadow);display:flex;align-items:center;justify-content:center;z-index:3}.stu-dx-x:hover{background:var(--stu-red-soft);border-color:var(--stu-red)}.stu-dx-add{border:1.5px dashed var(--stu-rule);background:var(--stu-panel);border-radius:999px;padding:3px 11px;font-size:11.5px;font-weight:600;color:var(--stu-navy);cursor:pointer;pointer-events:auto;white-space:nowrap;transition:border-color .12s,background .12s}.stu-dx-add:hover{border-color:var(--stu-navy);background:var(--stu-navy-soft)}.stu-dx-addbar{display:flex;gap:8px;flex-wrap:wrap;padding:8px 2px 2px;animation:stu-fade-in .12s ease-out}.stu-dx-add-spot{position:absolute;z-index:2;box-shadow:var(--stu-shadow)}.stu-dx-pop{position:absolute;pointer-events:auto;background:var(--stu-panel);border:1px solid var(--stu-rule);border-radius:var(--stu-radius);box-shadow:var(--stu-shadow-lift);padding:10px;display:flex;flex-direction:column;gap:8px;z-index:40;animation:stu-pop-in .12s ease-out}.stu-dx-pop-head{display:flex;align-items:center;justify-content:space-between;gap:8px;min-height:18px}.stu-dx-pop-title{font-size:10.5px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--stu-slate);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.stu-dx-pop-tools{display:flex;gap:2px}.stu-dx-pop-tools button{border:none;background:none;color:var(--stu-faint);font-size:12px;cursor:pointer;width:20px;height:20px;border-radius:6px;display:flex;align-items:center;justify-content:center;padding:0}.stu-dx-pop-tools button:hover:not(:disabled){background:var(--stu-rule-soft);color:var(--stu-slate)}.stu-dx-pop-tools button:disabled{opacity:.3;cursor:default}.stu-dx-pop-tools .stu-dx-remove-btn:hover:not(:disabled){background:var(--stu-red-soft);color:var(--stu-red)}.stu-dx-fields{display:flex;flex-direction:column;gap:7px}.stu-dx-field{display:flex;flex-direction:column;gap:3px}.stu-dx-label{font-size:10.5px;font-weight:600;color:var(--stu-slate)}.stu-dx-more{align-self:flex-start;font-size:11px}.stu-dx-yaml{font-family:var(--stu-mono);font-size:11.5px}.stu-dx-err{font-size:11px;color:var(--stu-red)}.stu-input-invalid{border-color:var(--stu-red)!important;background:var(--stu-red-soft)}.stu-dx-ghost{position:absolute;pointer-events:none;z-index:46;border:1.5px solid var(--stu-sel);border-radius:8px;background:#233a5e1f;box-shadow:var(--stu-shadow-lift);display:flex;align-items:center;justify-content:center;overflow:hidden;opacity:.9}.stu-dx-ghost span{font-size:11px;font-weight:600;color:var(--stu-sel);background:#fffdf8;border-radius:5px;padding:1px 7px;max-width:calc(100% - 8px);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;box-shadow:var(--stu-shadow)}.stu-dx-drop{position:absolute;pointer-events:none;z-index:45;background:var(--stu-sel-line);border-radius:2px;box-shadow:0 0 0 1px #ffffffa6}.stu-dx-snap{position:absolute;pointer-events:none;z-index:45;border:2px dashed var(--stu-sel-line);border-radius:10px;background:#2f6f6a1a;box-shadow:0 0 0 4px #2f6f6a1a;transition:left .12s ease-out,top .12s ease-out,width .12s ease-out,height .12s ease-out}.stu-dx-dot{position:absolute;width:12px;height:12px;border-radius:50%;border:2px solid var(--stu-sel);background:var(--stu-panel);padding:0;cursor:crosshair;pointer-events:auto;box-shadow:var(--stu-shadow);z-index:6;animation:stu-fade-in .1s ease-out}.stu-dx-dot:hover{background:var(--stu-sel)}.stu-dx-hit{position:absolute;pointer-events:none;z-index:3;overflow:visible}.stu-dx-hit path{fill:none;stroke:transparent;stroke-width:12;pointer-events:stroke;cursor:pointer}.stu-dx-resize{position:absolute;width:10px;height:10px;border-radius:3px;border:2px solid var(--stu-sel);background:var(--stu-panel);padding:0;pointer-events:auto;box-shadow:var(--stu-shadow);z-index:6;animation:stu-fade-in .1s ease-out}.stu-dx-resize:hover{background:var(--stu-sel)}.stu-dx-wire{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;z-index:44;overflow:visible}.stu-dx-wire line{stroke:var(--stu-terra);stroke-width:2;stroke-dasharray:6 4;stroke-linecap:round;animation:stu-dx-dash .6s linear infinite}.stu-dx-wire circle{fill:var(--stu-terra)}@keyframes stu-dx-dash{to{stroke-dashoffset:-10}}.stu-dx-connect-target{position:absolute;pointer-events:none;z-index:45;border:2px solid var(--stu-terra);border-radius:8px;background:var(--stu-terra-soft);box-shadow:0 0 0 4px var(--stu-terra-soft);animation:stu-fade-in .1s ease-out}.stu-dx-connect-picker{position:absolute;z-index:47;min-width:128px;display:flex;flex-direction:column;gap:1px;background:var(--stu-panel);border:1px solid var(--stu-rule);border-radius:9px;box-shadow:var(--stu-shadow-lift);padding:4px;pointer-events:auto;animation:stu-pop-in .12s ease-out}.stu-dx-connect-picker-title{font-size:9.5px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--stu-gray);padding:3px 8px 2px}.stu-dx-connect-picker button{border:none;background:none;border-radius:6px;text-align:left;font-size:12px;font-weight:600;color:var(--stu-ink);padding:5px 8px;cursor:pointer}.stu-dx-connect-picker button:hover{background:var(--stu-navy-soft)}.stu-dx-penning,.stu-dx-penning svg[data-grid]{cursor:crosshair;touch-action:none}.stu-dx-ink{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;z-index:46;overflow:visible}.stu-dx-ink polyline{fill:none;stroke:var(--stu-terra);stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round}.stu-dx-ink-out polyline{animation:stu-dx-ink-fade .16s ease-out forwards}@keyframes stu-dx-ink-fade{0%{opacity:1}to{opacity:.25}}.stu-dx-sketch-flash{position:absolute;pointer-events:none;z-index:45;border:2px solid var(--stu-terra);border-radius:10px;background:var(--stu-terra-soft);animation:stu-dx-flash .16s ease-out}@keyframes stu-dx-flash{0%{opacity:.2}to{opacity:1}}.stu-dx-marquee{position:absolute;pointer-events:none;z-index:46;border:1.5px dashed var(--stu-sel);border-radius:4px;background:#233a5e0d}.stu-dx-sel{position:absolute;border:2px solid var(--stu-sel);border-radius:6px;background:#233a5e0d;box-shadow:0 0 0 3px #233a5e29;pointer-events:none;animation:stu-fade-in .1s ease-out}.stu-sheet-preview-wrap{position:relative}@keyframes stu-flash{0%{background:var(--stu-teal-soft);box-shadow:0 0 0 3px color-mix(in srgb,var(--stu-teal) 25%,transparent)}to{background:transparent;box-shadow:none}}.stu-field-flash{animation:stu-flash 1.3s ease-out;border-radius:8px}.stu-stepper{display:flex;align-items:center;gap:4px}.stu-stepper .stu-input-num{width:72px;text-align:center}.stu-step-btn{flex:none;width:26px;height:26px;border:1px solid var(--stu-rule);border-radius:7px;background:var(--stu-panel);color:var(--stu-slate);font-size:14px;line-height:1;cursor:pointer;transition:border-color .12s,background .12s}.stu-step-btn:hover{border-color:var(--stu-navy);background:var(--stu-navy-soft);color:var(--stu-navy)}.stu-colorctl{display:flex;flex-direction:column;gap:6px}.stu-swatches-wrap{flex-wrap:wrap;gap:5px}.stu-swatch-sm{width:17px;height:17px;border-radius:5px}.stu-colorrow{display:flex;align-items:center;gap:6px}.stu-colorpick{flex:none;width:32px;height:28px;padding:2px;border:1px solid var(--stu-rule);border-radius:7px;background:var(--stu-panel);cursor:pointer}.stu-colorhex{width:110px;height:28px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:11.5px;letter-spacing:.02em}.stu-collapse{border-top:1px dashed var(--stu-rule);margin-top:2px}.stu-collapse-head{display:flex;align-items:center;gap:6px;width:100%;border:none;background:none;padding:7px 0 5px;font-size:11px;font-weight:600;letter-spacing:.03em;color:var(--stu-gray);cursor:pointer;text-align:left}.stu-collapse-head:hover{color:var(--stu-navy)}.stu-collapse-count{min-width:16px;height:15px;padding:0 4px;border-radius:999px;background:var(--stu-rule-soft);color:var(--stu-gray);font-size:9.5px;font-weight:600;line-height:15px;text-align:center}.stu-collapse-body{display:flex;flex-direction:column;gap:10px;padding:2px 0 6px}.stu-gap-locked{pointer-events:none}.stu-gap-locked .stu-gap-line,.stu-gap-locked .stu-gap-plus{display:none}.stu-update{position:fixed;bottom:16px;left:50%;transform:translate(-50%);z-index:90;display:flex;align-items:center;gap:8px;padding:7px 10px 7px 14px;border-radius:999px;background:var(--stu-tip-bg);color:var(--stu-tip-fg);font-size:12.5px;box-shadow:var(--stu-shadow-lift)}.stu-update-btn{border:none;border-radius:999px;padding:4px 12px;background:var(--stu-tip-fg);color:var(--stu-tip-bg);font-size:12px;font-weight:600;cursor:pointer}.stu-update-btn:hover{filter:brightness(.96)}.stu-dx-hl-twin{border-style:dashed;border-color:#233a5e8c;background:#233a5e0a}@keyframes stu-dx-flash-kf{0%{border-color:var(--stu-sel-line);background:#2f6f6a2e;box-shadow:0 0 0 4px #2f6f6a2e}to{border-color:transparent;background:transparent;box-shadow:none}}.stu-dx-flash{position:absolute;border:1.5px solid transparent;border-radius:6px;pointer-events:none;animation:stu-dx-flash-kf 1.35s ease-out forwards}.stu-dx-add-steps{border-style:solid;border-color:var(--stu-teal);color:var(--stu-teal)}.stu-dx-add-steps:hover{border-color:var(--stu-teal);background:var(--stu-teal-soft)}.stu-combo{position:relative}.stu-combo-caret{position:absolute;right:9px;top:50%;transform:translateY(-50%);font-size:9px;color:var(--stu-faint);pointer-events:none}.stu-combo .stu-input{padding-right:24px}.stu-combo-list{position:absolute;top:calc(100% + 3px);left:0;right:0;z-index:40;margin:0;padding:4px;list-style:none;background:var(--stu-panel);border:1px solid var(--stu-rule);border-radius:9px;box-shadow:var(--stu-shadow-lift);max-height:186px;overflow-y:auto}.stu-combo-item{display:flex;align-items:baseline;gap:7px;padding:5px 8px;border-radius:6px;font-size:12px;cursor:pointer}.stu-combo-item-active{background:var(--stu-navy-soft)}.stu-combo-value{font-weight:600;color:var(--stu-ink)}.stu-combo-label{font-size:11px;color:var(--stu-gray);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.stu-keybar{position:fixed;bottom:0;left:0;right:0;z-index:95;display:flex;align-items:center;justify-content:center;gap:18px;padding:5px 34px 6px;background:color-mix(in srgb,var(--stu-panel) 88%,transparent);backdrop-filter:blur(6px);border-top:1px solid var(--stu-rule);font-size:11px;color:var(--stu-gray)}.stu-keybar-hint kbd,.stu-slash-next kbd,.stu-keys-card kbd{font-family:inherit;font-size:10px;font-weight:600;color:var(--stu-slate);background:var(--stu-rule-soft);border:1px solid var(--stu-rule);border-bottom-width:2px;border-radius:4px;padding:1px 5px;white-space:nowrap}.stu-keybar-x{position:absolute;right:8px;top:50%;transform:translateY(-50%);border:none;background:none;color:var(--stu-faint);cursor:pointer;padding:3px}.stu-keybar-x:hover{color:var(--stu-slate)}.stu-keys-backdrop{position:fixed;inset:0;z-index:120;background:var(--stu-scrim);display:flex;align-items:center;justify-content:center}.stu-keys-card{width:min(680px,calc(100vw - 48px));max-height:calc(100vh - 96px);overflow-y:auto;background:var(--stu-panel);border-radius:14px;box-shadow:var(--stu-shadow-lift);padding:18px 22px 14px}.stu-keys-card header{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}.stu-keys-card h2{font-size:15px;font-weight:750;letter-spacing:-.02em;color:var(--stu-display);margin:0}.stu-keys-card header button{border:none;background:none;color:var(--stu-faint);cursor:pointer;padding:4px}.stu-keys-cols{display:grid;grid-template-columns:1fr 1fr;gap:6px 28px}.stu-keys-cols section:first-child{grid-row:span 2}.stu-keys-cols h3{font-size:10.5px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--stu-gray);margin:10px 0 6px}.stu-keys-row{display:flex;align-items:baseline;gap:10px;padding:3px 0;font-size:12px;color:var(--stu-slate)}.stu-keys-row kbd{flex:none;min-width:86px;text-align:center}.stu-keys-card footer{margin-top:14px;padding-top:10px;border-top:1px solid var(--stu-rule);font-size:11px;color:var(--stu-gray);text-align:center}.stu-slash-next{display:flex;justify-content:center;padding:2px 0 4px;font-size:11.5px;color:var(--stu-gray);gap:5px;animation:stu-fade-in .25s ease-out}[data-doc-theme=dark] .stu-seg:hover{box-shadow:0 0 0 1px #ffffff47,0 2px 10px -4px #00000080}[data-doc-theme=dark] .stu-seg-selected,[data-doc-theme=dark] .stu-seg-selected:hover{box-shadow:0 0 0 2px #7ab5ff,0 0 0 5px #7ab5ff38}[data-doc-theme=dark] .stu-seg-editing,[data-doc-theme=dark] .stu-seg-editing:hover{box-shadow:none}[data-doc-theme=dark] .stu-prose-editor{box-shadow:0 0 0 2px #7ab5ff;background:#7ab5ff14}[data-doc-theme=dark] .stu-dx-hl{border-color:#7ab5ff;background:#7ab5ff1f}[data-doc-theme=dark] .stu-dx-hl-twin{border-color:#7ab5ffa6;background:#7ab5ff0f}[data-doc-theme=dark] .stu-dx-link{border-color:#45c7b8;background:#45c7b824;box-shadow:0 0 0 3px #45c7b829}[data-doc-theme=dark] .stu-dx-sel{border-color:#7ab5ff;background:#7ab5ff1a;box-shadow:0 0 0 3px #7ab5ff47}[data-doc-theme=dark] .stu-dx-ghost{border-color:#7ab5ff;background:#7ab5ff24}[data-doc-theme=dark] .stu-dx-ghost span{color:#7ab5ff}[data-doc-theme=dark] .stu-dx-snap{border-color:#45c7b8;background:#45c7b81f}[data-doc-theme=dark] .stu-dx-drop{background:#45c7b8;box-shadow:0 0 0 1px #00000080}[data-doc-theme=dark] .stu-dx-dot{border-color:#7ab5ff}[data-doc-theme=dark] .stu-dx-dot:hover{background:#7ab5ff}[data-doc-theme=dark] .stu-dx-resize{border-color:#7ab5ff}[data-doc-theme=dark] .stu-dx-resize:hover{background:#7ab5ff}[data-doc-theme=dark] .stu-dx-marquee{border-color:#7ab5ff;background:#7ab5ff14}@keyframes stu-dx-flash-dark-kf{0%{border-color:#45c7b8;background:#45c7b84d;box-shadow:0 0 0 4px #45c7b84d}to{border-color:transparent;background:transparent;box-shadow:none}}[data-doc-theme=dark] .stu-dx-flash{animation-name:stu-dx-flash-dark-kf}.stu-menu{position:fixed;z-index:80;min-width:184px;max-width:280px;padding:4px;display:flex;flex-direction:column;gap:1px;background:var(--stu-panel);border:1px solid var(--stu-rule);border-radius:8px;box-shadow:var(--stu-shadow-lift);font-family:var(--stu-font);outline:none;animation:stu-pop-in .12s ease-out}.stu-menu-item{display:grid;grid-template-columns:16px minmax(0,1fr) auto;align-items:center;gap:8px;height:28px;padding:0 8px 0 4px;border:0;background:none;border-radius:5px;font:inherit;font-size:12.5px;font-weight:500;color:var(--stu-ink);text-align:left;cursor:default;white-space:nowrap}.stu-menu-item-active,.stu-menu-item:hover{background:var(--stu-navy-soft)}.stu-menu-item-danger{color:var(--stu-red)}.stu-menu-item-danger.stu-menu-item-active,.stu-menu-item-danger:hover{background:var(--stu-red-soft)}.stu-menu-item-disabled,.stu-menu-item-disabled:hover{color:var(--stu-faint);background:none}.stu-menu-check{font-size:11px;text-align:center;color:var(--stu-navy)}.stu-menu-label{overflow:hidden;text-overflow:ellipsis}.stu-menu-key{font-family:var(--stu-mono);font-size:10.5px;color:var(--stu-faint)}.stu-menu-chev{font-size:10px;color:var(--stu-gray)}.stu-menu-sep{height:1px;margin:4px 6px;background:var(--stu-rule-soft)}@media(prefers-reduced-motion:reduce){.stu-menu,.stu-dx-pop,.stu-dx-connect-picker,.stu-dx-sketch-picker,.stu-dx-sel,.stu-dx-hl,.stu-dx-link,.stu-dx-chip,.stu-dx-addbar,.stu-dx-connect-target,.stu-dx-sketch-flash,.stu-dx-ink-out polyline,.stu-dx-wire line{animation:none}.stu-dx-snap,.stu-dx-add{transition:none}}.stu-review-backdrop{position:fixed;inset:0;background:var(--stu-scrim);z-index:60;display:flex;align-items:flex-start;justify-content:center;padding-top:14vh;animation:stu-fade-in .14s ease-out}.stu-review-backdrop[data-surface=dark]{background:#0206128c}.stu-review{width:min(440px,calc(100vw - 32px));background:var(--stu-panel);border-radius:12px;box-shadow:var(--stu-shadow-lift);overflow:hidden;animation:stu-sheet-in .16s ease-out}.stu-review-head{padding:16px 18px 12px;border-bottom:1px solid var(--stu-rule)}.stu-review-head h2{margin:0;font-size:14.5px;font-weight:750;letter-spacing:-.02em;color:var(--stu-display)}.stu-review-head h2 code{font-family:var(--stu-mono);font-size:12.5px;padding:1px 5px;border-radius:5px;background:var(--stu-rule-soft);border:1px solid var(--stu-rule);color:var(--stu-navy)}.stu-review-sub{margin:5px 0 0;font-size:12px;color:var(--stu-gray)}.stu-review-count{color:var(--stu-terra);font-weight:650}.stu-review-list{max-height:44vh;overflow-y:auto;padding:8px 10px}.stu-review-list ul{list-style:none;margin:0;padding:0}.stu-review-item{display:flex;align-items:center;gap:10px;padding:7px 8px;border-radius:8px;font-size:13px}.stu-review-item:hover{background:var(--stu-rule-soft)}.stu-review-glyph{flex:none;width:20px;height:20px;border-radius:6px;display:inline-flex;align-items:center;justify-content:center;font-size:11px;line-height:1}.stu-review-glyph-edited{color:var(--stu-amber);background:var(--stu-amber-soft)}.stu-review-glyph-added{color:var(--stu-green);background:var(--stu-green-soft)}.stu-review-glyph-removed{color:var(--stu-red);background:var(--stu-red-soft)}.stu-review-glyph-reordered{color:var(--stu-navy);background:var(--stu-navy-soft)}.stu-review-label{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--stu-ink);font-weight:600}.stu-review-kind{flex:none;font-size:11px;color:var(--stu-faint)}.stu-review-empty{padding:14px 8px;font-size:12.5px;color:var(--stu-gray);font-style:italic}.stu-review-foot{display:flex;justify-content:flex-end;gap:8px;padding:12px 18px 14px;border-top:1px solid var(--stu-rule)}.stu-delpop{position:fixed;z-index:70;background:var(--stu-panel);border:1px solid var(--stu-rule);border-radius:10px;box-shadow:var(--stu-shadow-lift);padding:10px 12px;max-width:320px;animation:stu-fade-in .1s ease-out}.stu-delpop-text{font-size:12.5px;color:var(--stu-ink);margin-bottom:8px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.stu-delpop-row{display:flex;align-items:center;gap:6px}.stu-delpop-hint{font-size:10.5px;color:var(--stu-faint);margin-right:auto;white-space:nowrap}.stu-btn-sm{height:26px;padding:0 10px;font-size:11.5px;border-radius:7px}.stu-btn-danger{background:var(--stu-red);border-color:var(--stu-red);color:var(--stu-on-red)}.stu-btn-danger:hover{background:color-mix(in srgb,var(--stu-red) 85%,#000)}.stu-btn-danger:focus-visible{box-shadow:0 0 0 3px color-mix(in srgb,var(--stu-red) 26%,transparent)}.stu-tpl{width:92vw;max-width:760px;max-height:82vh;background:var(--stu-panel);border-radius:14px;box-shadow:var(--stu-shadow-lift);display:flex;flex-direction:column;overflow:hidden;animation:stu-sheet-in .16s ease-out}.stu-tpl-head{display:flex;align-items:center;gap:14px;padding:14px 18px;border-bottom:1px solid var(--stu-rule);flex:none}.stu-tpl-head h2{margin:0;font-size:15px;font-weight:750;letter-spacing:-.02em;color:var(--stu-display);white-space:nowrap}.stu-tpl-slug{flex:1;min-width:0;border:1px solid var(--stu-rule);border-radius:8px;padding:7px 10px;font-family:var(--stu-mono);font-size:12px;outline:none}.stu-tpl-slug:focus{border-color:var(--stu-navy);box-shadow:var(--stu-ring)}.stu-tpl-filter{flex:none;display:block;padding:12px 18px 0}.stu-tpl-filter input{width:100%;border:1px solid var(--stu-rule);border-radius:8px;padding:7px 10px;font-size:12px;outline:none}.stu-tpl-filter input:focus{border-color:var(--stu-navy);box-shadow:var(--stu-ring)}.stu-tpl-none{grid-column:1 / -1;margin:0;padding:18px 2px;font-size:12px;color:var(--stu-muted)}.stu-tpl-body{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:10px;padding:14px 18px;overflow-y:auto}.stu-tpl-card{display:flex;flex-direction:column;align-items:flex-start;gap:6px;text-align:left;border:1px solid var(--stu-rule);border-radius:10px;background:var(--stu-panel);padding:12px;cursor:pointer;transition:border-color .13s ease-out,box-shadow .13s ease-out}.stu-tpl-card:hover{border-color:var(--stu-navy)}.stu-tpl-card:focus-visible{outline:none;border-color:var(--stu-navy);box-shadow:var(--stu-ring)}.stu-tpl-card-active,.stu-tpl-card-active:hover{border-color:var(--stu-navy);box-shadow:0 0 0 1px var(--stu-navy),0 0 0 4px color-mix(in srgb,var(--stu-navy) 12%,transparent)}.stu-tpl-card-title{display:flex;align-items:center;gap:6px;font-size:13px;font-weight:700;color:var(--stu-ink)}.stu-tpl-card-desc{font-size:11.5px;line-height:1.45;color:var(--stu-slate)}.stu-tpl-card-chips{display:flex;flex-wrap:wrap;gap:4px;margin-top:2px}.stu-tpl-card-chips code{font-family:var(--stu-mono);font-size:10px;color:var(--stu-slate);background:var(--stu-rule-soft);border-radius:5px;padding:1px 6px}.stu-tpl-foot{display:flex;align-items:center;gap:8px;padding:12px 18px;border-top:1px solid var(--stu-rule);flex:none}.stu-tpl-hint{flex:1;font-size:11.5px;color:var(--stu-slate)}.stu-union{display:flex;flex-direction:column;gap:6px}.stu-union-toggle{display:inline-flex;align-self:flex-start;background:var(--stu-rule-soft);border:1px solid var(--stu-rule);border-radius:7px;padding:2px;gap:2px}.stu-union-seg{border:none;background:none;border-radius:5px;font-size:10.5px;font-weight:600;color:var(--stu-gray);padding:2px 9px;cursor:pointer;transition:background .12s,color .12s}.stu-union-seg:hover{color:var(--stu-ink)}.stu-union-seg-active{background:var(--stu-panel);color:var(--stu-navy);box-shadow:0 1px 2px #00000014}.stu-union-fields{display:flex;flex-direction:column;gap:8px;border:1px solid var(--stu-rule);border-radius:9px;padding:10px;background:color-mix(in srgb,var(--stu-rule-soft) 45%,var(--stu-panel))}.stu-grid{display:flex;flex-direction:column;gap:8px}.stu-grid-scroll{overflow-x:auto;border:1px solid var(--stu-rule);border-radius:9px;background:var(--stu-panel)}.stu-grid-table{border-collapse:collapse;width:100%}.stu-grid-table th,.stu-grid-table td{border:none;border-bottom:1px solid var(--stu-rule-soft);border-right:1px solid var(--stu-rule-soft);padding:0;min-width:84px}.stu-grid-table tr:last-child td{border-bottom:none}.stu-grid-table thead th{background:var(--stu-rule-soft);border-bottom:1px solid var(--stu-rule)}.stu-grid-table thead th.stu-grid-th-hl{background:var(--stu-navy-soft)}.stu-grid-table .stu-grid-addcol-th,.stu-grid-table .stu-grid-rowtools-td{min-width:28px;width:28px;border-right:none;text-align:center;background:none}.stu-grid-cellwrap{position:relative;display:flex;align-items:center}.stu-grid-input{border:none;border-radius:0;height:30px;background:none;font-size:12px;padding:6px 8px}.stu-grid-table thead .stu-grid-input{font-weight:700;font-size:11.5px;color:var(--stu-slate)}.stu-grid-input:focus{box-shadow:inset 0 0 0 2px var(--stu-navy);border-radius:4px}.stu-grid-celltools{position:absolute;right:2px;top:50%;transform:translateY(-50%);display:none;gap:1px}.stu-grid-cellwrap:hover .stu-grid-celltools,.stu-grid-cellwrap:focus-within .stu-grid-celltools{display:inline-flex}.stu-grid-cellbtn{border:none;background:var(--stu-panel);color:var(--stu-gray);border-radius:5px;width:18px;height:18px;font-size:11px;line-height:1;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;box-shadow:0 0 0 1px var(--stu-rule)}.stu-grid-cellbtn:hover{color:var(--stu-navy);box-shadow:0 0 0 1px var(--stu-navy)}.stu-grid-cellbtn-danger:hover{color:var(--stu-red);background:var(--stu-red-soft);box-shadow:0 0 0 1px var(--stu-red)}.stu-grid-rowdel{box-shadow:none;background:none}.stu-grid-addcol{border:none;background:none;color:var(--stu-navy);font-size:12px;font-weight:700;cursor:pointer;width:100%;height:30px;border-radius:6px}.stu-grid-addcol:hover{background:var(--stu-navy-soft)}.stu-grid-tonedot{position:absolute;right:4px;top:4px;width:6px;height:6px;border-radius:50%;pointer-events:none}.stu-grid-tone-pos{background:var(--stu-green)}.stu-grid-tone-neg{background:var(--stu-red)}.stu-grid-tone-warn{background:var(--stu-amber)}.stu-grid-tone-muted{background:var(--stu-faint)}.stu-grid-pop{position:fixed;z-index:130;width:224px;background:var(--stu-panel);border:1px solid var(--stu-rule);border-radius:10px;box-shadow:var(--stu-shadow-lift);padding:10px;display:flex;flex-direction:column;gap:7px;animation:stu-pop-in .12s ease-out}.stu-grid-pop-title{font-size:10.5px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--stu-gray)}.stu-grid-pop-simplify{align-self:flex-start;font-size:11px}.stu-grid-foot{display:flex;gap:8px}.stu-grid-foot .stu-addbtn{flex:1}.stu-tour-spot{position:fixed;z-index:200;border-radius:12px;border:2px solid var(--stu-terra);box-shadow:0 0 0 4px color-mix(in srgb,var(--stu-terra) 22%,transparent),0 0 0 9999px var(--stu-scrim);pointer-events:none;transition:left .28s cubic-bezier(.3,.9,.3,1),top .28s cubic-bezier(.3,.9,.3,1),width .28s cubic-bezier(.3,.9,.3,1),height .28s cubic-bezier(.3,.9,.3,1)}.stu-tour-dim{position:fixed;inset:0;z-index:200;background:var(--stu-scrim);pointer-events:none;animation:stu-fade-in .18s ease-out}.stu-tour-card{position:fixed;z-index:210;width:316px;background:var(--stu-panel);border:1px solid var(--stu-rule);border-radius:14px;box-shadow:var(--stu-shadow-lift);padding:16px 16px 13px;display:flex;flex-direction:column;gap:8px;animation:stu-pop-in .16s ease-out;transition:left .28s cubic-bezier(.3,.9,.3,1),top .28s cubic-bezier(.3,.9,.3,1)}.stu-tour-card-center{left:50%;top:42%;transform:translate(-50%,-50%);width:380px}.stu-tour-dots{display:flex;gap:5px;margin-bottom:2px}.stu-tour-dot{width:6px;height:6px;border-radius:50%;background:var(--stu-rule);transition:background .2s,transform .2s}.stu-tour-dot-done{background:color-mix(in srgb,var(--stu-terra) 45%,var(--stu-rule))}.stu-tour-dot-active{background:var(--stu-terra);transform:scale(1.35)}.stu-tour-title{margin:0;font-size:15px;font-weight:750;letter-spacing:-.02em;color:var(--stu-display)}.stu-tour-body{margin:0;font-size:12.5px;line-height:1.55;color:var(--stu-slate)}.stu-tour-body code{font-family:var(--stu-mono);font-size:11px;background:var(--stu-rule-soft);border-radius:4px;padding:1px 4px}.stu-tour-keys{display:flex;flex-wrap:wrap;gap:5px}.stu-tour-keys kbd{font-size:10.5px;padding:2px 7px}.stu-tour-wait{display:flex;align-items:center;gap:7px;font-size:11px;font-weight:600;color:var(--stu-teal)}.stu-tour-pulse{width:7px;height:7px;border-radius:50%;background:var(--stu-teal);animation:stu-tour-pulse 1.4s ease-in-out infinite}@keyframes stu-tour-pulse{0%,to{box-shadow:0 0 color-mix(in srgb,var(--stu-teal) 45%,transparent)}50%{box-shadow:0 0 0 6px transparent}}.stu-tour-actions{display:flex;align-items:center;gap:8px;margin-top:4px}.stu-tour-spacer{flex:1}.stu-tour-skip{font-size:11px;color:var(--stu-gray)}.stu-keys-tour{border:none;background:none;color:var(--stu-navy);font-size:11.5px;font-weight:700;cursor:pointer;margin-left:12px}.stu-keys-tour:hover{text-decoration:underline}.stu-union-items{gap:8px}.stu-union-item{display:flex;align-items:flex-start;gap:6px}.stu-union-item>.stu-union{flex:1}.stu-union-item-remove{border:none;background:none;color:var(--stu-faint);font-size:14px;line-height:1;cursor:pointer;padding:8px 4px;border-radius:6px}.stu-union-item-remove:hover{color:var(--stu-red);background:var(--stu-red-soft)}.stu-dropveil{position:fixed;inset:0;z-index:60;pointer-events:none;display:flex;align-items:center;justify-content:center;background:color-mix(in srgb,var(--stu-bg) 62%,transparent);backdrop-filter:blur(1.5px);animation:stu-fade-in .12s ease-out}.stu-dropveil-card{background:var(--stu-panel);border:1.5px dashed var(--stu-navy);border-radius:14px;box-shadow:var(--stu-shadow-lift);padding:22px 30px;text-align:center}.stu-dropveil-title{font-size:16px;font-weight:700;color:var(--stu-display);margin-bottom:6px}.stu-dropveil-sub{font-size:12.5px;color:var(--stu-gray)}.stu-dropveil-sub code{font-family:var(--stu-mono);font-size:11.5px;color:var(--stu-slate);background:var(--stu-well);border:1px solid var(--stu-rule-soft);border-radius:5px;padding:1px 4px}.stu-import{width:92vw;max-width:460px;background:var(--stu-panel);border-radius:14px;box-shadow:var(--stu-shadow-lift);padding:18px 20px;animation:stu-sheet-in .16s ease-out}.stu-import-head{display:flex;align-items:center;gap:8px;margin-bottom:8px}.stu-import-head h2{font-size:15px;font-weight:700;color:var(--stu-display);margin:0}.stu-import-glyph{display:inline-flex;color:var(--stu-navy)}.stu-import-text{font-size:12.5px;line-height:1.55;color:var(--stu-slate);margin:0 0 12px}.stu-import-text code{font-family:var(--stu-mono);font-size:11.5px;color:var(--stu-navy);background:var(--stu-well);border:1px solid var(--stu-rule-soft);border-radius:5px;padding:1px 4px}.stu-import-slug{width:100%;border:1px solid var(--stu-rule);border-radius:8px;padding:7px 10px;font-family:var(--stu-mono);font-size:12px;outline:none;margin-bottom:14px}.stu-import-slug:focus{border-color:var(--stu-navy);box-shadow:var(--stu-ring)}.stu-import-foot{display:flex;align-items:center;gap:8px}.stu-import-hint{flex:1;font-size:11px;color:var(--stu-faint)}.stu-picker-foot{border-top:1px solid var(--stu-rule-soft);padding:4px;flex:none}.stu-picker-import{display:flex;align-items:center;gap:7px;width:100%;border:none;background:none;border-radius:8px;padding:7px 10px;font-size:12.5px;font-weight:600;color:var(--stu-navy);cursor:pointer;text-align:left}.stu-picker-import:hover{background:var(--stu-navy-soft)}.stu-picker-import:disabled{opacity:.5;cursor:default}.stu-picker-import-hint{margin-left:auto;font-size:11px;font-weight:400;color:var(--stu-faint)}.stu-libbtn{display:inline-flex;align-items:center;gap:6px;height:30px;padding:0 11px;border:1px solid var(--stu-rule);border-radius:8px;background:var(--stu-panel);color:var(--stu-slate);font-size:12px;font-weight:600;white-space:nowrap;cursor:pointer;transition:background .13s ease-out,color .13s ease-out}.stu-libbtn:hover{background:var(--stu-navy-soft);color:var(--stu-navy)}.stu-libbtn:disabled{opacity:.5;cursor:default}.stu-export{position:relative}.stu-export-pop{position:absolute;top:36px;right:0;min-width:168px;padding:6px;background:var(--stu-panel);border:1px solid var(--stu-rule);border-radius:12px;box-shadow:var(--stu-shadow-lift);z-index:40;animation:stu-pop-in .14s ease-out}.stu-export-item{display:block;width:100%;border:none;background:none;padding:8px 10px;border-radius:8px;font:inherit;font-size:12.5px;font-weight:600;color:var(--stu-ink);text-align:left;cursor:pointer}.stu-export-item:hover{background:var(--stu-navy-soft);color:var(--stu-navy)}.stu-export-item:disabled{opacity:.6;cursor:default}.stu-dx-note{position:absolute;z-index:30;pointer-events:auto;border:1px solid var(--stu-navy);border-radius:8px;background:var(--stu-panel);padding:4px 10px;font-size:11.5px;font-weight:600;color:var(--stu-navy);cursor:pointer;box-shadow:var(--stu-shadow-lift)}.stu-dx-note:hover{background:var(--stu-navy);color:#fff}.stu-cover{position:relative;cursor:pointer;border-radius:10px}.stu-cover:hover,.stu-cover:focus-visible{outline:2px solid var(--stu-navy-soft);outline-offset:6px}.stu-cover-edit{position:absolute;top:10px;right:10px;padding:5px 11px;border:1px solid var(--stu-rule);border-radius:8px;background:var(--stu-panel);font-size:11.5px;font-weight:600;color:var(--stu-slate);opacity:0;transition:opacity .13s ease-out;pointer-events:none}.stu-cover:hover .stu-cover-edit,.stu-cover:focus-visible .stu-cover-edit{opacity:1}a.stu-libbtn,a.stu-btn{text-decoration:none;display:inline-flex;align-items:center}.stu-present{border-color:var(--stu-navy);color:var(--stu-navy);background:var(--stu-navy-soft)}.stu-present:hover,.stu-present-on{background:var(--stu-navy);color:#fff}.stu-picker-backdrop{position:fixed;inset:0;background:var(--stu-scrim);z-index:60;display:flex;align-items:center;justify-content:center;animation:stu-fade-in .14s ease-out}.stu-picker-browse{position:relative;width:min(1180px,calc(100vw - 40px));height:calc(100vh - 56px);background:var(--stu-bg);border:1px solid var(--stu-rule);border-radius:14px;box-shadow:var(--stu-shadow-lift);display:flex;flex-direction:column;overflow:hidden;animation:stu-sheet-in .16s ease-out}.stu-picker-head{flex:none;display:flex;flex-direction:column;gap:10px;padding:16px 22px 12px;background:var(--stu-panel);border-bottom:1px solid var(--stu-rule)}.stu-picker-title{display:flex;align-items:center;gap:9px}.stu-picker-title-icon{display:inline-flex;color:var(--stu-navy)}.stu-picker-title h2{margin:0;font-size:19px;font-weight:750;letter-spacing:-.02em;color:var(--stu-display)}.stu-picker-title-count{font-size:13px;color:var(--stu-gray);font-variant-numeric:tabular-nums}.stu-picker-x{display:inline-flex;align-items:center;justify-content:center;width:30px;height:30px;margin-left:auto;border:none;border-radius:8px;background:none;color:var(--stu-gray);cursor:pointer}.stu-picker-x:hover{background:var(--stu-rule-soft);color:var(--stu-ink)}.stu-picker-browse-search{display:flex;align-items:center;gap:9px;padding:8px 12px;border:1px solid var(--stu-rule);border-radius:9px;background:var(--stu-well);color:var(--stu-faint)}.stu-picker-browse-search:focus-within{border-color:var(--stu-navy);box-shadow:var(--stu-ring)}.stu-picker-browse-search input{flex:1;min-width:0;border:none;outline:none;background:none;font-family:inherit;font-size:13.5px;color:var(--stu-ink)}.stu-picker-showing{flex:none;font-size:11.5px;color:var(--stu-gray);font-variant-numeric:tabular-nums;white-space:nowrap}.stu-picker-pills{display:flex;flex-wrap:wrap;gap:6px}.stu-picker-pill{display:inline-flex;align-items:center;gap:6px;padding:3px 6px 3px 10px;border:1px solid var(--stu-rule);border-radius:999px;background:var(--stu-panel);font-size:11.5px;font-weight:600;color:var(--stu-slate);cursor:pointer;transition:border-color .13s ease-out,color .13s ease-out,background .13s ease-out}.stu-picker-pill:hover{border-color:var(--stu-navy);color:var(--stu-navy)}.stu-picker-pill-active,.stu-picker-pill-active:hover{background:var(--stu-navy);border-color:var(--stu-navy);color:var(--stu-on-navy)}.stu-picker-pill-empty:not(.stu-picker-pill-active){opacity:.45}.stu-picker-pill-count{font-size:10px;padding:0 6px;border-radius:999px;background:var(--stu-rule-soft);color:var(--stu-gray);font-variant-numeric:tabular-nums}.stu-picker-pill-active .stu-picker-pill-count{background:color-mix(in srgb,var(--stu-on-navy) 20%,transparent);color:var(--stu-on-navy)}.stu-picker-body{flex:1;min-height:0;overflow-y:auto;padding:18px 22px 28px}.stu-picker-fam{content-visibility:auto;contain-intrinsic-size:auto 300px}.stu-picker-fam+.stu-picker-fam{margin-top:24px}.stu-picker-famhead{display:flex;align-items:center;gap:8px;margin:0 2px 10px;font-size:11px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--stu-gray)}.stu-picker-famhead:after{content:"";flex:1;height:1px;background:var(--stu-rule);margin-left:6px}.stu-picker-count{font-size:10.5px;font-weight:600;color:var(--stu-faint);background:var(--stu-rule-soft);border-radius:999px;padding:1px 7px}.stu-picker-grid{grid-template-columns:repeat(auto-fill,minmax(215px,1fr))}.stu-picker-card{position:relative;background:var(--stu-panel)}.stu-picker-also{align-self:flex-start;margin:2px 2px 0;padding:1px 7px;border-radius:999px;font-family:var(--stu-mono);font-size:10px;font-weight:600;color:var(--stu-amber);background:var(--stu-amber-soft)}.stu-picker-empty{padding:64px 24px;text-align:center;font-size:13.5px;color:var(--stu-faint)}.stu-picker-detail-backdrop{position:absolute;inset:0;z-index:5;background:var(--stu-scrim);display:flex;align-items:center;justify-content:center;animation:stu-fade-in .12s ease-out}.stu-picker-detail{width:min(980px,calc(100% - 48px));height:min(620px,calc(100% - 48px));background:var(--stu-panel);border:1px solid var(--stu-rule);border-radius:14px;box-shadow:var(--stu-shadow-lift);display:flex;flex-direction:column;overflow:hidden;animation:stu-pop-in .14s ease-out}.stu-picker-detail-head{display:flex;align-items:center;padding:14px 18px 0;flex:none}.stu-picker-detail-title{display:flex;align-items:center;gap:8px;min-width:0}.stu-picker-detail-title h3{margin:0;font-size:16px;font-weight:750;letter-spacing:-.02em;color:var(--stu-display);white-space:nowrap}.stu-picker-detail-fam{font-size:11px;color:var(--stu-gray);border-left:1px solid var(--stu-rule);padding-left:8px;white-space:nowrap}.stu-picker-detail-desc{margin:6px 18px 0;font-size:12.5px;line-height:1.5;color:var(--stu-gray);flex:none}.stu-picker-detail-alias{align-self:flex-start;margin:8px 18px 0;padding:4px 10px;border-radius:8px;font-size:12px;color:var(--stu-amber);background:var(--stu-amber-soft);flex:none}.stu-picker-detail-alias code{font-family:var(--stu-mono);font-size:11px;font-weight:600}.stu-picker-detail-body{flex:1;min-height:240px;display:grid;grid-template-columns:minmax(0,1.25fr) minmax(0,1fr);gap:12px;padding:12px 18px 0}@media(max-width:860px){.stu-picker-detail-body{grid-template-columns:minmax(0,1fr);overflow-y:auto}}.stu-picker-pane{display:flex;flex-direction:column;min-height:0;min-width:0}.stu-picker-pane-label{display:flex;align-items:center;justify-content:space-between;margin-bottom:6px;font-size:10.5px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--stu-gray);flex:none}.stu-picker-preview{flex:1;min-height:200px;overflow:auto;border:1px solid var(--stu-rule);border-radius:10px;background:var(--stu-well)}.stu-picker-preview-doc{padding:18px 22px;min-width:440px}.stu-picker-preview-blank{display:flex;align-items:center;justify-content:center;height:100%;font-family:var(--stu-mono);font-size:12px;color:var(--stu-faint)}.stu-picker-yaml{flex:1;min-height:200px;margin:0;overflow:auto;border:1px solid var(--stu-rule);border-radius:10px;background:var(--stu-well);padding:12px 14px;font-family:var(--stu-mono);font-size:11.5px;line-height:1.55;color:var(--stu-ink);white-space:pre}.stu-picker-copy{display:inline-flex;align-items:center;gap:5px;padding:3px 9px;border:1px solid var(--stu-rule);border-radius:7px;background:var(--stu-panel);font-size:10.5px;font-weight:600;letter-spacing:0;text-transform:none;color:var(--stu-slate);cursor:pointer}.stu-picker-copy:hover{border-color:var(--stu-navy);color:var(--stu-navy)}.stu-picker-detail-foot{display:flex;align-items:center;gap:8px;padding:12px 18px 14px;flex:none}.stu-picker-detail-hint{flex:1;font-size:11px;color:var(--stu-faint)}.stu-shell{flex:1;min-height:0;display:flex}.stu-main{flex:1;min-width:0;display:flex;flex-direction:column}.stu-num{font-variant-numeric:tabular-nums}.stu-rail{position:relative;flex:0 0 232px;display:flex;background:var(--stu-panel);border-right:1px solid var(--stu-rule)}.stu-rail-full{flex:1;min-width:0;display:flex;flex-direction:column}.stu-rail-brand{display:flex;align-items:center;gap:8px;padding:16px 16px 12px;border:none;background:none;cursor:pointer;text-align:left}.stu-rail-mark{width:22px;height:22px;object-fit:contain;flex:none}.stu-rail-name{font-size:13px;font-weight:700;letter-spacing:-.01em;color:var(--stu-navy);white-space:nowrap}.stu-rail-name em{font-style:normal;font-weight:500;color:var(--stu-teal)}.stu-rail-search{display:flex;align-items:center;gap:8px;margin:4px 12px 8px;padding:0 12px;height:32px;border:1px solid var(--stu-rule);border-radius:8px;background:var(--stu-well);color:var(--stu-faint);cursor:text}.stu-rail-search-off{opacity:.45}.stu-rail-search input{flex:1;min-width:0;border:none;background:none;font:inherit;font-size:12px;color:var(--stu-ink)}.stu-rail-search input:focus{outline:none}.stu-rail-search input::placeholder{color:var(--stu-faint)}.stu-rail-search kbd{font-family:var(--stu-font);font-size:10px;color:var(--stu-faint);border:1px solid var(--stu-rule);border-radius:4px;padding:0 4px;background:var(--stu-panel)}.stu-rail-search:focus-within{border-color:var(--stu-navy);box-shadow:var(--stu-ring)}.stu-rail-new{display:flex;align-items:center;justify-content:center;gap:8px;margin:0 12px 12px;height:32px;border:1px solid var(--stu-navy);border-radius:8px;background:var(--stu-panel);color:var(--stu-navy);font-size:12px;font-weight:600;cursor:pointer;transition:background .13s ease-out}.stu-rail-new:hover{background:var(--stu-navy-soft)}.stu-rail-group{display:flex;align-items:baseline;justify-content:space-between;padding:8px 16px 4px;font-size:10px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--stu-faint)}.stu-rail-doc{display:flex;align-items:center;gap:8px;width:100%;padding:4px 16px;border:none;border-left:2px solid transparent;background:none;font-size:12px;color:var(--stu-slate);text-align:left;cursor:pointer}.stu-rail-doc:hover{background:var(--stu-well)}.stu-rail-doc-on,.stu-rail-doc-on:hover{background:var(--stu-well);border-left-color:var(--stu-navy);color:var(--stu-ink);font-weight:600}.stu-rail-root{margin-top:4px;flex:none}.stu-rail-doc-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.stu-rail-dot{width:5px;height:5px;border-radius:50%;background:var(--stu-red);margin-left:auto;flex:none}.stu-rail-scroll{flex:1;min-height:0;overflow-y:auto;padding-bottom:8px}.stu-rail-none{padding:12px 16px;font-size:12px;color:var(--stu-faint)}.stu-rail-foot{display:flex;align-items:center;gap:16px;border-top:1px solid var(--stu-rule-soft);padding:8px 16px;font-size:12px;color:var(--stu-gray)}.stu-rail-foot a{color:inherit;text-decoration:none}.stu-rail-foot a:hover,.stu-rail-foot button:hover{color:var(--stu-navy)}.stu-rail-foot-settings{position:relative}.stu-rail-foot button{border:none;background:none;padding:0;font:inherit;color:inherit;cursor:pointer}.stu-rail-settings{position:absolute;left:0;bottom:28px;width:208px;padding:12px;background:var(--stu-panel);border:1px solid var(--stu-rule);border-radius:12px;box-shadow:var(--stu-shadow-lift);z-index:60;animation:stu-pop-in .14s ease-out}.stu-rail-settings-title{font-size:10px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--stu-faint);margin-bottom:8px}.stu-rail-settings-hint{margin:8px 0 0;font-size:11px;line-height:1.45;color:var(--stu-faint)}.stu-rail-mini{display:none;flex-direction:column;align-items:center;gap:16px;padding:12px 0;width:52px;flex:none}.stu-rail-mini-mark{border:none;background:none;padding:0;cursor:pointer}.stu-rail-mini-mark img{width:22px;height:22px;object-fit:contain;display:block}.stu-rail-mini-btn{display:flex;align-items:center;justify-content:center;width:30px;height:30px;border:none;border-radius:8px;background:none;color:var(--stu-gray);cursor:pointer}.stu-rail-mini-btn:hover{background:var(--stu-well);color:var(--stu-navy)}.stu-rail-mini-on{color:var(--stu-navy);background:var(--stu-navy-soft)}.stu-crumb{display:flex;align-items:center;gap:4px;min-width:0;font-size:12px;color:var(--stu-gray);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.stu-crumb b{color:var(--stu-ink);font-weight:600;overflow:hidden;text-overflow:ellipsis}.stu-checkchip{display:inline-flex;align-items:center;gap:6px;font-size:12px;font-weight:600;border-radius:999px;padding:4px 12px;white-space:nowrap}.stu-checkchip-ok{color:var(--stu-green);padding-left:0}.stu-checkchip-err{color:var(--stu-red);background:var(--stu-red-soft);border:1px solid color-mix(in srgb,var(--stu-red) 22%,var(--stu-panel))}.stu-savebtn{height:30px;padding:0 12px;font-size:12px}.stu-savewrap{display:inline-flex;align-items:center;gap:8px}.stu-savemeta{font-size:11px;color:var(--stu-faint);white-space:nowrap}.stu-export-sep{height:1px;margin:4px 6px;background:var(--stu-rule-soft)}a.stu-export-item{text-decoration:none}.stu-doclist{flex:1;min-height:0;overflow-y:auto;padding:24px 32px}.stu-doclist-inner{max-width:880px;margin:0 auto}.stu-doclist-table{background:var(--stu-panel);border:1px solid var(--stu-rule);border-radius:10px;overflow:hidden}.stu-doclist-head,.stu-doclist-row{display:grid;grid-template-columns:minmax(0,2fr) 1fr 96px 96px 24px;gap:8px;align-items:center;padding:8px 16px}.stu-doclist-head{font-size:10px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--stu-faint)}.stu-doclist-row{width:100%;border:none;border-top:1px solid var(--stu-rule-soft);background:none;font-size:12px;color:var(--stu-slate);text-align:left;cursor:pointer}.stu-doclist-row:hover{background:var(--stu-well)}.stu-doclist-name{font-weight:600;color:var(--stu-navy);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.stu-doclist-folder,.stu-doclist-edited{color:var(--stu-faint);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.stu-doclist-chev{color:var(--stu-faint);justify-self:end}.stu-doclist-empty{flex:1;display:flex;align-items:center;justify-content:center;overflow-y:auto;padding:24px}.stu-doclist-empty-inner{text-align:center;max-width:440px}.stu-doclist-empty-icon{width:56px;height:56px;border-radius:16px;background:var(--stu-panel);border:1px solid var(--stu-rule);margin:0 auto 16px;display:flex;align-items:center;justify-content:center;color:var(--stu-navy)}.stu-doclist-empty-title{font-size:16px;font-weight:700;color:var(--stu-display);margin-bottom:8px}.stu-doclist-empty-sub{margin:0 0 16px;font-size:13px;line-height:1.55;color:var(--stu-slate)}.stu-doclist-empty-sub code{font-family:var(--stu-mono);font-size:12px}.stu-doclist-empty-chips{display:flex;flex-wrap:wrap;justify-content:center;gap:8px;margin-top:16px}.stu-doclist-empty-chip{border:1px solid var(--stu-rule);border-radius:8px;background:var(--stu-panel);padding:4px 12px;font-size:12px;color:var(--stu-slate);cursor:pointer}.stu-doclist-empty-chip:hover{border-color:var(--stu-navy);color:var(--stu-navy)}.stu-app:has(.stu-rail) .stu-keybar{left:232px}@media(max-width:820px){.stu-rail{flex:0 0 52px}.stu-rail-mini{display:flex}.stu-rail-full{display:none}.stu-rail-drawer .stu-rail-full{display:flex;position:absolute;left:0;top:0;bottom:0;width:232px;background:var(--stu-panel);border-right:1px solid var(--stu-rule);box-shadow:var(--stu-shadow-lift);z-index:60}.stu-savemeta{display:none}.stu-app:has(.stu-rail) .stu-keybar{left:52px}.stu-doclist{padding:16px}.stu-topbar-wide{display:none}.stu-topbar-more{display:block}.stu-sheet-backdrop{top:0;left:0;width:auto;background:var(--stu-scrim);display:flex;align-items:flex-end;justify-content:center;animation:stu-fade-in .14s ease-out}.stu-app:has(.stu-sheet-backdrop) .stu-canvas{margin-right:0}.stu-sheet{width:100vw;max-width:none;height:88vh;border-left:none;border-radius:16px 16px 0 0;box-shadow:var(--stu-shadow-lift);animation:stu-sheet-up .18s ease-out}.stu-sheet:before{content:"";display:block;flex:none;width:36px;height:4px;border-radius:2px;background:var(--stu-rule);margin:8px auto 0}.stu-sheet-head{flex-wrap:nowrap;padding:8px 14px 10px;gap:10px}.stu-sheet-title{flex:1 1 auto}.stu-sheet-prevbtn{display:none}.stu-sheet-form{border-bottom:1px solid var(--stu-rule);padding-bottom:18px}.stu-sheet-preview,.stu-sheet-preview.stu-sheet-preview-open{display:flex;flex:1;min-height:0;border-top:none}}@keyframes stu-sheet-up{0%{opacity:.5;transform:translateY(28px)}to{opacity:1;transform:none}}.stu-seg:has(>.stu-seg-diag){margin-top:28px}@media(min-width:821px)and (max-width:1150px){.stu-app:has(.stu-sheet-backdrop){--stu-sheetw: 400px}.stu-app:has(.stu-sheet-backdrop) .stu-rail{flex:0 0 52px}.stu-app:has(.stu-sheet-backdrop) .stu-rail-mini{display:flex}.stu-app:has(.stu-sheet-backdrop) .stu-rail-full{display:none}}.stu-seg-err,.stu-seg-err:hover{box-shadow:0 0 0 1px var(--stu-red),0 0 0 4px color-mix(in srgb,var(--stu-red) 14%,transparent)}.stu-seg-err.stu-seg-selected,.stu-seg-err.stu-seg-selected:hover{box-shadow:0 0 0 2px var(--stu-red),0 0 0 5px color-mix(in srgb,var(--stu-red) 14%,transparent)}.stu-seg-diag{position:absolute;top:-24px;left:8px;z-index:2;padding:1px 8px;background:var(--stu-panel);border:1px solid var(--stu-rule);border-radius:999px;box-shadow:var(--stu-shadow);font-family:var(--stu-mono);font-size:10px;font-weight:600;letter-spacing:.05em;white-space:nowrap;pointer-events:none}.stu-seg-diag-err{color:var(--stu-red)}.stu-seg-diag-warn{color:var(--stu-amber)}.stu-checkwrap{position:relative;display:inline-flex}.stu-checkchip{border:1px solid transparent;background:none;font:inherit;cursor:pointer}.stu-checkchip-caret{opacity:.7;font-size:10px}.stu-checkpop{position:absolute;top:calc(100% + 10px);right:0;width:420px;max-width:calc(100vw - 32px);background:var(--stu-panel);border:1px solid var(--stu-rule);border-radius:10px;box-shadow:var(--stu-shadow-lift);z-index:60;animation:stu-pop-in .14s ease-out}.stu-checkpop-caret{position:absolute;top:-6px;right:24px;width:10px;height:10px;background:var(--stu-panel);border-left:1px solid var(--stu-rule);border-top:1px solid var(--stu-rule);transform:rotate(45deg)}.stu-checkpop-head{display:flex;align-items:center;gap:8px;padding:12px 16px;border-bottom:1px solid var(--stu-rule-soft);font-size:12px}.stu-checkpop-chip{display:inline-flex;align-items:center;gap:4px;font-size:11px;font-weight:600;border-radius:999px;padding:2px 10px;border:1px solid transparent}.stu-checkpop-chip-err{color:var(--stu-red);background:var(--stu-red-soft);border-color:color-mix(in srgb,var(--stu-red) 22%,var(--stu-panel))}.stu-checkpop-chip-warn{color:var(--stu-amber);background:var(--stu-amber-soft);border-color:color-mix(in srgb,var(--stu-amber) 26%,var(--stu-panel))}.stu-checkpop-chip-ok{color:var(--stu-green)}.stu-checkpop-ran{margin-left:auto;font-size:11px;color:var(--stu-faint)}.stu-checkpop-rows{padding:8px 0;max-height:320px;overflow-y:auto}.stu-checkpop-empty{padding:8px 16px;font-size:12px;color:var(--stu-gray)}.stu-checkrow{display:flex;gap:8px;padding:8px 16px;font-size:12px;border-left:2px solid transparent}.stu-checkrow-error{border-left-color:var(--stu-red);background:var(--stu-well)}.stu-checkrow-error .stu-checkrow-code{color:var(--stu-red)}.stu-checkrow-warn{border-left-color:var(--stu-amber)}.stu-checkrow-warn .stu-checkrow-code{color:var(--stu-amber)}.stu-checkrow-code{flex:none;font-family:var(--stu-mono);font-size:11px}.stu-checkrow-msg{flex:1;color:var(--stu-slate);line-height:1.45}.stu-checkrow-line{color:var(--stu-gray)}.stu-checkrow-hint{display:block;color:var(--stu-faint)}.stu-checkrow-open{flex:none;align-self:center;border:none;background:none;padding:0;font-size:11px;font-weight:600;color:var(--stu-navy);cursor:pointer;white-space:nowrap}.stu-checkrow-open:hover{color:var(--stu-navy-strong)}.stu-checkpop-foot{display:flex;align-items:center;gap:8px;padding:8px 16px;border-top:1px solid var(--stu-rule-soft);font-size:11px;color:var(--stu-faint)}.stu-checkpop-docrow{display:flex;align-items:center;gap:10px;width:100%;border:none;background:none;padding:7px 16px;font:inherit;font-size:12.5px;text-align:left;cursor:pointer}.stu-checkpop-docrow:hover{background:var(--stu-navy-soft)}.stu-checkpop-docname{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:600;color:var(--stu-ink)}.stu-checkpop-doccount{flex:none;font-size:11px;font-weight:600;color:var(--stu-red)}.stu-doclist-status{justify-self:start;display:inline-flex;align-items:center;gap:4px;font-size:11px;font-weight:600;border-radius:999px;white-space:nowrap}.stu-doclist-status-ok{color:var(--stu-green)}.stu-doclist-status-err{color:var(--stu-red);background:var(--stu-red-soft);border:1px solid color-mix(in srgb,var(--stu-red) 22%,var(--stu-panel));padding:2px 10px}.stu-review-errline{margin:0;padding:8px 20px 0;font-size:12px;font-weight:600;color:var(--stu-red)}.stu-libbtn:focus-visible,.stu-export-item:focus-visible,.stu-checkchip:focus-visible,.stu-checkrow-open:focus-visible,.stu-checkpop-docrow:focus-visible,.stu-sheet-prevbtn:focus-visible,.stu-rail-brand:focus-visible,.stu-rail-mini-mark:focus-visible,.stu-rail-mini-btn:focus-visible,.stu-rail-new:focus-visible,.stu-rail-doc:focus-visible,.stu-rail-foot a:focus-visible,.stu-rail-foot button:focus-visible,.stu-picker-item:focus-visible,.stu-picker-import:focus-visible,.stu-picker-pill:focus-visible,.stu-picker-x:focus-visible,.stu-picker-copy:focus-visible,.stu-picker-yaml:focus-visible,.stu-doclist-row:focus-visible,.stu-doclist-empty-chip:focus-visible,.stu-keybar-x:focus-visible,.stu-keys-card header button:focus-visible,.stu-keys-tour:focus-visible,.stu-autosave input:focus-visible+.stu-switch{outline:none;box-shadow:var(--stu-ring)}.stu-picker-search:focus-within{border-bottom-color:var(--stu-navy)}