loopgen 0.1.0 → 0.2.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.
Files changed (33) hide show
  1. package/dist/server.js +6 -0
  2. package/dist-web/assets/fraunces-latin-ext-wght-normal-Ca2vKHc0.woff2 +0 -0
  3. package/dist-web/assets/fraunces-latin-wght-normal-ukD16Tqj.woff2 +0 -0
  4. package/dist-web/assets/fraunces-vietnamese-wght-normal-CnvboYUG.woff2 +0 -0
  5. package/dist-web/assets/ibm-plex-mono-cyrillic-400-normal-BSMlKf0J.woff2 +0 -0
  6. package/dist-web/assets/ibm-plex-mono-cyrillic-400-normal-CEL4l2ZJ.woff +0 -0
  7. package/dist-web/assets/ibm-plex-mono-cyrillic-500-normal-Ael50iVv.woff +0 -0
  8. package/dist-web/assets/ibm-plex-mono-cyrillic-500-normal-Bq9vWWag.woff2 +0 -0
  9. package/dist-web/assets/ibm-plex-mono-cyrillic-ext-400-normal-DMdlQ8Kv.woff +0 -0
  10. package/dist-web/assets/ibm-plex-mono-cyrillic-ext-400-normal-xuaO2J-f.woff2 +0 -0
  11. package/dist-web/assets/ibm-plex-mono-cyrillic-ext-500-normal-BIfNGwUT.woff +0 -0
  12. package/dist-web/assets/ibm-plex-mono-cyrillic-ext-500-normal-BqneJy0T.woff2 +0 -0
  13. package/dist-web/assets/ibm-plex-mono-latin-400-normal-CvHOgSBP.woff +0 -0
  14. package/dist-web/assets/ibm-plex-mono-latin-400-normal-DMJ8VG8y.woff2 +0 -0
  15. package/dist-web/assets/ibm-plex-mono-latin-500-normal-CB9ihrfo.woff +0 -0
  16. package/dist-web/assets/ibm-plex-mono-latin-500-normal-DSY6xOcd.woff2 +0 -0
  17. package/dist-web/assets/ibm-plex-mono-latin-ext-400-normal-BmRBH3aV.woff2 +0 -0
  18. package/dist-web/assets/ibm-plex-mono-latin-ext-400-normal-D3D2R8hC.woff +0 -0
  19. package/dist-web/assets/ibm-plex-mono-latin-ext-500-normal-CAhNIIs5.woff2 +0 -0
  20. package/dist-web/assets/ibm-plex-mono-latin-ext-500-normal-CZ70TYgx.woff +0 -0
  21. package/dist-web/assets/ibm-plex-mono-vietnamese-400-normal-BulugwFq.woff2 +0 -0
  22. package/dist-web/assets/ibm-plex-mono-vietnamese-400-normal-DDuiU_S-.woff +0 -0
  23. package/dist-web/assets/ibm-plex-mono-vietnamese-500-normal-C8zxqsMH.woff +0 -0
  24. package/dist-web/assets/ibm-plex-mono-vietnamese-500-normal-DZ4AoWbu.woff2 +0 -0
  25. package/dist-web/assets/index-C6Mdh0sn.css +1 -0
  26. package/dist-web/assets/index-bviMO1K8.js +13 -0
  27. package/dist-web/assets/space-grotesk-latin-ext-wght-normal-D9tNdqV9.woff2 +0 -0
  28. package/dist-web/assets/space-grotesk-latin-wght-normal-BhU9QXUp.woff2 +0 -0
  29. package/dist-web/assets/space-grotesk-vietnamese-wght-normal-D0rl6rjA.woff2 +0 -0
  30. package/dist-web/index.html +13 -2
  31. package/package.json +4 -1
  32. package/dist-web/assets/index-BrxUKxHo.css +0 -1
  33. package/dist-web/assets/index-CIWs8r78.js +0 -13
@@ -4,8 +4,19 @@
4
4
  <meta charset="UTF-8" />
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
6
6
  <title>loopgen</title>
