synabun 2026.4.21 → 2026.4.25-beta.2

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 (61) hide show
  1. package/CHANGELOG.md +175 -881
  2. package/README.md +1 -1
  3. package/hooks/claude-code/prompt-submit.mjs +39 -18
  4. package/hooks/claude-code/session-start.mjs +10 -3
  5. package/hooks/claude-code/shared.mjs +39 -2
  6. package/hooks/claude-code/stop.mjs +33 -6
  7. package/mcp-server/src/index.ts +9 -1
  8. package/mcp-server/src/services/neural-interface.ts +42 -14
  9. package/mcp-server/src/services/profiles.ts +8 -7
  10. package/mcp-server/src/tools/browser-advanced.ts +12 -10
  11. package/mcp-server/src/tools/browser-interact.ts +39 -38
  12. package/mcp-server/src/tools/browser-navigate.ts +12 -4
  13. package/mcp-server/src/tools/loop.ts +7 -3
  14. package/mcp-server/src/tools/profile.ts +19 -1
  15. package/neural-interface/lib/loop-logger.js +103 -0
  16. package/neural-interface/lib/mcp-installer.js +109 -0
  17. package/neural-interface/lib/plugin-installer.js +264 -0
  18. package/neural-interface/package.json +1 -1
  19. package/neural-interface/public/shared/api.js +66 -17
  20. package/neural-interface/public/shared/cdx/cdx-icons.js +5 -4
  21. package/neural-interface/public/shared/cdx/cdx-panel.js +117 -14
  22. package/neural-interface/public/shared/cdx/cdx-render.js +170 -43
  23. package/neural-interface/public/shared/cdx/cdx-styles.js +55 -10
  24. package/neural-interface/public/shared/cdx/cdx-tabs.js +394 -72
  25. package/neural-interface/public/shared/cli-status.js +157 -0
  26. package/neural-interface/public/shared/constants.js +3 -2
  27. package/neural-interface/public/shared/html-shell.js +32 -11
  28. package/neural-interface/public/shared/ocp/ocp-panel.js +127 -28
  29. package/neural-interface/public/shared/ocp/ocp-render.js +52 -44
  30. package/neural-interface/public/shared/ocp/ocp-styles.js +33 -0
  31. package/neural-interface/public/shared/ocp/ocp-tabs.js +693 -82
  32. package/neural-interface/public/shared/styles.css +635 -0
  33. package/neural-interface/public/shared/ui-automation-studio.js +38 -12
  34. package/neural-interface/public/shared/ui-claude-panel.js +322 -15
  35. package/neural-interface/public/shared/ui-file-explorer.js +38 -18
  36. package/neural-interface/public/shared/ui-menubar.js +34 -10
  37. package/neural-interface/public/shared/ui-navbar.js +8 -6
  38. package/neural-interface/public/shared/ui-schedules-studio.js +1464 -0
  39. package/neural-interface/public/shared/ui-settings.js +274 -50
  40. package/neural-interface/public/shared/ui-sidepanel-layout.js +18 -7
  41. package/neural-interface/public/shared/ui-sidepanel-tray.js +287 -0
  42. package/neural-interface/public/shared/ui-sync.js +9 -5
  43. package/neural-interface/public/shared/ui-terminal.js +76 -27
  44. package/neural-interface/public/shared/ui-tool-updates.js +49 -15
  45. package/neural-interface/public/shared/ui-tutorial-steps.js +4 -2
  46. package/neural-interface/public/shared/ui-tutorial.js +24 -18
  47. package/neural-interface/public/shared/ui-whiteboard.js +79 -31
  48. package/neural-interface/public/shared/vterm-buffer.js +9 -8
  49. package/neural-interface/public/variant/2d/main.js +9 -7
  50. package/neural-interface/public/variant/3d/main.js +10 -8
  51. package/neural-interface/server.js +1292 -255
  52. package/package.json +1 -1
  53. package/skills/leonardo/SKILL.md +5 -1
  54. package/skills/leonardo/modules/image-prompter.md +5 -1
  55. package/skills/leonardo/modules/video-prompter.md +5 -1
  56. package/skills/synabun/SKILL.md +44 -26
  57. package/skills/synabun/modules/audit.md +40 -36
  58. package/skills/synabun/modules/changelog.md +22 -18
  59. package/skills/synabun/modules/memorize.md +19 -15
  60. package/skills/synabun/modules/schedule.md +285 -0
  61. package/CLAUDE.md +0 -217
@@ -201,6 +201,7 @@
201
201
  .settings-panel.glass,
202
202
  .skills-studio-panel.glass,
203
203
  .automation-studio-panel.glass,
204
+ .schedules-studio-panel.glass,
204
205
  .session-monitor-panel.glass,
205
206
  .command-runner-panel.glass,
206
207
  .image-gallery-panel.glass,
@@ -230,6 +231,7 @@
230
231
  .settings-panel,
231
232
  .skills-studio-panel,
232
233
  .automation-studio-panel,
234
+ .schedules-studio-panel,
233
235
  .session-monitor-panel,
234
236
  .command-runner-panel,
235
237
  .image-gallery-panel,
@@ -344,6 +346,94 @@
344
346
  .static-bg-logo.game-active {
345
347
  opacity: 0.12;
346
348
  }
