@charset "UTF-8";:root{--ink-900: #061d2c;--ink-800: #0a3048;--ink-700: #123f5c;--ink-600: #1d5375;--blue-600: #176fa6;--blue-400: #5fb6d9;--green-500: #a5bf45;--green-600: #93ad34;--green-700: #7c9227;--green-050: #f3f7e4;--n-000: #ffffff;--n-025: #fafbfc;--n-050: #f7f7f7;--n-100: #f0f0f0;--n-200: #e4e7ea;--n-300: #cccccc;--n-500: #6b7279;--n-600: #666666;--n-700: #4a5058;--n-800: #333333;--warn-600: #8a5f12;--warn-050: #fdf6e7;--danger-600: #b23a26;--danger-700: #8e2c1c;--danger-050: #fdf0ed;--chrome: var(--ink-800);--surface: var(--n-000);--surface-sunken: var(--n-050);--page-bg: #eef0f2;--border: var(--n-200);--border-strong: var(--n-300);--text: var(--ink-900);--text-muted: var(--n-600);--text-faint: var(--n-500);--text-on-dark: rgba(255, 255, 255, .92);--text-on-dark-muted: rgba(255, 255, 255, .62);--font-sans: "IBM Plex Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;--font-cond: "IBM Plex Sans Condensed", "IBM Plex Sans", "Segoe UI", sans-serif;--font-mono: "IBM Plex Mono", ui-monospace, "Cascadia Mono", Consolas, monospace;--s-1: 4px;--s-2: 8px;--s-3: 12px;--s-4: 16px;--s-5: 20px;--s-6: 24px;--s-8: 32px;--s-10: 40px;--s-12: 48px;--r-sm: 3px;--r-md: 4px;--r-lg: 6px;--shadow-1: 0 1px 2px rgba(6, 29, 44, .06);--shadow-2: 0 2px 8px rgba(6, 29, 44, .08);--shadow-modal: 0 16px 48px rgba(6, 29, 44, .24);--focus-ring: 0 0 0 2px var(--n-000), 0 0 0 4px var(--blue-600);--header-h: 56px;--rail-w: 248px;--ease: cubic-bezier(.2, 0, 0, 1);--dur: .14s}*,*:before,*:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{margin:0;background:var(--page-bg);color:var(--text);font-family:var(--font-sans);font-size:14px;line-height:1.5;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body.modal-open{overflow:hidden}h1,h2,h3,h4,h5{margin:0;color:var(--ink-800);font-weight:600;line-height:1.25;letter-spacing:-.011em}h1{font-size:22px}h2{font-size:19px}h3{font-size:15px}h4{font-size:13px}p{margin:0}a{color:var(--blue-600);text-decoration:none}a:hover{text-decoration:underline}hr{border:0;border-top:1px solid var(--border);margin:var(--s-5) 0}:focus-visible{outline:none;box-shadow:var(--focus-ring);border-radius:var(--r-sm)}::selection{background:var(--green-500);color:var(--ink-900)}.mono,.num{font-family:var(--font-mono);font-variant-numeric:tabular-nums}.eyebrow{font-family:var(--font-mono);font-size:10px;font-weight:500;letter-spacing:.1em;text-transform:uppercase;color:var(--text-faint)}.btn{--btn-bg: transparent;--btn-fg: var(--ink-800);--btn-bd: var(--border-strong);display:inline-flex;align-items:center;justify-content:center;gap:var(--s-2);height:32px;padding:0 14px;border:1px solid var(--btn-bd);border-radius:var(--r-md);background:var(--btn-bg);color:var(--btn-fg);font-family:var(--font-sans);font-size:13px;font-weight:500;letter-spacing:.004em;white-space:nowrap;text-decoration:none;cursor:pointer;transition:background var(--dur) var(--ease),border-color var(--dur) var(--ease),color var(--dur) var(--ease)}.btn:hover{background:var(--n-050);text-decoration:none}.btn:disabled,.btn[disabled]{cursor:not-allowed;opacity:.45}.btn-primary,.btn-pool-pricer{--btn-bg: var(--green-500);--btn-fg: var(--ink-900);--btn-bd: var(--green-600);font-weight:600}.btn-primary:hover:not(:disabled),.btn-pool-pricer:hover:not(:disabled){background:var(--green-600);border-color:var(--green-700)}.btn-primary:disabled:hover,.btn-pool-pricer:disabled:hover{background:var(--green-500)}.btn-success,.btn-save{--btn-bg: var(--ink-800);--btn-fg: var(--text-on-dark);--btn-bd: var(--ink-800)}.btn-success:hover:not(:disabled),.btn-save:hover:not(:disabled){background:var(--ink-900);border-color:var(--ink-900);color:#fff}.btn-success:disabled:hover,.btn-save:disabled:hover{background:var(--ink-800)}.btn-outline,.btn-outline-dark{--btn-bg: var(--n-000);--btn-fg: var(--ink-800);--btn-bd: var(--border-strong)}.btn-outline:hover:not(:disabled),.btn-outline-dark:hover:not(:disabled){background:var(--n-050);border-color:var(--n-500)}.on-dark .btn-outline,.on-dark .btn-outline-dark{--btn-bg: transparent;--btn-fg: var(--text-on-dark);--btn-bd: rgba(255, 255, 255, .28)}.on-dark .btn-outline:hover:not(:disabled),.on-dark .btn-outline-dark:hover:not(:disabled){background:#ffffff1a;border-color:#ffffff80}.btn-danger{--btn-bg: var(--n-000);--btn-fg: var(--danger-700);--btn-bd: #e8c3ba}.btn-danger:hover:not(:disabled){background:var(--danger-050);border-color:var(--danger-600)}.btn-sm{height:26px;padding:0 10px;font-size:12px}.btn-lg{height:40px;padding:0 22px;font-size:14px}.btn-block{width:100%}.btn-link{padding:0;border:0;background:none;color:var(--blue-600);font-family:var(--font-sans);font-size:13px;font-weight:500;cursor:pointer}.btn-link:hover{color:var(--ink-800);text-decoration:underline}.btn-remove{display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;padding:0;border:1px solid var(--border-strong);border-radius:var(--r-md);background:var(--n-000);color:var(--n-600);font-size:16px;line-height:1;cursor:pointer}.btn-remove:hover{border-color:var(--danger-600);background:var(--danger-050);color:var(--danger-600)}label{display:flex;flex-direction:column;gap:5px;font-family:var(--font-mono);font-size:10px;font-weight:500;letter-spacing:.09em;text-transform:uppercase;color:var(--text-faint)}input[type=text],input[type=number],input[type=date],input[type=email],input[type=search],select,textarea{width:100%;height:32px;padding:0 9px;border:1px solid var(--border-strong);border-radius:var(--r-md);background:var(--n-000);color:var(--text);font-family:var(--font-sans);font-size:13px;font-weight:400;letter-spacing:normal;text-transform:none;transition:border-color var(--dur) var(--ease),box-shadow var(--dur) var(--ease)}textarea{height:auto;padding:8px 9px;resize:vertical}input[type=number],input[type=date]{font-family:var(--font-mono);font-variant-numeric:tabular-nums}input:hover:not(:disabled),select:hover:not(:disabled){border-color:var(--n-500)}input:focus,select:focus,textarea:focus{outline:none;border-color:var(--blue-600);box-shadow:0 0 0 3px #176fa624}input:disabled,select:disabled{background:var(--n-050);color:var(--text-faint);cursor:not-allowed}::placeholder{color:var(--text-faint);opacity:1}select{appearance:none;padding-right:28px;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6'%3E%3Cpath d='M1 1l4 4 4-4' fill='none' stroke='%23666666' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 10px center}input[type=file]{width:100%;padding:6px;border:1px dashed var(--border-strong);border-radius:var(--r-md);background:var(--n-025);color:var(--text-muted);font-family:var(--font-sans);font-size:12px;letter-spacing:normal;text-transform:none;cursor:pointer}input[type=file]::file-selector-button{margin-right:10px;padding:5px 12px;border:1px solid var(--border-strong);border-radius:var(--r-sm);background:var(--n-000);color:var(--ink-800);font-family:var(--font-sans);font-size:12px;font-weight:500;cursor:pointer}input[type=file]::file-selector-button:hover{background:var(--n-050);border-color:var(--n-500)}.panel,.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg);box-shadow:var(--shadow-1)}.pill{display:inline-flex;align-items:center;gap:6px;height:22px;padding:0 9px;border:1px solid var(--border-strong);border-radius:999px;background:var(--n-000);color:var(--text-muted);font-family:var(--font-mono);font-size:11px;font-weight:500;letter-spacing:.02em;white-space:nowrap}.pill.ok{background:var(--green-050);border-color:#cadb96;color:#55661a}.pill.warn{background:var(--warn-050);border-color:#e8d09a;color:var(--warn-600)}.pill.error{background:var(--danger-050);border-color:#e8c3ba;color:var(--danger-700)}.pill.info{background:#eef6fb;border-color:#b9d9ec;color:var(--blue-600)}.alert,.error-msg{display:flex;gap:var(--s-3);padding:var(--s-3) var(--s-4);border:1px solid var(--border-strong);border-left-width:3px;border-radius:var(--r-md);background:var(--n-050);font-size:13px;line-height:1.45}.alert-error,.error-msg{border-color:#e8c3ba;border-left-color:var(--danger-600);background:var(--danger-050);color:var(--danger-700)}.alert-warn{border-color:#e8d09a;border-left-color:var(--warn-600);background:var(--warn-050);color:#7a570f}.alert-info{border-color:#b9d9ec;border-left-color:var(--blue-600);background:#eef6fb;color:#10537c}.data-table{width:100%;border-collapse:collapse;font-size:13px}.data-table th{padding:7px 12px;border-bottom:1px solid var(--border-strong);background:var(--n-050);color:var(--text-muted);font-family:var(--font-cond);font-size:11px;font-weight:600;letter-spacing:.07em;text-transform:uppercase;text-align:left;white-space:nowrap}.data-table td{padding:8px 12px;border-bottom:1px solid var(--border);color:var(--text);vertical-align:middle}.data-table tbody tr:last-child td{border-bottom:0}.data-table tbody tr:hover{background:var(--n-025)}.data-table th.num,.data-table td.num{text-align:right;font-family:var(--font-mono);font-variant-numeric:tabular-nums}.readout{display:grid;grid-template-columns:repeat(auto-fill,minmax(148px,1fr));gap:1px;border:1px solid var(--border);border-radius:var(--r-md);background:var(--border);overflow:hidden}.readout-cell{display:flex;flex-direction:column;gap:3px;padding:10px 12px;background:var(--n-000)}.readout-label{font-family:var(--font-mono);font-size:10px;font-weight:500;letter-spacing:.08em;text-transform:uppercase;color:var(--text-faint)}.readout-value{font-family:var(--font-mono);font-variant-numeric:tabular-nums;font-size:15px;font-weight:500;color:var(--ink-900)}.drop-zone{display:flex;align-items:center;justify-content:center;padding:var(--s-8) var(--s-5);border:1px dashed var(--border-strong);border-radius:var(--r-md);background:var(--n-025);text-align:center;cursor:pointer;transition:border-color var(--dur) var(--ease),background var(--dur) var(--ease)}.drop-zone:hover{border-color:var(--n-500);background:var(--n-050)}.drop-zone.drag-over{border-style:solid;border-color:var(--green-600);background:var(--green-050)}.drop-zone.has-file{border-style:solid;border-color:#cadb96;background:var(--green-050)}.modal-backdrop,.save-dialog-overlay{position:fixed;inset:0;z-index:100;display:flex;align-items:center;justify-content:center;padding:var(--s-6);background:#061d2c8c;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);animation:fade-in var(--dur) var(--ease)}.modal,.save-dialog{width:100%;max-width:560px;max-height:calc(100vh - 96px);overflow-y:auto;padding:var(--s-6);border-radius:var(--r-lg);background:var(--n-000);box-shadow:var(--shadow-modal);animation:rise var(--dur) var(--ease)}.modal>h3,.save-dialog>h3{margin:0 0 var(--s-4);padding-bottom:var(--s-3);border-bottom:1px solid var(--border);font-size:16px}.modal-actions,.save-dialog-actions{display:flex;justify-content:flex-end;gap:var(--s-2);margin-top:var(--s-5);padding-top:var(--s-4);border-top:1px solid var(--border)}@keyframes fade-in{0%{opacity:0}to{opacity:1}}@keyframes rise{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}.hint{font-family:var(--font-sans);font-size:12px;font-weight:400;letter-spacing:normal;text-transform:none;color:var(--text-muted)}.optional{color:var(--text-faint);font-weight:400}.spinner{display:inline-block;width:13px;height:13px;border:2px solid currentColor;border-right-color:transparent;border-radius:50%;opacity:.7;animation:spin .62s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}@keyframes pulse-node{0%,to{box-shadow:0 0 #a5bf4599}60%{box-shadow:0 0 0 5px #a5bf4500}}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}.grid-frame{border:1px solid var(--border);border-radius:var(--r-md);background:var(--n-000);overflow:hidden}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}