7
- <script type="module" crossorigin src="/assets/index-CIWs8r78.js"></script>
8
- <link rel="stylesheet" crossorigin href="/assets/index-BrxUKxHo.css">
7
+ <script>
8
+ (function () {
9
+ try {
10
+ var t = localStorage.getItem("loopgen-theme");
11
+ if (t !== "light" && t !== "dark") {
12
+ t = window.matchMedia("(prefers-color-scheme: dark)").matches ? "dark" : "light";
13
+ }
14
+ document.documentElement.dataset.theme = t;
15
+ } catch (e) {}
16
+ })();
17
+ </script>
18
+ <script type="module" crossorigin src="/assets/index-bviMO1K8.js"></script>
19
+ <link rel="stylesheet" crossorigin href="/assets/index-C6Mdh0sn.css">
9
20
  </head>
10
21
  <body>
11
22
  <div id="root"></div>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "loopgen",
3
- "version": "0.1.0",
3
+ "version": "0.2.0",
4
4
  "description": "Generate bounded, verifiable AI agent configs for Codex, Claude, Cursor, and local models — with safety rails baked in.",
5
5
  "type": "module",
6
6
  "engines": {
@@ -56,6 +56,9 @@
56
56
  "yaml": "^2.8.2"
57
57
  },
58
58
  "devDependencies": {
59
+ "@fontsource-variable/fraunces": "^5.2.9",
60
+ "@fontsource-variable/space-grotesk": "^5.2.10",
61
+ "@fontsource/ibm-plex-mono": "^5.2.7",
59
62
  "@types/node": "^24.10.1",
60
63
  "@types/react": "^19.2.7",
61
64
  "@types/react-dom": "^19.2.3",
@@ -1 +0,0 @@
1
- :root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;color:#181f21;font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;--bg:#f4f6f6;--surface:#fff;--surface-2:#f8faf9;--surface-3:#eef4f3;--line:#dbe2e1;--line-strong:#c5d0ce;--muted:#5e6b6e;--text:#181f21;--teal:#008d89;--teal-dark:#00736f;--teal-soft:#e8f7f5;--green:#147a35;--green-soft:#e9f6ed;--amber:#ad6500;--amber-soft:#fff4df;--red:#b73332;--red-soft:#fff0ef;--shadow:0 18px 42px #12262b14;--mono:"SFMono-Regular", Consolas, "Liberation Mono", monospace;background:#f4f6f6;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}@media (prefers-color-scheme:dark){:root{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;color:#e7edec;--bg:#0f1413;--surface:#161d1c;--surface-2:#1b2322;--surface-3:#202a29;--line:#2a3433;--line-strong:#3a4644;--muted:#9aa7a8;--text:#e7edec;--teal:#2fb6b0;--teal-dark:#23938e;--teal-soft:#10302e;--green:#3fae62;--green-soft:#11271a;--amber:#e0992f;--amber-soft:#2e2410;--red:#f06b6a;--red-soft:#2e1716;--shadow:0 18px 42px #00000073;background:#0f1413}}*{box-sizing:border-box}:focus-visible{outline:2px solid var(--teal);outline-offset:2px;border-radius:4px}body{background:var(--bg);min-width:320px;min-height:100vh;margin:0}button,input,textarea,select{font:inherit}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.58}.app-shell{background:var(--bg);grid-template-columns:248px minmax(0,1fr);min-height:100vh;display:grid}.sidebar{border-right:1px solid var(--line);background:var(--surface);flex-direction:column;height:100vh;display:flex;position:sticky;top:0}.brand{border-bottom:1px solid var(--line);align-items:center;gap:13px;height:92px;padding:0 24px;font-size:24px;display:flex}.brand-mark{color:#fff;background:var(--teal);border-radius:7px;place-items:center;width:30px;height:30px;display:grid}.project-card{border:1px solid var(--line);background:var(--surface-2);color:var(--muted);border-radius:8px;grid-template-columns:22px 1fr;align-items:center;gap:10px;margin:18px 18px 10px;padding:12px;display:grid}.project-card strong,.project-card span{min-width:0;display:block}.project-card span{text-transform:uppercase;color:var(--muted);font-size:11px}.project-card strong{color:var(--text);text-overflow:ellipsis;white-space:nowrap;margin-top:3px;font-size:14px;overflow:hidden}.side-nav{gap:5px;padding:8px 12px;display:grid}.side-nav-item{color:#344144;text-align:left;background:0 0;border:0;border-radius:7px;align-items:center;gap:10px;width:100%;min-height:40px;padding:0 11px;font-size:14px;display:flex}.side-nav-item:hover{background:var(--surface-3)}.side-nav-item.active{background:var(--teal-soft);color:var(--teal-dark);font-weight:680}.sidebar-footer{border-top:1px solid var(--line);min-height:64px;color:var(--muted);align-items:center;gap:9px;margin-top:auto;padding:0 24px;font-size:13px;display:flex}.daemon-dot{background:var(--green);width:8px;height:8px;box-shadow:0 0 0 3px var(--green-soft);border-radius:50%}.workspace{min-width:0}.workspace-page{align-content:start;gap:18px;min-height:100vh;padding:26px 28px;display:grid}.view-header{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;gap:20px;min-height:118px;display:flex}.view-header svg{color:var(--teal)}.summary-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;display:grid}.summary-card{border:1px solid var(--line);background:var(--surface);border-radius:8px;gap:7px;min-height:86px;padding:14px;display:grid}.summary-card span{color:var(--muted);text-transform:uppercase;font-size:12px;font-weight:680}.summary-card strong{overflow-wrap:anywhere;min-width:0;color:var(--text);font-size:20px}.content-grid{grid-template-columns:minmax(620px,1fr) minmax(388px,33vw);min-height:100vh;display:grid}.main-column{align-content:start;gap:18px;min-width:0;padding:26px 28px;display:grid}.tool-panel{border:1px solid var(--line);background:var(--surface);border-radius:8px;padding:18px}.mode-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-top:14px;display:grid}.mode-button{border:1px solid var(--line);color:#263235;text-align:left;background:#fff;border-left:3px solid #0000;border-radius:8px;grid-template-columns:26px minmax(0,1fr) 22px;align-items:start;gap:12px;min-width:0;min-height:92px;padding:14px 12px;display:grid}.mode-button:hover{background:var(--surface-2)}.mode-button.active{border-left-color:var(--teal);background:#fbfefe}.mode-button>svg{color:var(--teal)}.mode-button span{gap:5px;min-width:0;display:grid}.mode-button strong{font-size:14px}.mode-button small{color:var(--muted);font-size:12px;line-height:1.35}.mode-check{border:1px solid var(--line-strong);color:#fff;background:var(--teal);border-radius:5px;place-items:center;width:21px;height:21px;display:grid!important}.mode-button:not(.active) .mode-check{background:#fff}.panel-kicker{color:var(--muted);letter-spacing:.08em;text-transform:uppercase;margin-bottom:7px;font-size:11px;font-weight:720}.scan-bar,.section-title{justify-content:space-between;align-items:flex-start;gap:18px;display:flex}h1,h2{color:var(--text);letter-spacing:0;margin:0;font-weight:740}h1{font-size:24px;line-height:1.18}h2{font-size:20px;line-height:1.25}p{color:var(--muted);margin:5px 0 0;font-size:13px;line-height:1.45}.count-badge,.status-pill{border:1px solid var(--line);color:#3d4b4e;white-space:nowrap;background:#fff;border-radius:7px;align-items:center;gap:8px;min-height:30px;padding:6px 10px;font-size:12px;font-weight:640;display:inline-flex}.status-pill.success{color:var(--green);background:var(--green-soft);border-color:#b9d8c2}.status-pill.warning{color:var(--amber);background:var(--amber-soft);border-color:#ead0a7}.status-pill.error{color:var(--red);background:var(--red-soft);border-color:#ecc0bf}.path-row{grid-template-columns:minmax(0,1fr) auto auto;align-items:end;gap:12px;margin-top:16px;display:grid}.path-row label,.behavior-grid label{color:#3f4d50;gap:7px;font-size:12px;font-weight:640;display:grid}.path-row input,.settings-grid input,.behavior-grid textarea,.behavior-grid select,.filter-row select,.adapter-config input,.adapter-config select{border:1px solid var(--line);width:100%;color:var(--text);background:#fff;border-radius:7px;padding:10px 11px;font-size:13px;line-height:1.35}.path-row input:disabled,.settings-grid input:disabled{color:#58676a;background:var(--surface-3)}.behavior-grid textarea{resize:vertical;font-family:var(--mono)}.settings-grid{grid-template-columns:minmax(0,1fr) auto auto auto;align-items:end;gap:12px;margin-top:14px;display:grid}.settings-grid label{color:#3f4d50;gap:7px;font-size:12px;font-weight:640;display:grid}.history-list{gap:8px;margin:14px 0 0;padding:0;list-style:none;display:grid}.history-entry{border:1px solid var(--line);background:#fff;border-radius:8px;grid-template-columns:12px minmax(0,1fr) auto;align-items:start;gap:12px;min-height:64px;padding:12px;display:grid}.history-entry strong,.settings-adapter strong{color:var(--text);font-size:14px}.history-entry p{overflow-wrap:anywhere}.history-entry time{color:var(--muted);white-space:nowrap;font-size:12px}.history-dot{background:var(--green);width:9px;height:9px;box-shadow:0 0 0 3px var(--green-soft);border-radius:50%;margin-top:5px}.history-entry.warning .history-dot{background:var(--amber);box-shadow:0 0 0 3px var(--amber-soft)}.history-entry.error .history-dot{background:var(--red);box-shadow:0 0 0 3px var(--red-soft)}.empty-state{border:1px dashed var(--line-strong);min-height:220px;color:var(--muted);text-align:center;border-radius:8px;align-content:center;place-items:center;gap:8px;margin-top:14px;display:grid}.empty-state strong{color:var(--text)}.empty-state span{max-width:280px;font-size:13px;line-height:1.4}.settings-adapter-list{gap:8px;margin-top:14px;display:grid}.settings-adapter{border:1px solid var(--line);background:#fff;border-radius:8px;grid-template-columns:26px minmax(0,1fr) auto;align-items:center;gap:12px;min-height:56px;padding:10px 12px;display:grid}.settings-adapter svg{color:var(--teal)}.settings-adapter div{gap:2px;min-width:0;display:grid}.settings-adapter span{overflow-wrap:anywhere;min-width:0;color:var(--muted);font-size:12px}.scan-layout{grid-template-columns:minmax(340px,1fr) minmax(220px,280px);align-items:start;gap:28px;margin-top:16px;display:grid}.scan-table{border:1px solid var(--line);background:var(--surface);border-radius:7px;margin:0;overflow:hidden}.scan-table div{border-bottom:1px solid var(--line);grid-template-columns:minmax(130px,36%) minmax(0,1fr);min-height:34px;display:grid}.scan-table div:last-child{border-bottom:0}.scan-table dt,.scan-table dd{overflow-wrap:anywhere;min-width:0;margin:0;padding:9px 12px;font-size:13px;line-height:1.3}.scan-table dt{color:#536164;background:var(--surface-2);border-right:1px solid var(--line)}.scan-table dd{color:#253236}.metrics-list{gap:11px;display:grid}.metric{color:#3f4d50;grid-template-columns:22px 1fr auto;align-items:center;gap:10px;font-size:13px;display:grid}.metric svg{color:#657477}.metric strong{color:var(--text);font-weight:720}.template-list,.adapter-list{gap:8px;margin-top:14px;display:grid}.filter-row{grid-template-columns:minmax(150px,.7fr) minmax(150px,.7fr) auto;align-items:end;gap:10px;margin-top:14px;display:grid}.filter-row label{color:#3f4d50;gap:7px;font-size:12px;font-weight:640;display:grid}.compact-empty{min-height:150px}.template-row{border:1px solid var(--line);color:#263235;background:#fff;border-left-width:3px;border-left-color:#0000;border-radius:8px;grid-template-columns:26px 28px minmax(0,1fr) auto;align-items:start;gap:13px;min-height:108px;padding:10px 12px 10px 10px;display:grid;position:relative}.template-row:hover{background:var(--surface-2)}.template-row.selected{border-left-color:var(--teal);background:#fbfefe}.template-row input,.adapter-checkbox input{opacity:0;pointer-events:none;position:absolute}.checkbox-mark{color:#fff;background:#fff;border:1px solid #9ca9ab;border-radius:5px;place-items:center;width:21px;height:21px;display:grid}.template-row input:checked+.checkbox-mark,.adapter-checkbox input:checked+.checkbox-mark{border-color:var(--teal);background:var(--teal)}.template-copy,.adapter-copy{gap:3px;min-width:0;display:grid}.template-title-line{flex-wrap:wrap;align-items:center;gap:8px;min-width:0;display:flex}.template-copy strong,.adapter-copy strong{font-size:14px;font-weight:720}.template-copy small,.adapter-copy small{color:var(--muted);font-size:12px;line-height:1.3}.template-title-line small,.template-meta small{border:1px solid var(--line);background:var(--surface-2);color:#4a595c;border-radius:999px;width:fit-content;max-width:100%;padding:2px 6px;font-size:11px;font-weight:650}.template-meta{flex-wrap:wrap;gap:6px;min-width:0;display:flex}.template-outcome{overflow-wrap:anywhere}.recommend{white-space:nowrap;align-items:center;gap:7px;font-size:12px;display:inline-flex}.recommend:before{content:"";background:currentColor;border-radius:50%;width:8px;height:8px}.recommend.recommended{color:var(--green)}.recommend.optional{color:var(--amber)}.adapter-card{border:1px solid var(--line);background:#fff;border-left:3px solid #0000;border-radius:8px;overflow:hidden}.adapter-card.selected{border-left-color:var(--teal)}.adapter-card.expanded{box-shadow:0 10px 24px #12262b0f}.adapter-row{grid-template-columns:38px minmax(0,1fr);align-items:stretch;min-height:62px;display:grid}.adapter-checkbox{border-right:1px solid var(--line);place-items:center;display:grid;position:relative}.adapter-toggle{width:100%;min-width:0;color:var(--text);text-align:left;background:0 0;border:0;grid-template-columns:28px minmax(0,1fr) auto;align-items:center;gap:12px;padding:10px 12px;display:grid}.adapter-toggle:hover{background:var(--surface-2)}.adapter-copy>span{align-items:center;gap:8px;min-width:0;display:flex}.adapter-copy em{border:1px solid var(--line);color:var(--muted);border-radius:999px;padding:2px 6px;font-size:11px;font-style:normal;font-weight:650}.adapter-chevron{color:var(--muted);transition:transform .16s}.adapter-toggle[aria-expanded=true] .adapter-chevron{transform:rotate(180deg)}.adapter-panel{border-top:1px solid var(--line);background:var(--surface-2);padding:14px}.adapter-detail-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;display:grid}.detail-item{border:1px solid var(--line);background:#fff;border-radius:7px;align-content:start;gap:6px;min-width:0;padding:10px;display:grid}.detail-item.wide{grid-column:1/-1}.detail-item span{color:var(--muted);letter-spacing:.04em;text-transform:uppercase;font-size:11px;font-weight:720}.detail-item strong{color:#263235;font-size:13px;line-height:1.35}code{font-family:var(--mono);font-size:12px}.detail-item code,.file-chip-row code,.command-chips code{overflow-wrap:anywhere;border:1px solid var(--line);color:#283638;background:#f7f9f9;border-radius:5px;width:fit-content;max-width:100%;padding:3px 6px}.file-chip-row{flex-wrap:wrap;gap:6px;display:flex}.file-chip-row small{background:var(--teal-soft);color:var(--teal-dark);border-radius:999px;padding:4px 7px;font-size:12px;font-weight:650}.success-text{color:var(--green)!important}.safety-note ul{color:#4f5d60;margin:0;padding-left:18px;font-size:12px;line-height:1.45}.adapter-config-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;display:grid}.adapter-config-grid label{color:#3f4d50;text-transform:none;letter-spacing:0;gap:7px;min-width:0;font-size:12px;font-weight:640;display:grid}.behavior-grid{grid-template-columns:minmax(160px,.45fr) minmax(260px,1fr);gap:14px;margin-top:14px;display:grid}.wide-field{grid-column:1/-1}.command-chips{color:#3f4d50;gap:7px;font-size:12px;font-weight:640;display:grid}.command-chips div{border:1px solid var(--line);background:#fff;border-radius:7px;flex-wrap:wrap;align-items:center;gap:7px;min-height:40px;padding:8px 9px;display:flex}.command-chips em{color:var(--muted);font-style:normal;font-weight:500}.check-line{color:#3f4d50;align-items:center;gap:9px;min-height:34px;font-size:13px;display:flex!important}.preview-panel{border-left:1px solid var(--line);background:var(--surface);grid-template-rows:auto auto minmax(0,1fr) auto;min-width:0;height:100vh;display:grid;position:sticky;top:0}.preview-header{border-bottom:1px solid var(--line);justify-content:space-between;align-items:flex-start;min-height:124px;padding:24px 22px 18px;display:flex}.preview-header svg{color:var(--teal)}.preview-stats{border-bottom:1px solid var(--line);grid-template-columns:repeat(3,minmax(0,1fr));display:grid}.preview-stats span{color:var(--muted);text-transform:uppercase;border-right:1px solid var(--line);gap:2px;padding:12px 18px;font-size:11px;display:grid}.preview-stats span:last-child{border-right:0}.preview-stats strong{color:var(--text);font-size:18px;font-weight:740}.preview-stats .warn-stat strong{color:var(--amber)}.diff-view{font-family:var(--mono);background:#fbfcfc;margin:0;padding:16px 0;font-size:12px;line-height:1.5;overflow:auto}.diff-view code{white-space:pre;min-width:max-content;padding:0 18px;display:block}.diff-add{color:#14713a;background:#eff9f2}.diff-remove{color:#a83232;background:#fff3f2}.diff-meta,.diff-hunk{color:#5c6a6d;background:#f0f4f4}.diff-context{color:#253236}.empty-diff{color:#5e6c70;text-align:center;align-content:center;place-items:center;gap:9px;min-height:360px;padding:34px;display:grid}.empty-diff strong{color:#273436}.empty-diff span{max-width:260px;font-size:13px;line-height:1.4}.preview-footer{border-top:1px solid var(--line);background:#fff;gap:15px;padding:16px 18px 18px;display:grid}.status-summary{color:var(--green);align-items:flex-start;gap:10px;display:flex}.status-summary.error{color:var(--red)}.status-summary.warning{color:var(--amber)}.status-summary div{gap:3px;display:grid}.status-summary strong{color:#203034;font-size:14px}.status-summary span{color:var(--muted);font-size:12px;line-height:1.35}.action-row{grid-template-columns:1fr 1fr;gap:10px;display:grid}.primary-button,.secondary-button{border-radius:7px;justify-content:center;align-items:center;gap:9px;min-height:44px;padding:0 16px;font-size:14px;font-weight:680;display:inline-flex}.compact-button{min-height:38px}.primary-button{border:1px solid var(--teal-dark);background:var(--teal);color:#fff;box-shadow:var(--shadow)}.primary-button:hover{background:var(--teal-dark)}.secondary-button{border:1px solid var(--line-strong);color:#253236;background:#fff}.secondary-button:hover{background:#f3f7f7}.spin{animation:.9s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}@media (width<=1120px){.app-shell{grid-template-columns:1fr}.sidebar{height:auto;position:static}.brand{height:70px}.project-card,.sidebar-footer{display:none}.side-nav{border-bottom:1px solid var(--line);grid-template-columns:repeat(3,minmax(0,1fr));padding:10px 16px}.side-nav-item{justify-content:center}.content-grid{grid-template-columns:1fr}.preview-panel{border-left:0;border-top:1px solid var(--line);height:auto;min-height:560px;position:static}}@media (width<=760px){.workspace-page{gap:14px;padding:16px}.view-header{min-height:auto;padding-bottom:16px}.summary-grid,.settings-grid{grid-template-columns:1fr}.history-entry,.settings-adapter{grid-template-columns:12px minmax(0,1fr)}.history-entry time,.settings-adapter code{grid-column:2}.main-column{gap:14px;padding:16px}.tool-panel{padding:15px}.scan-bar,.section-title,.path-row,.scan-layout,.mode-grid,.filter-row,.behavior-grid{grid-template-columns:1fr}.path-row{align-items:stretch}.template-row{grid-template-columns:26px 24px minmax(0,1fr)}.recommend{display:none}.adapter-detail-grid,.adapter-config-grid{grid-template-columns:1fr}.adapter-row{grid-template-columns:36px minmax(0,1fr)}.adapter-copy>span{flex-wrap:wrap}.preview-header{min-height:auto}.action-row{grid-template-columns:1fr}.primary-button,.secondary-button{width:100%}}