349
+ .wb-ruleset-alert {
350
+ position: absolute;
351
+ left: calc(var(--sidebar-total-width, 0px) + (100% - var(--sidebar-total-width, 0px) - var(--right-panel-width, var(--claude-panel-width, 0px))) / 2);
352
+ top: calc(50% + 58px);
353
+ width: min(420px, max(240px, calc(100vw - var(--sidebar-total-width, 0px) - var(--right-panel-width, var(--claude-panel-width, 0px)) - 92px)));
354
+ z-index: 4;
355
+ transform: translateX(-50%) rotate(-1deg);
356
+ text-align: center;
357
+ pointer-events: auto;
358
+ opacity: 0;
359
+ animation: wbRulesetAlertIn 0.5s ease 0.35s forwards;
360
+ transition: opacity 0.2s ease, transform 0.2s ease;
361
+ }
362
+ .wb-ruleset-alert.hidden {
363
+ display: none;
364
+ }
365
+ .wb-ruleset-alert-text {
366
+ position: relative;
367
+ display: inline-block;
368
+ font-family: 'Caveat', cursive;
369
+ font-size: 22px;
370
+ line-height: 1.15;
371
+ color: rgba(255,255,255,0.42);
372
+ text-shadow: 0 0 18px rgba(255,255,255,0.06);
373
+ }
374
+ .wb-ruleset-alert-text::after {
375
+ content: '';
376
+ position: absolute;
377
+ left: 8%;
378
+ right: 6%;
379
+ bottom: -5px;
380
+ height: 8px;
381
+ border-bottom: 2px solid rgba(255,255,255,0.16);
382
+ border-radius: 50%;
383
+ transform: rotate(0.7deg);
384
+ }
385
+ .wb-ruleset-alert-text code {
386
+ font-family: inherit;
387
+ font-size: 1em;
388
+ color: rgba(255,255,255,0.62);
389
+ }
390
+ .wb-ruleset-alert-actions {
391
+ display: flex;
392
+ align-items: center;
393
+ justify-content: center;
394
+ gap: 18px;
395
+ margin-top: 14px;
396
+ }
397
+ .wb-ruleset-alert-btn {
398
+ appearance: none;
399
+ border: none;
400
+ background: transparent;
401
+ color: rgba(255,255,255,0.44);
402
+ font-family: 'Caveat', cursive;
403
+ font-size: 22px;
404
+ line-height: 1;
405
+ cursor: pointer;
406
+ padding: 2px 4px;
407
+ transform: rotate(0.5deg);
408
+ transition: color 0.15s ease, transform 0.18s ease, text-shadow 0.15s ease;
409
+ }
410
+ .wb-ruleset-alert-dismiss {
411
+ color: rgba(255,255,255,0.28);
412
+ transform: rotate(-0.7deg);
413
+ }
414
+ .wb-ruleset-alert-btn:hover {
415
+ color: rgba(255,255,255,0.7);
416
+ transform: translateY(-1px) scale(1.05) rotate(0deg);
417
+ text-shadow: 0 0 20px rgba(255,255,255,0.14);
418
+ }
419
+ @keyframes wbRulesetAlertIn {
420
+ from { opacity: 0; transform: translateX(-50%) translateY(8px) rotate(-1deg); }
421
+ to { opacity: 1; transform: translateX(-50%) translateY(0) rotate(-1deg); }
422
+ }
423
+ @media (max-width: 720px) {
424
+ .wb-ruleset-alert {
425
+ top: calc(50% + 50px);
426
+ width: min(300px, calc(100vw - 64px));
427
+ }
428
+ .wb-ruleset-alert-text,
429
+ .wb-ruleset-alert-btn {
430
+ font-size: 19px;
431
+ }
432
+ .wb-ruleset-alert-actions {
433
+ gap: 12px;
434
+ margin-top: 12px;
435
+ }
436
+ }
347
437
  .focus-breathe {
348
438
  display: none;
349
439
  }
@@ -4716,6 +4806,19 @@
4716
4806
  .iface-section[data-collapsible].collapsed .cc-section-body {
4717
4807
  display: none !important;
4718
4808
  }
4809
+ .iface-section.settings-focus-target {
4810
+ animation: settingsFocusTarget 1.3s ease 2;
4811
+ }
4812
+ @keyframes settingsFocusTarget {
4813
+ 0%, 100% {
4814
+ box-shadow: none;
4815
+ border-color: rgba(255,255,255,0.06);
4816
+ }
4817
+ 45% {
4818
+ box-shadow: 0 0 0 1px rgba(255,255,255,0.12), 0 0 26px rgba(79,195,247,0.16);
4819
+ border-color: rgba(79,195,247,0.28);
4820
+ }
4821
+ }
4719
4822
 
4720
4823
  /* ── CLI Paths section ── */
4721
4824
  .cli-path-row {
@@ -11210,6 +11313,55 @@
11210
11313
  display: none;
11211
11314
  }
11212
11315
 
