:root{--font-body:"Avenir Next", "Avenir", "SF Pro Text", -apple-system, "Segoe UI", "Noto Sans TC", "PingFang TC", "Microsoft JhengHei UI", sans-serif;--font-display:"Avenir Next", "Avenir", "SF Pro Text", "Noto Sans TC", "PingFang TC", sans-serif;--radius-sm:6px;--radius-md:8px;--radius-lg:10px;--card-shadow:none;--hero-title-size:24px;--hero-title-weight:700;--hero-title-tracking:0;--section-title-size:16px;--section-title-weight:700;--section-title-transform:none;--section-title-tracking:0;--subpanel-title-transform:uppercase;--subpanel-title-tracking:.35px;--subpanel-title-weight:700;--panel-padding:24px;--subpanel-padding:16px;--control-height:38px;--table-head-size:12px;--table-body-size:14px;--bg:#ede7dc;--text:#1e1a16;--muted:#696056;--surface:#f5f0e8;--surface-2:#eee4d4;--surface-elev:#faf6ee;--line:#cfc2af;--line-strong:#b9aa96;--primary:#3d2e1e;--primary-2:#5a4330;--danger:#dc2626;--ok:#16a34a;--warn:#d97706;--info:#3b82f6;--nav-bg:#e4dbcb;--nav-link:#312820;--nav-hover-bg:#d9cfbe;--nav-hover-border:#ad9b84;--nav-active-bg:#cec1ad;--nav-active-border:#8f7c64;--nav-active-text:#1f1812;--log-bg:#201a15;--log-text:#efe5d8;--log-border:#3b3026}html[data-theme=karimoku-case]{--font-body:"Avenir Next", "Avenir", "SF Pro Text", -apple-system, "Segoe UI", "Noto Sans TC", "PingFang TC", "Microsoft JhengHei UI", sans-serif;--font-display:"Avenir Next", "Avenir", "SF Pro Text", "Noto Sans TC", "PingFang TC", sans-serif;--radius-sm:6px;--radius-md:8px;--radius-lg:10px;--card-shadow:none;--hero-title-size:24px;--hero-title-weight:700;--hero-title-tracking:-.2px;--section-title-size:16px;--section-title-weight:700;--section-title-transform:none;--section-title-tracking:0;--subpanel-title-transform:none;--subpanel-title-tracking:.35px;--subpanel-title-weight:700;--panel-padding:24px;--subpanel-padding:16px;--control-height:38px;--table-head-size:12px;--table-body-size:14px;--bg:#ede7dc;--text:#1e1a16;--muted:#696056;--surface:#f5f0e8;--surface-2:#eee4d4;--surface-elev:#faf6ee;--line:#cfc2af;--line-strong:#b9aa96;--primary:#3d2e1e;--primary-2:#5a4330;--danger:#dc2626;--ok:#16a34a;--warn:#d97706;--info:#3b82f6;--nav-bg:#e4dbcb;--nav-link:#312820;--nav-hover-bg:#d9cfbe;--nav-hover-border:#ad9b84;--nav-active-bg:#cec1ad;--nav-active-border:#8f7c64;--nav-active-text:#1f1812;--log-bg:#201a15;--log-text:#efe5d8;--log-border:#3b3026}*{box-sizing:border-box}html,body{margin:0;padding:0}body{color:var(--text);background:var(--bg);font-family:var(--font-body);min-height:100vh}a{color:var(--primary);text-underline-offset:2px}.app-layout{min-height:100vh;display:flex}.app-shell{min-height:100vh;margin:0;display:flex}.app-main{flex:1;min-width:0;overflow-y:auto}.side-nav{border-right:1px solid var(--line);background:var(--nav-bg);width:236px;height:100vh;padding:16px 12px;position:sticky;top:0}.side-nav-brand{border-bottom:1px solid var(--line);padding:10px 10px 12px}.side-nav-title{font-family:var(--font-display);letter-spacing:.1px;font-size:21px;font-weight:700}.side-nav-subtitle{color:var(--muted);margin-top:4px;font-size:12px}.side-nav-links{gap:6px;margin-top:10px;display:grid}.side-nav-link{color:var(--nav-link);border-radius:var(--radius-sm);letter-spacing:0;border:1px solid #0000;padding:12px 10px;font-size:16px;font-weight:700;text-decoration:none;transition:all .14s;display:block}.side-nav-link:hover{border-color:var(--nav-hover-border);background:var(--nav-hover-bg)}.side-nav-link.is-active{border-color:var(--nav-active-border);background:var(--nav-active-bg);color:var(--nav-active-text);box-shadow:inset 2px 0 0 var(--primary)}.side-nav-logout{border:1px solid var(--line-strong);border-radius:var(--radius-sm);width:100%;color:var(--nav-link);cursor:pointer;font:inherit;text-align:left;background:0 0;margin-top:18px;padding:10px;font-size:14px;font-weight:700}.side-nav-logout:hover{background:var(--nav-hover-bg);border-color:var(--nav-hover-border)}.app-content{flex:1;min-width:0}.auth-page{justify-content:center;align-items:center;min-height:100vh;padding:32px;display:flex}.auth-card{border:1px solid var(--line);border-radius:var(--radius-lg);background:var(--surface-elev);width:min(440px,100%);padding:28px}.auth-kicker{color:var(--muted);letter-spacing:.35px;text-transform:uppercase;margin:0 0 8px;font-size:12px;font-weight:700}.auth-title{font-family:var(--font-display);margin:0;font-size:28px;line-height:1.2}.auth-copy{color:var(--muted);margin:8px 0 0;font-size:14px}.auth-form{gap:14px;margin-top:24px;display:grid}.auth-field{gap:6px;font-size:13px;font-weight:700;display:grid}.auth-field input{border:1px solid var(--line-strong);border-radius:var(--radius-sm);width:100%;color:var(--text);font:inherit;min-height:var(--control-height);background:#fffaf2;padding:8px 10px}.auth-error{border-radius:var(--radius-sm);color:var(--danger);background:#fff0f0;border:1px solid #f0a0a0;padding:10px;font-size:13px;font-weight:700}.auth-submit{border:1px solid var(--primary);border-radius:var(--radius-sm);background:var(--primary);color:#fff;cursor:pointer;font:inherit;min-height:var(--control-height);padding:9px 12px;font-weight:700}.auth-submit:disabled{cursor:progress;opacity:.65}.shell{max-width:none;margin:0;padding:28px 32px 44px}.page-header,.hero{border:1px solid var(--line);border-radius:var(--radius-lg);background:var(--surface-elev);box-shadow:var(--card-shadow);justify-content:space-between;align-items:flex-start;gap:14px;padding:22px 24px;display:flex}.page-header-main{min-width:0}.page-header h1,.hero h1{font-family:var(--font-display);font-size:var(--hero-title-size);letter-spacing:var(--hero-title-tracking);line-height:1.2;font-weight:var(--hero-title-weight);margin:0}.page-header p,.hero p{color:var(--muted);margin:6px 0 0;font-size:13px}.page-header-action{flex:none;align-self:center}.hero-links{flex-wrap:wrap;gap:14px;margin-top:8px;font-size:14px;display:flex}.entry-grid{grid-template-columns:1.5fr 1fr;gap:14px;margin-top:12px;display:grid}.entry-panel{border:1px solid var(--line);border-radius:var(--radius-md);background:var(--surface-elev);padding:var(--panel-padding)}.entry-panel-title{letter-spacing:.2px;font-size:14px;font-weight:700}.entry-panel-desc{color:var(--muted);margin-top:6px;font-size:13px}.flow-list{margin:10px 0 0;padding-left:18px;font-size:13px}.flow-list li+li{margin-top:5px}.feature-grid{grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:12px;margin-top:14px;display:grid}.feature-card{background:var(--surface-elev);border:1px solid var(--line);border-radius:var(--radius-md);padding:var(--panel-padding);color:inherit;text-decoration:none;transition:border-color .16s;display:block}.feature-card:hover{border-color:#b6a792}.feature-card-title{font-size:14px;font-weight:800}.feature-card-desc{color:var(--muted);margin-top:5px;font-size:12px}.ui-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-lg);box-shadow:var(--card-shadow);margin-top:14px;overflow:hidden}.ui-card-header{background:var(--surface-2);border-bottom:1px solid var(--line);letter-spacing:.2px;font-weight:600;font-family:var(--font-display);padding:12px 14px}.ui-table-wrap{overflow:auto}.ui-table{border-collapse:collapse;width:100%;min-width:640px}.ui-table th{text-align:left;border-bottom:1px solid var(--line);font-size:var(--table-head-size);letter-spacing:.2px;background:#f2ece2;padding:10px 12px;font-weight:600}.ui-table td{font-size:var(--table-body-size);border-top:1px solid #e6ddcf;padding:10px 12px}.optimizer-trial-table th,.optimizer-trial-table td{white-space:nowrap;vertical-align:middle}.optimizer-trial-table thead th{z-index:2;position:sticky;top:0}.optimizer-sticky-col{z-index:1;background:inherit;position:sticky;left:0}.optimizer-trial-table thead .optimizer-sticky-col{z-index:3}.optimizer-sort-btn{all:unset;cursor:pointer;font:inherit;flex-direction:column;align-items:flex-start;gap:1px;font-weight:600;line-height:1.1;display:inline-flex}.optimizer-sort-btn-main{align-items:center;gap:4px;display:inline-flex}.optimizer-sort-btn-sub{color:#7b6d5b;white-space:nowrap;font-size:11px;font-weight:500}.optimizer-benchmark-row{background:#4a556814}.optimizer-shadow-row{background:#4ade8014}.optimizer-batch-list{gap:8px;display:grid}.optimizer-batch-item{border:1px solid var(--line);border-radius:var(--radius-md);background:var(--surface-elev);padding:10px 12px}.optimizer-batch-title{align-items:center;gap:8px;font-size:13px;font-weight:700;display:flex}.optimizer-batch-status{border-radius:999px;align-items:center;padding:2px 8px;font-size:11px;font-weight:700;display:inline-flex}.optimizer-batch-status.status-success{color:#166534;background:#dcfce7;border:1px solid #86efac}.optimizer-batch-status.status-running{color:#1d4ed8;background:#dbeafe;border:1px solid #93c5fd}.optimizer-batch-status.status-failed{color:#991b1b;background:#fee2e2;border:1px solid #fca5a5}.optimizer-batch-status.status-queued{color:#475569;background:#e2e8f0;border:1px solid #cbd5e1}.optimizer-shadow-tag{color:#166534;background:#dcfce7;border:1px solid #86efac;border-radius:999px;align-items:center;margin-left:6px;padding:1px 6px;font-size:10px;font-weight:700;display:inline-flex}.optimizer-execution-context-cell{white-space:normal;word-break:break-word;max-width:340px;line-height:1.35}.optimizer-action-stack{flex-direction:column;gap:6px;display:flex}.optimizer-mock-section{border:1px solid var(--line);border-radius:var(--radius-lg);background:var(--surface-elev);padding:18px 20px}.optimizer-mock-section-title{color:var(--text);font-size:15px;font-weight:700}.optimizer-mock-section-head{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px;display:flex}.optimizer-mock-form-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;margin-top:14px;display:grid}.optimizer-mock-action-row{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.optimizer-mock-stars-inline{border-left:1px solid var(--line);align-items:center;gap:6px;min-height:36px;margin-left:4px;padding-left:14px;display:inline-flex}.optimizer-mock-stars-icon{font-size:15px}.optimizer-mock-stars-label{color:var(--text);font-size:13px;font-weight:700}.optimizer-mock-stars-sub{color:var(--muted);font-size:12px}.optimizer-gate-banner{border:1px solid var(--line);border-radius:var(--radius-md);background:#f8f2e9;gap:2px;margin-top:8px;padding:8px 10px;display:grid}.optimizer-gate-banner.is-ready{border-color:#9ec8a7}.optimizer-gate-banner.is-degraded{border-color:#dfbf8f}.optimizer-gate-banner.is-blocked{border-color:#e0a5a5}.optimizer-gate-banner.is-unknown{border-color:#cfc2af}.optimizer-gate-title{color:var(--text);font-size:12px;font-weight:700}.optimizer-gate-hint{color:var(--muted);font-size:11px}.optimizer-mock-log-toggle{border:1px solid var(--line);border-radius:var(--radius-md);background:var(--surface-elev);text-align:left;cursor:pointer;align-items:center;gap:10px;width:100%;padding:11px 14px;display:flex}.optimizer-mock-log-dot{background:#9d8e7e;border-radius:999px;flex-shrink:0;width:8px;height:8px}.optimizer-mock-log-dot.is-running{background:var(--ok);animation:1.5s ease-in-out infinite ingest-pulse}.optimizer-mock-log-title{color:var(--text);font-size:13px;font-weight:700}.optimizer-mock-log-meta{color:var(--muted);flex:1;min-width:0;font-size:12px}.optimizer-mock-log-arrow{color:#9d8e7e;font-size:12px}.optimizer-mock-log-body{border-radius:var(--radius-md);color:#94a3b8;background:#1c1b22;border:1px solid #2a2838;max-height:240px;margin-top:8px;padding:12px 14px;overflow:auto}.optimizer-mock-candidate-table .optimizer-mock-arrow-cell{color:#9d8e7e;text-align:center;width:28px}.optimizer-mock-data-row{cursor:pointer}.optimizer-mock-data-row:hover td{background:#3e2e1e0a}.optimizer-mock-data-row.is-open td{background:#3d2e1e0f}.optimizer-mock-factor-row td{background:#3d2e1e0a}.optimizer-mock-factor-grid{border-radius:var(--radius-md);background:#f8f2e9;border:1px solid #d8cdbd;grid-template-columns:repeat(5,minmax(0,1fr));gap:8px;padding:10px 12px;display:grid}.optimizer-mock-factor-item{flex-direction:column;gap:2px;display:flex}.optimizer-mock-factor-item span{color:#8f7c68;letter-spacing:.3px;font-size:10px}.optimizer-mock-factor-item strong{color:var(--text);font-variant-numeric:tabular-nums;overflow-wrap:anywhere;font-size:13px}.optimizer-mock-factor-item.optimizer-mock-factor-wide{grid-column:span 2}.optimizer-replay-quick-card{border:1px solid var(--line);border-radius:var(--radius-md);background:#f8f2e9;gap:8px;padding:10px 12px;display:grid}.optimizer-replay-quick-card.tone-ok{border-color:#9ec8a7}.optimizer-replay-quick-card.tone-warn{border-color:#dfbf8f}.optimizer-replay-quick-card.tone-fail{border-color:#e0a5a5}.optimizer-replay-quick-card.tone-muted{border-color:var(--line)}.optimizer-replay-quick-head{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:10px;display:flex}.optimizer-replay-quick-error{color:#8a3333;overflow-wrap:anywhere;background:#fff8f8;border:1px solid #e6b7b7;border-radius:6px;padding:6px 8px;font-size:12px}.chip{border:1px solid var(--line-strong);color:#344054;background:#efe7d9;border-radius:999px;align-items:center;padding:3px 10px;font-size:12px;display:inline-flex}.status-ok{color:var(--ok);font-weight:700}.status-bad{color:var(--danger);font-weight:700}code{background:#efe8dc;border:1px solid #d7cab8;border-radius:6px;padding:1px 5px;font-size:11px}@keyframes optimizer-bar-shift{0%{background-position:0%}to{background-position:200%}}@keyframes optimizer-read-sweep{0%{transform:translate(-110%)}to{transform:translate(110%)}}.optimizer-progress-track{background:#1e293b;border-radius:4px;height:6px;position:relative;overflow:hidden}.optimizer-progress-track.is-reading:after{content:"";pointer-events:none;background:linear-gradient(90deg,#0000 0%,#ffffff29 50%,#0000 100%);width:40%;animation:1.2s linear infinite optimizer-read-sweep;position:absolute;inset:0}.optimizer-progress-fill{background:linear-gradient(90deg,#3b82f6 0%,#60a5fa 50%,#3b82f6 100%) 0 0/200% 100%;height:100%;transition:width .3s}.ui-form-grid{grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:8px;margin-top:8px;display:grid}.ui-field-label{color:var(--text);font-size:12px}.ui-field-input,.ui-field-select{width:100%;min-height:var(--control-height);border:1px solid var(--line);border-radius:var(--radius-sm);color:var(--text);background:#fdfbf7;outline:none;margin-top:4px;padding:7px 10px;font-size:13px;line-height:1.2;transition:border-color .14s,box-shadow .14s}.ui-field-input:focus,.ui-field-select:focus{border-color:#8f7c68;box-shadow:0 0 0 3px #6f5f4d24}.ui-field-select-inline{width:140px;margin-top:0}.ui-inline-input{min-width:240px;min-height:var(--control-height);border-radius:var(--radius-sm);border:1px solid var(--line);padding:7px 10px;font-size:13px}.ui-inline-input:focus{border-color:#8f7c68;outline:none;box-shadow:0 0 0 3px #6f5f4d24}.ui-inline-input-grow{flex:320px;min-width:220px}.ui-check-inline{align-items:center;gap:6px;font-size:12px;display:inline-flex}.ui-btn-gradient{background:linear-gradient(120deg,#4a3e32 0%,#6b5a47 100%)}.ui-heading-lg{font-family:var(--font-display);font-size:var(--section-title-size);font-weight:var(--section-title-weight);letter-spacing:var(--section-title-tracking);text-transform:var(--section-title-transform);margin-bottom:10px}.daily-decision-board{border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:14px 0 12px}.plane-tabs{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.plane-tab-button{border:1px solid var(--line);color:var(--muted);cursor:pointer;background:#f8f3ea;border-radius:999px;padding:8px 14px;font-size:13px;font-weight:700}.plane-tab-button.is-active{color:#f7f4ec;background:#3f5a43;border-color:#3f5a43;box-shadow:0 6px 16px #1c2b1f26}.daily-tabs{flex-wrap:wrap;align-items:center;gap:8px;margin:14px 0 0;display:flex}.ui-pill-tabs,.ops-tabs,.ops-subtabs{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.ui-pill-tabs{margin:14px 0 0}.ui-pill-tabs-sm,.ops-subtabs{gap:6px}.ops-tabs{margin-top:16px}.ops-tabs-compact{margin-top:0;margin-bottom:12px}.ui-pill-tab-button,.daily-tab-button,.ops-tab-button,.ops-subtab-button{background:var(--surface-elev);border:1px solid var(--line);color:var(--muted);cursor:pointer;letter-spacing:0;border-radius:999px;font-weight:700;transition:all .14s}.ui-pill-tab-button,.daily-tab-button,.ops-tab-button{padding:7px 14px;font-size:13px}.ui-pill-tabs-sm .ui-pill-tab-button,.ops-subtab-button{padding:5px 11px;font-size:12px}.ui-pill-tab-button.is-active,.daily-tab-button.is-active,.ops-tab-button.is-active,.ops-subtab-button.is-active{background:var(--primary);border-color:var(--primary);color:var(--surface-elev);box-shadow:0 6px 16px #3e322724}.ui-pill-tab-button:disabled{cursor:not-allowed;opacity:.55}.ops-panel{margin-top:4px}.ops-summary-head{justify-content:space-between;align-items:flex-start;gap:12px;display:flex}.ops-status-banner{border:1px solid var(--line);border-radius:var(--radius-md);background:var(--surface-elev);align-items:center;gap:12px;margin-top:12px;padding:12px;display:flex}.ops-status-title{font-size:22px;font-weight:800}.ops-status-dot{border-radius:999px;flex:none;width:15px;height:15px;display:inline-block}.ops-status-dot-green{background:#36b56a}.ops-status-dot-yellow{background:#d39a27}.ops-status-dot-red{background:#c44a3a}.ops-summary-grid,.ops-action-grid{grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:10px;display:grid}.ops-blocker-list{gap:8px;margin-top:8px;display:grid}.ops-blocker{border-left:4px solid var(--line-strong);background:var(--surface-elev);padding:7px 8px}.ops-blocker-high{border-left-color:var(--danger)}.ops-blocker-warning{border-left-color:#d39a27}.ops-blocker-title{font-size:13px;font-weight:700}.ops-blocker-action{color:var(--muted);margin-top:3px;font-size:12px}.ops-mini-list{color:var(--muted);gap:4px;margin-top:8px;font-size:13px;display:grid}.ops-action-list{gap:8px;margin-top:8px;display:grid}.ops-action-item{border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--surface-elev);padding:8px}.ops-action-title{color:var(--text);font-size:13px;font-weight:700}.ops-action-note{color:var(--muted);margin-top:3px;font-size:12px}.ops-subtabs{margin:0 0 12px}.daily-signal-date{color:var(--muted);margin-bottom:12px;font-size:12px;font-weight:600}.daily-regime-line{font-family:var(--font-display);letter-spacing:-.025em;flex-wrap:wrap;align-items:center;gap:6px;padding-bottom:16px;font-size:clamp(20px,2vw,26px);font-weight:760;display:flex}.daily-regime-dot{border-radius:999px;width:.72em;height:.72em;display:inline-block;box-shadow:inset 0 2px 5px #ffffff80,0 2px 8px #00000024}.daily-regime-dot-full{background:linear-gradient(#7ee35f 0%,#228b22 100%)}.daily-regime-dot-half{background:linear-gradient(#ffe082 0%,#c98900 100%)}.daily-regime-dot-out{background:linear-gradient(#ff9b90 0%,#b42318 100%)}.daily-regime-dot-unknown{background:linear-gradient(#d7d0c6 0%,#7b6d5b 100%)}.daily-regime-label{color:#2f7d3a}.daily-regime-hint{color:var(--muted);font-family:var(--font-body);letter-spacing:0;margin-left:6px;font-size:12px;font-weight:600}.daily-action-columns{border-top:1px solid var(--line);grid-template-columns:repeat(2,minmax(0,1fr));gap:18px;padding-top:18px;display:grid}.daily-action-title{font-family:var(--font-display);letter-spacing:-.025em;margin-bottom:10px;font-size:clamp(18px,1.8vw,22px);font-weight:760}.daily-signal-list{gap:12px;display:grid}.daily-signal-card{border-bottom:1px solid var(--line);padding:0 0 14px}.daily-signal-main,.daily-signal-sub{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.daily-signal-main{color:var(--ink);font-size:15px;font-weight:700}.daily-signal-sub{color:var(--muted);margin-top:8px;font-size:13px;font-weight:600}.daily-signal-card-sell{border-color:#ead7d0}.daily-empty-box{border:1px solid var(--line);border-radius:var(--radius-md);color:var(--muted);background:#f8f3ea;padding:14px 18px;font-size:14px;font-weight:700}.daily-empty-box-blue{color:#245da8;background:#eaf1ff;border-color:#d5e2f6}.daily-empty-note{color:#5f7190;margin-top:8px;font-size:12px;font-weight:600}@media (max-width:820px){.daily-action-columns{grid-template-columns:1fr}.daily-regime-line{padding-bottom:24px}}.ui-text-muted-sm{color:var(--muted);font-size:12px}.ui-text-muted-md{color:var(--muted);font-size:13px}.ui-row-wrap{flex-wrap:wrap;gap:8px;display:flex}.ui-grid-form{grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:10px;display:grid}.ui-grid-step-cards{grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:10px;display:grid}.ingest-mock-head{flex-direction:column;gap:4px;display:flex}.ingest-mock-stepper{grid-template-columns:repeat(3,minmax(0,1fr));align-items:center;gap:10px;display:grid;position:relative}.ingest-mock-stepper:before{content:"";pointer-events:none;z-index:0;background:#d9cdbb;border-radius:999px;height:2px;position:absolute;top:14px;left:14px;right:14px}.ingest-mock-step{background:var(--surface);z-index:1;justify-self:start;align-items:center;gap:8px;width:max-content;min-width:0;max-width:100%;padding-right:12px;display:flex;position:relative}.ingest-mock-step:nth-child(2){justify-content:flex-start;padding-left:12px}.ingest-mock-step:nth-child(3){justify-content:flex-start;padding-left:12px;padding-right:0}.ingest-mock-step-dot{border:1px solid var(--line);color:#8f8579;background:#d8d1c5;border-radius:999px;justify-content:center;align-items:center;width:28px;height:28px;font-size:13px;font-weight:700;display:inline-flex}.ingest-mock-step-label{color:#9d8e7e;white-space:nowrap;font-size:13px;font-weight:600}.ingest-mock-step.is-done .ingest-mock-step-dot{background:var(--ok);color:#fff;border-color:var(--ok)}.ingest-mock-step.is-done .ingest-mock-step-label{color:#166534}.ingest-mock-step.is-active .ingest-mock-step-dot{background:var(--primary);color:#fff;border-color:var(--primary)}.ingest-mock-step.is-active .ingest-mock-step-label{color:var(--primary)}.ingest-mock-stats{grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;display:grid}.ingest-mock-stat-card{border:1px solid var(--line);background:var(--surface-elev);border-radius:var(--radius-md);padding:14px 16px}.ingest-mock-stat-label{text-transform:uppercase;letter-spacing:.3px;color:#9d8e7e;font-size:11px;font-weight:700}.ingest-mock-stat-value{font-variant-numeric:tabular-nums;color:#1e1a16;margin-top:6px;font-size:30px;font-weight:800;line-height:1}.ingest-mock-stat-value.is-success{color:#15803d}.ingest-mock-stat-value.is-danger{color:#b91c1c}.ingest-mock-status{color:#696056;align-items:center;gap:8px;font-size:13px;display:flex}.ingest-mock-status-dot{background:#9d8e7e;border-radius:999px;flex-shrink:0;width:8px;height:8px}.ingest-mock-status-dot.is-running{background:var(--ok);animation:1.5s ease-in-out infinite ingest-pulse}@keyframes ingest-pulse{0%,to{opacity:1}50%{opacity:.45}}.ingest-mock-progress-head{color:#696056;justify-content:space-between;margin-bottom:6px;font-size:12px;display:flex}.ingest-mock-progress-track{border:1px solid var(--line);background:#e6dccd;border-radius:999px;height:6px;overflow:hidden}.ingest-mock-progress-fill{background:var(--primary);height:100%;transition:width .22s}.ingest-mock-form-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;display:grid}.ingest-mock-datasets{flex-wrap:wrap;gap:8px;display:flex}.ingest-mock-dataset-tag{border:1px solid var(--line);background:var(--surface-elev);color:#696056;cursor:pointer;border-radius:999px;align-items:center;gap:6px;padding:5px 12px;font-size:12px;font-weight:600;display:inline-flex}.ingest-mock-dataset-tag input{cursor:pointer;width:14px;height:14px;accent-color:var(--ok)}.ingest-mock-dataset-tag.is-checked{color:#166534;background:#dcfce7;border-color:#86efac}.ingest-dataset-chip-grid{grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:8px;display:grid}.ingest-dataset-chip{cursor:pointer;flex-direction:column;align-items:flex-start;gap:4px;min-height:66px;padding:8px 10px;display:flex}.ingest-dataset-chip.ui-chip-active{border-color:var(--primary);background:#efe5d5}.ingest-dataset-chip.ui-chip-inactive{background:var(--surface-elev)}.ingest-dataset-chip-title{color:var(--text);font-size:13px;font-weight:700;line-height:1.25}.ingest-dataset-chip-code{color:var(--muted);letter-spacing:0;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:11px}.ui-grid-metric{grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:8px;display:grid}.ui-grid-metric-wide{grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:8px;display:grid}.ui-subpanel{border:1px solid var(--line);border-radius:var(--radius-md);padding:var(--subpanel-padding);background:#f6f0e6;margin-top:12px}.ui-subpanel-header{flex-wrap:wrap;justify-content:space-between;gap:8px;display:flex}.ui-subpanel-title{font-weight:var(--subpanel-title-weight);letter-spacing:var(--subpanel-title-tracking);text-transform:var(--subpanel-title-transform);font-size:12px}summary.ui-subpanel-title{cursor:pointer;list-style:none}summary.ui-subpanel-title::-webkit-details-marker{display:none}.ui-subpanel-title-inline{color:var(--muted);margin-left:8px;font-weight:500}.ui-count-text{color:var(--muted);font-size:12px}.ui-mono{font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.ui-weight-700{font-weight:700}.ui-text-danger{color:var(--danger)}.ui-text-ok{color:#065f46}.ui-value-warn{color:#b45309;font-weight:700}.ui-sev{text-align:center;letter-spacing:.3px;border:1px solid var(--line-strong);border-radius:999px;min-width:56px;padding:2px 8px;font-size:11px;font-weight:700;display:inline-block}.ui-sev-high{color:var(--danger);background:#fef2f2;border-color:#ef4444}.ui-sev-warning{color:#8a4b08;background:#fff7ed;border-color:#fb923c}.ui-sev-info{color:#4f4438;background:var(--surface-2)}.ui-link-summary{cursor:pointer;color:#4f4438}.ui-link-inline{color:var(--primary);font-size:13px;font-weight:700;text-decoration:none}.ui-link-inline:hover{text-decoration:underline}.ui-pre-json{white-space:pre-wrap;margin-top:6px}.ui-log-pre{background:var(--log-bg);color:var(--log-text);border-radius:var(--radius-md);border:1px solid var(--log-border);white-space:pre-wrap;height:320px;margin-top:0;padding:10px;font-size:12px;line-height:1.35;overflow:hidden auto}.ui-log-pre-alt{background:var(--log-bg);color:var(--log-text);border-radius:var(--radius-md);white-space:pre-wrap;margin-top:10px;padding:10px;font-size:12px}.ui-log-frame{border:1px solid var(--log-border);border-radius:var(--radius-md)}.ui-card-shell{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-lg);padding:var(--panel-padding);box-shadow:var(--card-shadow);margin-top:20px}.ui-summary-box{border-radius:var(--radius-md);padding:var(--subpanel-padding);color:#1e293b;background:#f2ece2;border:1px solid #d8ccbc;margin-bottom:12px;font-size:13px}.ui-compare-wrap{margin-bottom:12px}.ui-grid-browser{grid-template-columns:2fr 1fr 1fr 1fr 1fr;gap:10px;display:grid}.ui-overview-box{border-radius:var(--radius-md);padding:var(--subpanel-padding);background:#f2ece2;border:1px solid #d8cbbb;margin-top:10px}.ui-overview-title{color:#4d4135;margin-bottom:8px;font-size:13px;font-weight:600}.ui-overview-grid{grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:8px;display:grid}.ui-overview-item{border-radius:var(--radius-sm);background:var(--surface-elev);border:1px solid #d8cbbb;padding:8px}.ui-overview-item-label{color:#72695f;font-size:12px}.ui-overview-item-value{font-size:20px;font-weight:800}.ui-overview-item-value-compact{color:#4d4135;overflow-wrap:anywhere;word-break:break-word;font-size:13px;font-weight:600;line-height:1.35}.ui-history-box{border-radius:var(--radius-md);padding:var(--subpanel-padding);background:#f2ece2;border:1px solid #d8ccbc;margin-top:10px}.ui-history-header{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;display:flex}.ui-history-title{color:#4f4337;font-size:13px;font-weight:600}.ui-history-note{color:#7a7064;font-size:12px}.ui-check-chip{border:1px solid var(--line);background:#f8f3eb;border-radius:999px;padding:4px 10px;font-size:12px}.ui-card-header-row{justify-content:space-between;align-items:center;gap:10px;display:flex}.ui-card-body{padding:14px}.ui-log-pre-green{color:#e9f3ea;border-radius:var(--radius-md);white-space:pre-wrap;background:#27372c;border:1px solid #3f5d49;margin-top:10px;padding:10px;font-size:12px;overflow:auto}.ui-grid-two{grid-template-columns:1fr 1fr;gap:8px;margin-top:8px;display:grid}.ui-subhead-buy,.ui-subhead-sell{border:1px solid var(--line);border-radius:var(--radius-sm) var(--radius-sm) 0 0;padding:6px 8px;font-size:12px;font-weight:700}.ui-subhead-buy{background:#e9efe8}.ui-subhead-sell{background:#f8e9e6}.ui-table-shell-flat{border-top:none;border-radius:0 0 8px 8px;margin-top:0}.ui-chart-list{grid-template-columns:1fr;gap:8px;margin-top:8px;display:grid}.ui-chart-card{border:1px solid var(--line);border-radius:var(--radius-md);padding:var(--subpanel-padding);background:#fbf8f2}.ui-chart-title{font-size:12px;font-weight:700}.ui-chart-svg{border-radius:6px;margin-top:6px}.ui-chart-bg-blue{background:#f2ece2}.ui-chart-bg-red{background:#f6ebe8}.ui-chart-bg-green{background:#e9efe8}.ui-warning-box{border:1px solid var(--line);border-radius:var(--radius-md);margin-top:8px;padding:8px}.ui-warning-title{font-size:12px;font-weight:700}.ui-warning-box-ok{background:#eaf1ea}.ui-warning-box-danger{background:#f8e9e6}.ui-warning-title-ok{color:var(--ok)}.ui-warning-title-danger{color:var(--danger)}.ui-warning-list{color:var(--danger);margin:6px 0 0 18px;padding:0;font-size:12px}.ui-white-box{border:1px solid var(--line);border-radius:var(--radius-md);background:var(--surface-elev);margin-top:8px;padding:8px}.ui-status-box{border:1px solid var(--line);border-radius:var(--radius-md);color:#2f3e57;margin-bottom:10px;padding:10px 12px;font-size:12px}.ui-status-running{background:#f1ece3}.ui-status-completed{background:#eaf1ea}.ui-status-error{background:#f8e9e6}.ui-status-limited{background:#f7efdf}.ui-progress-track{border:1px solid var(--line);background:#ece4d7;border-radius:999px;width:100%;height:10px;overflow:hidden}.ui-progress-fill{background:linear-gradient(90deg,#4a3e32 0%,#6b5a47 100%);height:100%;transition:width .24s}.ui-stack-10{gap:10px;margin-top:10px;display:grid}.ui-mr-6{margin-right:6px}.ui-valign-top{vertical-align:top}.ui-self-center{align-self:center}.ui-mt-4{margin-top:4px}.ui-mt-6{margin-top:6px}.ui-mt-8{margin-top:8px}.ui-mt-10{margin-top:10px}.ui-mt-12{margin-top:12px}.ui-mb-0{margin-bottom:0}.ui-mb-6{margin-bottom:6px}.ui-mb-10{margin-bottom:10px}.ui-mb-12{margin-bottom:12px}.ui-mb-16{margin-bottom:16px}.ui-mb-8{margin-bottom:8px}.ui-prewrap-anywhere{white-space:pre-wrap;overflow-wrap:anywhere}.ui-break-anywhere{overflow-wrap:anywhere}.ui-inline-input-wide{min-width:260px}.ui-overview-grid-tight{grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:8px;margin-top:8px;display:grid}.ui-value-22{font-size:22px}.ui-value-ok{color:var(--ok)}.ui-value-danger{color:var(--danger)}.ui-value-muted{color:var(--muted)}.ui-ml-6{margin-left:6px}.ui-ml-8{margin-left:8px}.ui-ml-10{margin-left:10px}.ui-text-status-ok{color:var(--ok);font-weight:700}.ui-text-status-danger{color:var(--danger);font-weight:700}.ui-text-status-muted{color:var(--muted);font-weight:700}.ui-font-14{font-size:14px}.ui-font-18{font-size:18px}.ui-block{display:block}.ui-grid-metric-mt8,.ui-grid-metric-wide-mt8{margin-top:8px}.ui-subpanel-title-mt10{margin-top:10px}.ui-subpanel-title-mt12{margin-top:12px}.ui-subpanel-title-mb8{margin-bottom:8px}.ui-table-shell-mt6{margin-top:6px}.ui-table-shell-mt8{margin-top:8px}.ui-table-shell-mt12{margin-top:12px}.ui-table-shell-radius6{border-radius:6px}.ui-table-shell-border-soft{border-color:#e2e8f0}.ui-table-shell-border-light{border-color:#e5e7eb}.ui-th-w-100{width:100px}.ui-th-w-170{width:170px}.ui-th-w-180{width:180px}.ui-th-w-240{width:240px}.ui-td-maxw-260{max-width:260px}.ui-td-w-80{width:80px}.ui-td-maxw-380{max-width:380px}.ui-chip-active{background:#e8f3ff}.ui-chip-inactive{background:#fff}.ui-section-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-lg);padding:var(--panel-padding);box-shadow:var(--card-shadow);margin-top:20px}.ui-sub-card{border:1px solid var(--line);border-radius:var(--radius-md);padding:var(--subpanel-padding);background:var(--surface-elev)}.ui-metric-label{color:var(--muted);letter-spacing:.3px;text-transform:uppercase;font-size:11px;font-weight:700}.ui-metric-value{font-size:26px;font-weight:800}.ui-step-pill{border:1px solid var(--line);background:var(--surface-elev);border-radius:999px;padding:6px 12px;font-size:12px;font-weight:700}.ui-inline-error{color:var(--danger);white-space:pre-wrap;margin-top:10px;font-size:13px}.ui-technical-details{border:1px solid var(--line);border-radius:var(--radius-md);background:var(--surface-elev);margin-top:10px}.ui-technical-summary{cursor:pointer;color:var(--muted);-webkit-user-select:none;user-select:none;padding:10px 12px;font-size:12px;font-weight:700;list-style:none}.ui-technical-summary::-webkit-details-marker{display:none}.ui-technical-body{border-top:1px solid var(--line);padding:10px 12px 12px}.ui-action-bar{flex-wrap:wrap;gap:10px;display:flex}.ui-action-gap-10{gap:10px}.ui-error-card{background:#fff5f5;border-color:#f8b4b4}.ui-error-card-head{background:#fff1f1;border-bottom-color:#f8b4b4}.ui-error-card-body{padding:14px;font-size:13px}.ui-table-shell{border:1px solid var(--line);border-radius:var(--radius-sm);margin-top:8px;overflow:auto}.ui-table-compact{border-collapse:collapse;width:100%;font-size:13px}.ui-table-head-row{text-align:left;background:#f1ebe0}.ui-table-th,.ui-table-td{padding:8px 10px}.ui-table-row{border-top:1px solid #e6ddcf}html[data-theme=karimoku-case] body{letter-spacing:.01em;line-height:1.6}html[data-theme=karimoku-case] .side-nav{background:var(--bg);border-right-color:#b8aa95;width:216px;padding:26px 14px}html[data-theme=karimoku-case] .side-nav-brand{border-bottom:none;padding:0 0 14px}html[data-theme=karimoku-case] .side-nav-title{letter-spacing:1.3px;text-transform:uppercase;font-family:Avenir Next,Avenir,SF Pro Text,sans-serif;font-size:13px;font-weight:650}html[data-theme=karimoku-case] .side-nav-subtitle{letter-spacing:.8px;text-transform:uppercase;margin-top:6px;font-size:10px}html[data-theme=karimoku-case] .side-nav-links{gap:2px;margin-top:14px}html[data-theme=karimoku-case] .side-nav-link{letter-spacing:0;text-transform:none;border:none;border-bottom:1px solid #0000;border-radius:0;padding:12px 2px;font-size:13px}html[data-theme=karimoku-case] .side-nav-link.is-active{box-shadow:none;border-color:var(--primary);background:0 0}html[data-theme=karimoku-case] .shell{max-width:1380px;padding:42px 52px 56px}html[data-theme=karimoku-case] .hero{box-shadow:none;background:0 0;border:none;padding:4px 0 26px}html[data-theme=karimoku-case] .hero h1{letter-spacing:.8px;text-transform:uppercase;font-family:Avenir Next,Avenir,SF Pro Text,sans-serif;font-size:46px;font-weight:560;line-height:1.06}html[data-theme=karimoku-case] .ui-card,html[data-theme=karimoku-case] .ui-card-shell,html[data-theme=karimoku-case] .ui-section-card,html[data-theme=karimoku-case] .ui-sub-card,html[data-theme=karimoku-case] .ui-subpanel{box-shadow:none;background:0 0;border-color:#c8b9a3;border-radius:0}html[data-theme=karimoku-case] .ui-heading-lg{letter-spacing:.65px;text-transform:uppercase;font-family:Avenir Next,Avenir,SF Pro Text,sans-serif;font-size:20px;font-weight:650}html[data-theme=karimoku-case] .ui-table-th{letter-spacing:.7px;text-transform:uppercase;font-size:10px}html[data-theme=karimoku-case] .ui-table-head-row{background:0 0}html[data-theme=karimoku-case] .ui-table-row{border-top-color:#d6cab8}html[data-theme=karimoku-case] .side-nav-link{border-radius:var(--radius-sm);letter-spacing:0;text-transform:none;border:1px solid #0000;padding:12px 10px;font-size:16px;font-weight:700}html[data-theme=karimoku-case] .side-nav-link:hover{background:var(--nav-hover-bg);border-color:var(--nav-hover-border)}html[data-theme=karimoku-case] .side-nav-link.is-active{box-shadow:inset 2px 0 0 var(--primary);background:var(--nav-active-bg);border-color:var(--nav-active-border)}html[data-theme=karimoku-case] .shell{max-width:none;margin:0;padding:28px 32px 44px}html[data-theme=karimoku-case] .hero{border:1px solid var(--line);background:var(--surface-elev);box-shadow:var(--card-shadow);padding:22px 24px}html[data-theme=karimoku-case] .hero h1{font-family:var(--font-display);font-size:var(--hero-title-size);font-weight:var(--hero-title-weight);letter-spacing:0;text-transform:none;line-height:1.2}html[data-theme=karimoku-case] .hero p{max-width:none;font-size:13px}html[data-theme=karimoku-case] .ui-card,html[data-theme=karimoku-case] .ui-card-shell,html[data-theme=karimoku-case] .ui-section-card,html[data-theme=karimoku-case] .ui-sub-card,html[data-theme=karimoku-case] .ui-subpanel{border-radius:var(--radius-lg);box-shadow:var(--card-shadow);background:var(--surface);border-color:var(--line)}html[data-theme=karimoku-case] .ui-heading-lg{font-family:var(--font-display);font-size:var(--section-title-size);font-weight:var(--section-title-weight);letter-spacing:var(--section-title-tracking);text-transform:var(--section-title-transform)}html[data-theme=karimoku-case] .ui-subpanel-title{letter-spacing:var(--subpanel-title-tracking);text-transform:var(--subpanel-title-transform);font-size:12px}html[data-theme=karimoku-case] .ui-table-th{font-size:var(--table-head-size);letter-spacing:.2px;text-transform:none}html[data-theme=karimoku-case] .ui-action-bar button{text-transform:none;letter-spacing:0;border-radius:var(--radius-sm)!important;font-size:14px!important}@media (max-width:760px){.app-layout{display:block}.side-nav{border-right:none;border-bottom:1px solid var(--line);width:100%;height:auto;position:static}.side-nav-links{grid-template-columns:repeat(2,minmax(0,1fr))}.side-nav-link{text-align:center;font-size:14px}.shell{padding:18px 14px 32px}.hero h1{font-size:31px}.entry-grid{grid-template-columns:1fr}.ingest-mock-stepper{grid-template-columns:1fr;gap:8px}.ingest-mock-stepper:before{display:none}.ingest-mock-step,.ingest-mock-step:nth-child(2),.ingest-mock-step:nth-child(3){background:0 0;justify-content:flex-start;justify-self:start;padding-left:0;padding-right:0}.ingest-mock-stats,.ingest-mock-form-grid,.optimizer-mock-form-grid{grid-template-columns:1fr}.optimizer-mock-stars-inline{border-left:none;flex-wrap:wrap;width:100%;margin-left:0;padding-left:0}.optimizer-mock-factor-grid{grid-template-columns:1fr}.optimizer-mock-factor-item.optimizer-mock-factor-wide{grid-column:auto}}