11316
+ /* Top-level page tabs (Profiles / Installed) inside the MCP settings page */
11317
+ .stg-mcp-page-tabs {
11318
+ display: inline-flex;
11319
+ gap: 2px;
11320
+ margin-bottom: 14px;
11321
+ padding: 3px;
11322
+ background: var(--settings-panel-bg, rgba(255, 255, 255, 0.03));
11323
+ border: 1px solid var(--settings-divider, rgba(255, 255, 255, 0.06));
11324
+ border-radius: 8px;
11325
+ }
11326
+ .stg-mcp-page-tab {
11327
+ background: transparent;
11328
+ border: 0;
11329
+ padding: 6px 16px;
11330
+ font-size: 12px;
11331
+ font-family: inherit;
11332
+ font-weight: 500;
11333
+ color: var(--settings-text-muted, rgba(255, 255, 255, 0.55));
11334
+ cursor: pointer;
11335
+ border-radius: 5px;
11336
+ transition: background 0.12s, color 0.12s;
11337
+ }
11338
+ .stg-mcp-page-tab:hover { color: var(--settings-text, rgba(255, 255, 255, 0.9)); }
11339
+ .stg-mcp-page-tab.active {
11340
+ background: var(--settings-accent-bg, rgba(255, 255, 255, 0.08));
11341
+ color: var(--settings-text, rgba(255, 255, 255, 0.95));
11342
+ }
11343
+ /* Per-CLI registration badges on an Installed row */
11344
+ .stg-mx-ext-clis {
11345
+ display: inline-flex;
11346
+ gap: 3px;
11347
+ margin-left: 6px;
11348
+ }
11349
+ .stg-mx-ext-cli-badge {
11350
+ display: inline-flex;
11351
+ align-items: center;
11352
+ justify-content: center;
11353
+ min-width: 22px;
11354
+ height: 16px;
11355
+ padding: 0 5px;
11356
+ font-size: 9px;
11357
+ font-weight: 600;
11358
+ letter-spacing: 0.04em;
11359
+ color: rgba(255, 255, 255, 0.7);
11360
+ background: rgba(255, 255, 255, 0.06);
11361
+ border: 1px solid rgba(255, 255, 255, 0.08);
11362
+ border-radius: 3px;
11363
+ }
11364
+
11213
11365
  /* Source tabs (GitHub / JSON) */
11214
11366
  .stg-mcp-source-tabs {
11215
11367
  display: inline-flex;
@@ -19182,6 +19334,489 @@
19182
19334
  #as-schedules-btn { display: flex; align-items: center; gap: 4px; }
19183
19335
  #as-schedules-btn svg { flex-shrink: 0; }
19184
19336
 
19337
+ /* ═══════════════════════════════════════════
19338
+ SCHEDULES STUDIO - dedicated window
19339
+ ═══════════════════════════════════════════ */
19340
+
19341
+ .schedules-studio-panel {
19342
+ position: fixed; z-index: 300001;
19343
+ width: 980px; max-width: 96vw; min-width: 520px;
19344
+ height: 620px; max-height: 90vh; min-height: 420px;
19345
+ display: flex; flex-direction: column;
19346
+ overflow: hidden;
19347
+ opacity: 0; transform: scale(0.97);
19348
+ transition: opacity 0.15s ease, transform 0.15s ease;
19349
+ container-type: inline-size;
19350
+ container-name: sched;
19351
+ }
19352
+ .schedules-studio-panel.open { opacity: 1; transform: scale(1); }
19353
+
19354
+ .sched-header {
19355
+ display: flex; align-items: center; gap: 10px;
19356
+ padding: 8px 14px;
19357
+ border-bottom: 1px solid rgba(255,255,255,0.06);
19358
+ background: linear-gradient(to bottom, rgba(255,255,255,0.025), transparent);
19359
+ flex-shrink: 0; user-select: none;
19360
+ }
19361
+ .sched-header-left { display: flex; align-items: center; gap: 8px; flex: 1; min-width: 0; }
19362
+ .sched-header-icon {
19363
+ width: 24px; height: 24px; display: inline-flex; align-items: center; justify-content: center;
19364
+ color: var(--t-secondary);
19365
+ }
19366
+ .sched-header h3 {
19367
+ margin: 0; font-family: var(--ff-heading); font-size: var(--fs-base);
19368
+ color: var(--t-bright); font-weight: 600; letter-spacing: 0;
19369
+ }
19370
+ .sched-count {
19371
+ font-size: 10px; color: rgba(255,255,255,0.42);
19372
+ background: rgba(255,255,255,0.04); border: 1px solid rgba(255,255,255,0.06);
19373
+ border-radius: var(--r-pill); padding: 2px 8px;
19374
+ }
19375
+ .sched-header-actions { display: flex; align-items: center; gap: 6px; }
19376
+ .sched-header-btn,
19377
+ .sched-primary,
19378
+ .sched-secondary {
19379
+ display: inline-flex; align-items: center; justify-content: center; gap: 6px;
19380
+ border-radius: 8px; font-size: var(--fs-xs); font-family: inherit; font-weight: 600;
19381
+ min-height: 28px; padding: 5px 12px; cursor: pointer; transition: all 0.15s ease;
19382
+ letter-spacing: 0;
19383
+ }
19384
+ .sched-header-btn {
19385
+ color: var(--t-secondary); background: transparent; border: 1px solid transparent;
19386
+ }
19387
+ .sched-header-btn:hover { background: rgba(255,255,255,0.06); color: var(--t-bright); }
19388
+ .sched-primary {
19389
+ color: var(--t-bright); background: rgba(79,195,247,0.12); border: 1px solid rgba(79,195,247,0.24);
19390
+ }
19391
+ .sched-primary:hover { background: rgba(79,195,247,0.18); border-color: rgba(79,195,247,0.34); }
19392
+ .sched-secondary {
19393
+ color: var(--t-secondary); background: rgba(255,255,255,0.035); border: 1px solid rgba(255,255,255,0.08);
19394
+ }
19395
+ .sched-secondary:hover { background: rgba(255,255,255,0.07); color: var(--t-bright); }
19396
+ .sched-close {
19397
+ width: 28px; height: 28px; border: 0; background: transparent; color: var(--t-dim);
19398
+ border-radius: 8px; cursor: pointer; font-size: 20px; line-height: 1;
19399
+ }
19400
+ .sched-close:hover { background: rgba(255,255,255,0.06); color: var(--t-bright); }
19401
+
19402
+ .sched-body { display: flex; flex: 1; min-height: 0; }
19403
+ .sched-sidebar {
19404
+ width: 230px; flex-shrink: 0; border-right: 1px solid rgba(255,255,255,0.06);
19405
+ padding: 14px 12px; display: flex; flex-direction: column; gap: 8px;
19406
+ background: rgba(255,255,255,0.015); overflow-y: auto;
19407
+ }
19408
+ .sched-sidebar-summary {
19409
+ display: grid; grid-template-columns: 1fr 1fr; gap: 6px; margin-bottom: 6px;
19410
+ }
19411
+ .sched-sidebar-summary div {
19412
+ border: 1px solid rgba(255,255,255,0.07); border-radius: 8px;
19413
+ background: rgba(255,255,255,0.03); padding: 8px;
19414
+ }
19415
+ .sched-sidebar-summary span { display: block; color: var(--t-bright); font-size: 18px; font-weight: 700; }
19416
+ .sched-sidebar-summary label { display: block; color: var(--t-muted); font-size: 10px; margin-top: 2px; }
19417
+ .sched-sidebar-label {
19418
+ margin: 8px 4px 2px; color: var(--t-muted); font-size: 10px; font-weight: 700;
19419
+ text-transform: uppercase; letter-spacing: 0.08em;
19420
+ }
19421
+ .sched-group-list { display: flex; flex-direction: column; gap: 4px; }
19422
+ .sched-group-row {
19423
+ display: flex; align-items: center; gap: 8px; width: 100%; min-height: 34px;
19424
+ background: transparent; border: 1px solid transparent; border-radius: 8px;
19425
+ color: var(--t-secondary); cursor: pointer; padding: 6px 8px; text-align: left;
19426
+ font-family: inherit; transition: all 0.15s ease;
19427
+ }
19428
+ .sched-group-row:hover,
19429
+ .sched-group-row.drop-target { background: rgba(255,255,255,0.045); border-color: rgba(255,255,255,0.08); }
19430
+ .sched-group-row.active {
19431
+ background: rgba(255,255,255,0.07); border-color: rgba(255,255,255,0.12); color: var(--t-bright);
19432
+ }
19433
+ .sched-group-color {
19434
+ width: 9px; height: 9px; border-radius: 50%; flex-shrink: 0;
19435
+ box-shadow: 0 0 0 1px rgba(255,255,255,0.12);
19436
+ }
19437
+ .sched-group-color.large { width: 14px; height: 14px; }
19438
+ .sched-group-icon { width: 16px; display: inline-flex; color: var(--t-muted); }
19439
+ .sched-group-name { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
19440
+ .sched-group-count {
19441
+ font-size: 10px; color: var(--t-muted); background: rgba(255,255,255,0.045);
19442
+ border-radius: var(--r-pill); padding: 1px 6px;
19443
+ }
19444
+ .sched-sidebar-new {
19445
+ display: inline-flex; align-items: center; justify-content: center; gap: 6px;
19446
+ border: 1px solid rgba(255,255,255,0.08); border-radius: 8px; background: rgba(255,255,255,0.035);
19447
+ color: var(--t-secondary); min-height: 32px; cursor: pointer; font-family: inherit;
19448
+ margin-top: 6px;
19449
+ }
19450
+ .sched-sidebar-new:hover { background: rgba(255,255,255,0.07); color: var(--t-bright); }
19451
+ .sched-sidebar-empty { color: var(--t-muted); font-size: 11px; padding: 8px 6px; }
19452
+ .sched-sidebar-prompt {
19453
+ margin-top: auto; display: inline-flex; align-items: center; justify-content: center; gap: 6px;
19454
+ border: 1px solid rgba(255,255,255,0.09); border-radius: 8px;
19455
+ background: rgba(255,255,255,0.04);
19456
+ color: var(--t-secondary); min-height: 34px; cursor: pointer; font-family: inherit;
19457
+ font-size: 12px; font-weight: 600; letter-spacing: 0;
19458
+ box-shadow: var(--shadow-highlight);
19459
+ transition: border-color 160ms ease, color 160ms ease, background 160ms ease, transform 120ms ease;
19460
+ }
19461
+ .sched-sidebar-prompt:hover {
19462
+ background: rgba(255,255,255,0.075);
19463
+ border-color: rgba(255,255,255,0.14);
19464
+ color: var(--t-bright);
19465
+ transform: translateY(-1px);
19466
+ }
19467
+ .sched-sidebar-prompt svg { width: 13px; height: 13px; color: var(--t-muted); }
19468
+
19469
+ .sched-prompt-backdrop {
19470
+ position: fixed; inset: 0; background: rgba(5,7,12,0.58);
19471
+ backdrop-filter: blur(7px); -webkit-backdrop-filter: blur(7px);
19472
+ z-index: 300010; opacity: 0; transition: opacity 160ms ease-out;
19473
+ pointer-events: auto;
19474
+ }
19475
+ .sched-prompt-backdrop.open { opacity: 1; }
19476
+ .sched-prompt-modal {
19477
+ position: fixed; left: 50%; top: 50%; transform: translate(-50%, -52%) scale(0.98);
19478
+ width: min(512px, calc(100vw - 32px)); padding: 0;
19479
+ border-radius: 12px; z-index: 300011;
19480
+ opacity: 0; transition: opacity 160ms ease-out, transform 200ms ease-out;
19481
+ background:
19482
+ linear-gradient(to bottom, rgba(255,255,255,0.035), rgba(255,255,255,0.01)),
19483
+ rgba(13,15,20,0.96);
19484
+ border: 1px solid rgba(255,255,255,0.085);
19485
+ box-shadow: 0 22px 64px rgba(0,0,0,0.58), var(--shadow-highlight);
19486
+ overflow: hidden;
19487
+ }
19488
+ .sched-prompt-modal.open { opacity: 1; transform: translate(-50%, -50%) scale(1); }
19489
+ .sched-prompt-head {
19490
+ display: flex; align-items: center; justify-content: space-between; gap: 12px;
19491
+ padding: 15px 16px 13px;
19492
+ border-bottom: 1px solid rgba(255,255,255,0.055);
19493
+ }
19494
+ .sched-prompt-head-text {
19495
+ display: flex; align-items: center; gap: 10px; min-width: 0;
19496
+ }
19497
+ .sched-prompt-icon {
19498
+ display: inline-flex; align-items: center; justify-content: center;
19499
+ width: 30px; height: 30px; border-radius: 8px; flex: 0 0 auto;
19500
+ background: rgba(255,255,255,0.055);
19501
+ border: 1px solid rgba(255,255,255,0.075);
19502
+ color: var(--t-secondary);
19503
+ box-shadow: var(--shadow-highlight);
19504
+ }
19505
+ .sched-prompt-icon svg { width: 14px; height: 14px; }
19506
+ .sched-prompt-head h3 {
19507
+ margin: 0; font-family: var(--ff-heading); font-size: 14px; font-weight: 650;
19508
+ color: var(--t-bright); letter-spacing: 0;
19509
+ }
19510
+ .sched-prompt-head p {
19511
+ margin: 2px 0 0; font-size: 11.5px; line-height: 1.35; color: var(--t-muted);
19512
+ }
19513
+ .sched-prompt-close {
19514
+ display: inline-flex; align-items: center; justify-content: center;
19515
+ width: 28px; height: 28px; flex: 0 0 auto;
19516
+ background: transparent; border: 1px solid transparent; border-radius: 7px;
19517
+ color: var(--t-muted); cursor: pointer; padding: 0;
19518
+ transition: background 150ms ease, border-color 150ms ease, color 150ms ease;
19519
+ }
19520
+ .sched-prompt-close:hover {
19521
+ background: rgba(255,255,255,0.055);
19522
+ border-color: rgba(255,255,255,0.075);
19523
+ color: var(--t-bright);
19524
+ }
19525
+ .sched-prompt-close svg { width: 14px; height: 14px; }
19526
+ .sched-prompt-tiles {
19527
+ display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 8px;
19528
+ padding: 14px 16px 16px;
19529
+ }
19530
+ @media (max-width: 560px) { .sched-prompt-tiles { grid-template-columns: 1fr; } }
19531
+ .sched-prompt-tile {
19532
+ position: relative; display: grid; grid-template-columns: 32px minmax(0, 1fr);
19533
+ grid-template-areas: "logo pill" "body body"; align-content: start; gap: 10px 8px;
19534
+ min-height: 96px; padding: 12px; border-radius: 10px; cursor: pointer; font-family: inherit;
19535
+ background: rgba(255,255,255,0.032);
19536
+ border: 1px solid rgba(255,255,255,0.065);
19537
+ color: var(--t-secondary); text-align: left;
19538
+ backdrop-filter: blur(6px); -webkit-backdrop-filter: blur(6px);
19539
+ transition: background 180ms ease, border-color 180ms ease, transform 160ms ease, box-shadow 180ms ease;
19540
+ overflow: hidden;
19541
+ }
19542
+ .sched-prompt-tile:not(.disabled) {
19543
+ background: rgba(255,255,255,0.045);
19544
+ border-color: rgba(255,255,255,0.095);
19545
+ box-shadow: var(--shadow-highlight);
19546
+ }
19547
+ .sched-prompt-tile:not(.disabled):hover {
19548
+ background: rgba(255,255,255,0.065);
19549
+ border-color: rgba(255,255,255,0.13);
19550
+ color: var(--t-bright); transform: translateY(-1px);
19551
+ box-shadow: var(--shadow-xs), var(--shadow-highlight);
19552
+ }
19553
+ .sched-prompt-tile:not(.disabled):active { transform: translateY(0); }
19554
+ .sched-prompt-tile:focus-visible {
19555
+ outline: none;
19556
+ border-color: rgba(255,255,255,0.18);
19557
+ box-shadow: 0 0 0 2px rgba(255,255,255,0.14), var(--shadow-highlight);
19558
+ }
19559
+ .sched-prompt-tile.disabled { opacity: 0.58; cursor: not-allowed; pointer-events: none; }
19560
+ .sched-prompt-tile-logo {
19561
+ grid-area: logo;
19562
+ display: inline-flex; align-items: center; justify-content: center;
19563
+ width: 32px; height: 32px; border-radius: 8px;
19564
+ background: rgba(255,255,255,0.045);
19565
+ border: 1px solid rgba(255,255,255,0.075);
19566
+ color: color-mix(in srgb, var(--provider-color, #fff) 62%, var(--t-secondary));
19567
+ box-shadow: var(--shadow-highlight);
19568
+ }
19569
+ .sched-prompt-tile-logo svg { width: 16px; height: 16px; display: block; }
19570
+ .sched-prompt-tile-body {
19571
+ grid-area: body; display: flex; flex-direction: column; gap: 2px; min-width: 0;
19572
+ }
19573
+ .sched-prompt-tile-title {
19574
+ font-size: 12.5px; font-weight: 650; color: var(--t-secondary); letter-spacing: 0;
19575
+ line-height: 1.2; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
19576
+ }
19577
+ .sched-prompt-tile:not(.disabled) .sched-prompt-tile-title {
19578
+ color: color-mix(in srgb, var(--provider-color, #fff) 56%, var(--t-bright));
19579
+ }
19580
+ .sched-prompt-tile-sub {
19581
+ font-size: 10.5px; color: var(--t-muted); letter-spacing: 0; line-height: 1.2;
19582
+ white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
19583
+ }
19584
+ .sched-prompt-pill {
19585
+ grid-area: pill; justify-self: end; align-self: start;
19586
+ font-size: 10px; font-weight: 600; letter-spacing: 0;
19587
+ padding: 2px 6px; border-radius: var(--r-pill);
19588
+ background: rgba(255,255,255,0.045); color: var(--t-muted);
19589
+ border: 1px solid rgba(255,255,255,0.06);
19590
+ }
19591
+ .sched-prompt-pill--active {
19592
+ background: rgba(255,255,255,0.075);
19593
+ border-color: rgba(255,255,255,0.12);
19594
+ color: var(--t-secondary);
19595
+ }
19596
+
19597
+ .sched-main { flex: 1; min-width: 0; min-height: 0; display: flex; flex-direction: column; }
19598
+ .sched-tabs {
19599
+ display: flex; align-items: center; gap: 4px; padding: 10px 14px 0;
19600
+ border-bottom: 1px solid rgba(255,255,255,0.05);
19601
+ }
19602
+ .sched-tab {
19603
+ min-height: 30px; padding: 6px 12px; border: 1px solid transparent;
19604
+ border-bottom: 0; border-radius: 8px 8px 0 0; background: transparent;
19605
+ color: var(--t-muted); font-family: inherit; font-size: 12px; font-weight: 600;
19606
+ cursor: pointer; letter-spacing: 0;
19607
+ }
19608
+ .sched-tab:hover { color: var(--t-secondary); background: rgba(255,255,255,0.035); }
19609
+ .sched-tab.active { color: var(--t-bright); background: rgba(255,255,255,0.06); border-color: rgba(255,255,255,0.08); }
19610
+ .sched-content {
19611
+ flex: 1; min-height: 0; overflow-y: auto; padding: 14px;
19612
+ display: flex; flex-direction: column; gap: 12px;
19613
+ }
19614
+
19615
+ .sched-stat-strip {
19616
+ display: grid; grid-template-columns: repeat(3, minmax(80px, 1fr)) auto; gap: 8px;
19617
+ align-items: stretch;
19618
+ }
19619
+ .sched-stat-strip div {
19620
+ border: 1px solid rgba(255,255,255,0.07); border-radius: 8px;
19621
+ background: rgba(255,255,255,0.03); padding: 9px 10px;
19622
+ }
19623
+ .sched-stat-strip span { display: block; color: var(--t-bright); font-size: 18px; font-weight: 700; }
19624
+ .sched-stat-strip label { color: var(--t-muted); font-size: 10px; }
19625
+ .sched-section-head {
19626
+ display: flex; align-items: baseline; justify-content: space-between; gap: 12px;
19627
+ margin-top: 2px;
19628
+ }
19629
+ .sched-section-head h4 {
19630
+ margin: 0; color: var(--t-bright); font-family: var(--ff-heading);
19631
+ font-size: 14px; font-weight: 650; letter-spacing: 0;
19632
+ }
19633
+ .sched-section-head span { color: var(--t-muted); font-size: 11px; }
19634
+ .sched-card-list,
19635
+ .sched-group-card-list,
19636
+ .sched-activity-list { display: flex; flex-direction: column; gap: 8px; }
19637
+
19638
+ .sched-card {
19639
+ display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 12px;
19640
+ align-items: center; border: 1px solid rgba(255,255,255,0.075);
19641
+ border-radius: 8px; background: rgba(255,255,255,0.025);
19642
+ padding: 11px 12px; transition: border-color 0.15s, background 0.15s, opacity 0.15s;
19643
+ }
19644
+ .sched-card:hover { background: rgba(255,255,255,0.04); border-color: rgba(255,255,255,0.12); }
19645
+ .sched-card.is-paused { opacity: 0.58; }
19646
+ .sched-card.dragging { opacity: 0.42; }
19647
+ .sched-card-main { min-width: 0; }
19648
+ .sched-card-title-row { display: flex; align-items: center; gap: 8px; min-width: 0; }
19649
+ .sched-card h4 {
19650
+ margin: 0; color: var(--t-bright); font-size: 14px; font-weight: 700;
19651
+ overflow: hidden; text-overflow: ellipsis; white-space: nowrap; letter-spacing: 0;
19652
+ }
19653
+ .sched-card-meta { margin-top: 3px; color: var(--t-secondary); font-size: 12px; line-height: 1.35; }
19654
+ .sched-card-sub {
19655
+ display: flex; flex-wrap: wrap; gap: 8px; margin-top: 4px;
19656
+ color: var(--t-muted); font-size: 10px;
19657
+ }
19658
+ .sched-countdown {
19659
+ font-variant-numeric: tabular-nums;
19660
+ color: var(--t-secondary);
19661
+ font-weight: 600;
19662
+ }
19663
+ .sched-card-controls { display: flex; align-items: center; gap: 5px; }
19664
+ .sched-card-group-select {
19665
+ width: 128px; min-height: 28px; border-radius: 7px; background: rgba(255,255,255,0.035);
19666
+ border: 1px solid rgba(255,255,255,0.08); color: var(--t-secondary);
19667
+ font-size: 11px; font-family: inherit; padding: 4px 8px;
19668
+ }
19669
+ .sched-icon-btn {
19670
+ min-width: 28px; height: 28px; display: inline-flex; align-items: center; justify-content: center; gap: 4px;
19671
+ border-radius: 7px; border: 1px solid transparent; background: transparent;
19672
+ color: var(--t-dim); cursor: pointer; font-family: inherit; font-size: 11px;
19673
+ }
19674
+ .sched-icon-btn:hover:not(:disabled) { background: rgba(255,255,255,0.06); color: var(--t-bright); border-color: rgba(255,255,255,0.08); }
19675
+ .sched-icon-btn:disabled { opacity: 0.35; cursor: default; }
19676
+ .sched-icon-btn.danger:hover { color: rgba(244,67,54,0.9); border-color: rgba(244,67,54,0.22); }
19677
+ .sched-badge {
19678
+ font-size: 9px; font-weight: 700; padding: 2px 6px; border-radius: 5px;
19679
+ text-transform: uppercase; letter-spacing: 0.04em; white-space: nowrap;
19680
+ }
19681
+ .sched-badge--ok { background: rgba(76,175,80,0.12); color: rgba(102,210,120,0.95); }
19682
+ .sched-badge--paused { background: rgba(255,255,255,0.06); color: var(--t-muted); }
19683
+ .sched-badge--error { background: rgba(244,67,54,0.12); color: rgba(244,67,54,0.95); }
19684
+ .sched-empty {
19685
+ border: 1px dashed rgba(255,255,255,0.09); border-radius: 8px;
19686
+ color: var(--t-muted); padding: 28px; text-align: center;
19687
+ }
19688
+ .sched-empty .sched-primary { margin-top: 12px; }
19689
+
19690
+ .sched-tool-section,
19691
+ .sched-active-timers {
19692
+ border: 1px solid rgba(255,255,255,0.075); border-radius: 8px;
19693
+ background: rgba(255,255,255,0.025); padding: 12px;
19694
+ display: flex; flex-direction: column; gap: 12px;
19695
+ }
19696
+ .sched-active-timers { gap: 6px; }
19697
+ .sched-active-timer {
19698
+ display: grid; grid-template-columns: minmax(0, 1fr) auto auto; align-items: center; gap: 10px;
19699
+ border: 1px solid rgba(255,255,255,0.06); border-radius: 7px;
19700
+ background: rgba(0,0,0,0.12); padding: 7px 9px;
19701
+ }
19702
+ .sched-active-timer span { color: var(--t-secondary); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
19703
+ .sched-active-timer strong { color: var(--t-bright); font-size: 13px; font-variant-numeric: tabular-nums; }
19704
+ .sched-form-grid {
19705
+ display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px;
19706
+ }
19707
+ .sched-form-grid.compact { grid-template-columns: minmax(0, 1fr) 120px auto; align-items: end; }
19708
+ .sched-field { display: flex; flex-direction: column; gap: 5px; min-width: 0; }
19709
+ .sched-field.wide { grid-column: span 2; }
19710
+ .sched-field span {
19711
+ color: var(--t-secondary); font-size: 11px; font-weight: 650;
19712
+ }
19713
+ .sched-field input,
19714
+ .sched-field select,
19715
+ .sched-cron-input {
19716
+ width: 100%; min-height: 34px; border-radius: 7px;
19717
+ border: 1px solid rgba(255,255,255,0.08); background: rgba(0,0,0,0.18);
19718
+ color: var(--t-bright); font-size: 12px; font-family: inherit; padding: 7px 9px;
19719
+ outline: none; letter-spacing: 0;
19720
+ }
19721
+ .sched-cron-input { font-family: 'SF Mono', 'Fira Code', monospace; }
19722
+ .sched-field input:focus,
19723
+ .sched-field select:focus,
19724
+ .sched-cron-input:focus { border-color: rgba(79,195,247,0.35); }
19725
+ .sched-toggle {
19726
+ display: inline-flex; align-items: center; gap: 8px; min-height: 34px;
19727
+ color: var(--t-secondary); font-size: 12px; cursor: pointer;
19728
+ }
19729
+ .sched-time-row { display: flex; flex-wrap: wrap; align-items: center; gap: 7px; }
19730
+ .sched-time-chip {
19731
+ min-width: 46px; min-height: 30px; border-radius: 8px;
19732
+ border: 1px solid rgba(255,255,255,0.08); background: rgba(255,255,255,0.035);
19733
+ color: var(--t-secondary); font-family: inherit; cursor: pointer;
19734
+ }
19735
+ .sched-time-chip:hover,
19736
+ .sched-time-chip.active { background: rgba(255,255,255,0.08); color: var(--t-bright); border-color: rgba(255,255,255,0.13); }
19737
+ .sched-min-input {
19738
+ width: 58px; min-height: 30px; border-radius: 8px;
19739
+ border: 1px solid rgba(255,255,255,0.08); background: rgba(0,0,0,0.18);
19740
+ color: var(--t-bright); padding: 5px 8px; font-family: inherit;
19741
+ }
19742
+ .align-end { align-self: end; }
19743
+
19744
+ .sched-group-card {
19745
+ display: flex; align-items: center; justify-content: space-between; gap: 12px;
19746
+ border: 1px solid rgba(255,255,255,0.075); border-radius: 8px;
19747
+ background: rgba(255,255,255,0.025); padding: 11px 12px;
19748
+ }
19749
+ .sched-group-card-main { display: flex; align-items: center; gap: 10px; min-width: 0; }
19750
+ .sched-group-card-main h4 { margin: 0; color: var(--t-bright); font-size: 13px; letter-spacing: 0; }
19751
+ .sched-group-card-main span:not(.sched-group-color) { color: var(--t-muted); font-size: 11px; }
19752
+ .sched-group-card-actions { display: flex; align-items: center; gap: 5px; }
19753
+
19754
+ .sched-activity-row {
19755
+ display: grid; grid-template-columns: minmax(180px, 1fr) auto minmax(80px, auto) minmax(140px, auto) minmax(80px, auto);
19756
+ align-items: center; gap: 10px; border: 1px solid rgba(255,255,255,0.07);
19757
+ border-radius: 8px; background: rgba(255,255,255,0.025); padding: 9px 10px;
19758
+ color: var(--t-secondary); font-size: 11px;
19759
+ }
19760
+ .sched-activity-row strong { display: block; color: var(--t-bright); font-size: 12px; }
19761
+ .sched-activity-row div span { color: var(--t-muted); }
19762
+
19763
+ .sched-editor { display: flex; flex-direction: column; min-height: 0; height: 100%; }
19764
+ .sched-editor-head {
19765
+ display: flex; align-items: center; gap: 10px; padding: 12px 14px;
19766
+ border-bottom: 1px solid rgba(255,255,255,0.06);
19767
+ }
19768
+ .sched-editor-head h3 {
19769
+ margin: 0; color: var(--t-bright); font-size: 15px; font-family: var(--ff-heading); letter-spacing: 0;
19770
+ }
19771
+ .sched-editor-head span { color: var(--t-muted); font-size: 11px; }
19772
+ .sched-editor-body {
19773
+ flex: 1; min-height: 0; overflow-y: auto; padding: 14px;
19774
+ display: flex; flex-direction: column; gap: 14px;
19775
+ }
19776
+ .sched-editor-section {
19777
+ border: 1px solid rgba(255,255,255,0.075); border-radius: 8px;
19778
+ background: rgba(255,255,255,0.025); padding: 12px; display: flex; flex-direction: column; gap: 10px;
19779
+ }
19780
+ .sched-presets { display: flex; flex-direction: column; gap: 8px; }
19781
+ .sched-preset-group { display: flex; flex-direction: column; gap: 5px; }
19782
+ .sched-preset-group > span {
19783
+ color: var(--t-muted); font-size: 10px; font-weight: 700; text-transform: uppercase; letter-spacing: 0.08em;
19784
+ }
19785
+ .sched-preset-group > div { display: flex; flex-wrap: wrap; gap: 5px; }
19786
+ .sched-preset {
19787
+ min-height: 26px; border-radius: 7px; border: 1px solid rgba(79,195,247,0.16);
19788
+ background: rgba(79,195,247,0.06); color: rgba(150,220,255,0.92);
19789
+ font-size: 11px; font-family: inherit; padding: 4px 8px; cursor: pointer;
19790
+ }
19791
+ .sched-preset:hover { background: rgba(79,195,247,0.12); border-color: rgba(79,195,247,0.28); }
19792
+ .sched-day-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 7px 10px; }
19793
+ .sched-day-field { display: grid; grid-template-columns: 38px minmax(0, 1fr); align-items: center; gap: 7px; }
19794
+ .sched-day-field span { color: var(--t-muted); font-size: 10px; text-align: right; }
19795
+ .sched-day-field input {
19796
+ min-height: 30px; border-radius: 6px; border: 1px solid rgba(255,255,255,0.08);
19797
+ background: rgba(0,0,0,0.18); color: var(--t-bright); font-size: 11px; padding: 6px 8px;
19798
+ }
19799
+ .sched-editor-actions {
19800
+ display: flex; justify-content: flex-end; gap: 8px; padding: 10px 14px;
19801
+ border-top: 1px solid rgba(255,255,255,0.06);
19802
+ }
19803
+
19804
+ @container sched (max-width: 760px) {
19805
+ .sched-body { flex-direction: column; }
19806
+ .sched-sidebar { width: auto; max-height: 160px; border-right: 0; border-bottom: 1px solid rgba(255,255,255,0.06); }
19807
+ .sched-sidebar-summary { display: none; }
19808
+ .sched-stat-strip { grid-template-columns: repeat(3, 1fr); }
19809
+ .sched-stat-strip .sched-primary { grid-column: 1 / -1; }
19810
+ .sched-card { grid-template-columns: 1fr; }
19811
+ .sched-card-controls { flex-wrap: wrap; }
19812
+ .sched-card-group-select { width: 100%; }
19813
+ .sched-form-grid,
19814
+ .sched-form-grid.compact { grid-template-columns: 1fr; }
19815
+ .sched-field.wide { grid-column: span 1; }
19816
+ .sched-activity-row { grid-template-columns: 1fr; }
19817
+ .sched-day-grid { grid-template-columns: 1fr; }
19818
+ }
19819
+
19185
19820
  /* ═══════════════════════════════════════════
19186
19821
  TERMINAL PANEL — docked bottom
19187
19822
  ═══════════════════════════════════════════ */