:root{--ink: #10233f;--ink-soft: #3b4d68;--sea: #1f6f8b;--sea-dark: #16586e;--sand: #f3efe6;--paper: #fbfaf7;--line: #d9d2c4;--copper: #c4783a;--danger: #b42318;--ok: #1f7a4d;--shadow: 0 10px 30px rgba(16, 35, 63, .08);--radius: 14px;--header-h: 56px;--footer-h: 36px;--sidebar-w: 300px;--sidebar-collapsed: 52px}*{box-sizing:border-box}html,body{margin:0;height:100%;overflow:hidden;background:var(--sand);color:var(--ink);font-family:IBM Plex Sans,system-ui,sans-serif}button,input{font:inherit}.app{height:100vh;display:flex;flex-direction:column;min-height:0}.site-header{flex:0 0 var(--header-h);min-height:var(--header-h);display:flex;align-items:center;justify-content:space-between;padding:0 1rem;background:var(--ink);color:#f7f4ee}.brand{display:flex;align-items:center;gap:.75rem}.logo{width:40px;height:40px;border-radius:10px}.brand-text{display:flex;flex-direction:column;line-height:1.15}.brand-name{font-family:Fraunces,Georgia,serif;font-weight:700;font-size:1.05rem}.brand-product{font-size:.78rem;letter-spacing:.04em;text-transform:uppercase;color:#c9d6e4}.menu{display:flex;gap:.35rem}.menu-link{background:transparent;border:0;color:#d5deea;padding:.45rem .8rem;border-radius:999px;cursor:pointer}.menu-link.is-active,.menu-link:hover{background:#ffffff1a;color:#fff}.workspace{flex:1;min-height:0;display:flex;gap:.75rem;padding:.75rem}.info-panel{flex:0 0 var(--sidebar-w);width:var(--sidebar-w);margin:0;background:var(--paper);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);overflow:hidden;display:flex;flex-direction:column;min-height:0;transition:flex-basis .2s ease,width .2s ease}.info-panel.is-collapsed{flex-basis:var(--sidebar-collapsed);width:var(--sidebar-collapsed)}.info-panel.is-collapsed .info-panel__body,.info-panel.is-collapsed .info-panel__summary{display:none}.info-panel.is-collapsed .chevron{transform:rotate(180deg)}.info-panel.is-collapsed #toggle-info-label{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}.info-panel__bar{display:flex;align-items:flex-start;justify-content:space-between;gap:.6rem;padding:.8rem .85rem;border-bottom:1px solid var(--line)}.info-panel.is-collapsed .info-panel__bar{flex:1;flex-direction:column;align-items:center;justify-content:flex-start;gap:.8rem;padding:.65rem .3rem;border-bottom:0}.info-panel.is-collapsed .info-panel__titles{writing-mode:vertical-rl;transform:rotate(180deg);margin-top:.4rem}.info-panel.is-collapsed .info-panel__bar h1{font-size:.95rem}.info-panel__bar h1{margin:0;font-size:1.05rem;font-family:Fraunces,Georgia,serif}.info-panel__summary{margin:.15rem 0 0;color:var(--ink-soft);font-size:.86rem}.collapse-btn,.add-rate-btn,.download-btn,.upload-btn,.file-btn,.remove-btn,.pin-btn{border-radius:10px;cursor:pointer}.collapse-btn{display:inline-flex;align-items:center;gap:.35rem;border:1px solid var(--line);background:#fff;color:var(--ink);padding:.35rem .55rem;flex-shrink:0}.info-panel.is-collapsed .collapse-btn{padding:.4rem;width:32px;justify-content:center}.chevron{width:16px;height:16px;transition:transform .15s ease}.info-panel__body{padding:.85rem;display:grid;gap:.85rem;align-content:start;overflow:auto;flex:1;min-height:0}.file-row,.file-row--primary{display:grid;grid-template-columns:1fr;gap:.45rem;align-items:stretch}.field-label{font-weight:600;font-size:.92rem}.file-picker{display:flex;align-items:center;flex-wrap:wrap;gap:.5rem;min-width:0}.label-field{display:grid;gap:.3rem;min-width:0}.file-picker input[type=file]{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}.file-btn,.add-rate-btn,.download-btn,.upload-btn{border:0;background:var(--sea);color:#fff;padding:.5rem .9rem;font-weight:600}.file-btn:hover,.add-rate-btn:hover,.download-btn:hover,.upload-btn:hover{background:var(--sea-dark)}.upload-btn{background:var(--ink);display:inline-flex;align-items:center}.upload-btn:hover{background:#1b3558}.toolbar-actions{display:flex;align-items:center;gap:.5rem}.toolbar-actions input[type=file]{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}.field-label-row{display:flex;align-items:center;gap:.5rem}.field-label-row .pin-btn{margin-left:auto}.pin-btn{border:1px solid var(--line);background:#fff;color:var(--ink-soft);padding:.28rem .6rem;font-size:.78rem;font-weight:600}.pin-btn:hover:not(:disabled){border-color:var(--copper);color:var(--ink)}.pin-btn.is-pinned{background:var(--copper);border-color:var(--copper);color:#fff}.pin-btn:disabled{opacity:.45;cursor:not-allowed}.color-input{width:32px;height:32px;padding:0;border:1px solid var(--line);border-radius:8px;background:#fff;cursor:pointer;flex-shrink:0}.color-input::-webkit-color-swatch-wrapper{padding:3px}.color-input::-webkit-color-swatch{border:0;border-radius:5px}.color-input::-moz-color-swatch{border:0;border-radius:5px}.download-btn:disabled{opacity:.45;cursor:not-allowed}.file-name{color:var(--ink-soft);font-size:.88rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.label-field input[type=text]{width:100%;border:1px solid var(--line);border-radius:10px;padding:.48rem .7rem;background:#fff}.rate-list{display:grid;gap:.7rem}.rate-list .file-row+.file-row{padding-top:.75rem;border-top:1px dashed var(--line)}.remove-btn{border:1px solid var(--line);background:#fff;color:var(--danger);padding:.45rem .7rem;justify-self:start}.add-rate-btn{justify-self:stretch;width:100%;background:var(--ink)}.add-rate-btn:hover{background:#1b3558}.body-panel{flex:1;min-width:0;min-height:0;margin:0;background:var(--paper);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);display:flex;flex-direction:column;overflow:hidden}.tabs{display:flex;gap:.2rem;padding:.45rem .85rem 0;border-bottom:1px solid var(--line);flex-shrink:0}.tab{border:0;background:transparent;color:var(--ink-soft);padding:.7rem 1rem;cursor:pointer;border-bottom:3px solid transparent;font-weight:600}.tab.is-active{color:var(--ink);border-bottom-color:var(--copper)}.tab-panel{display:none;flex:1;padding:.65rem .85rem .75rem;flex-direction:column;min-height:0;overflow:hidden}.tab-panel.is-active{display:flex}.panel-toolbar{display:flex;justify-content:space-between;align-items:center;gap:1rem;margin-bottom:.55rem;flex-shrink:0}.hint{margin:0;color:var(--ink-soft);font-size:.88rem}.toggle{display:inline-flex;align-items:center;gap:.45rem;font-size:.88rem;white-space:nowrap}.chart-card,.table-card{position:relative;flex:1;min-height:0;background:#fff;border:1px solid var(--line);border-radius:12px;overflow:hidden}.chart-card{padding:.6rem .8rem .4rem}.chart-card canvas{display:block;width:100%!important;height:100%!important}.table-wrap{height:100%;overflow:auto}.empty-state{position:absolute;top:0;right:0;bottom:0;left:0;display:grid;place-content:center;gap:.25rem;text-align:center;color:var(--ink-soft);pointer-events:none}.empty-state[hidden],.chart-card.has-data .empty-state{display:none}table.data-table{width:100%;border-collapse:collapse;font-size:.86rem}.data-table th,.data-table td{padding:.5rem .7rem;border-bottom:1px solid #eee7d8;text-align:right;white-space:nowrap}.data-table th{position:sticky;top:0;background:#f7f1e6;font-weight:600;text-align:right}.data-table th:first-child,.data-table td:first-child{text-align:left}.data-table tbody tr:nth-child(2n){background:#fbf8f2}.data-table .neg{color:var(--danger)}.data-table .pos{color:var(--ok)}.data-table td.editable{padding:.2rem .4rem}.cell-edit{display:inline-flex;align-items:center;gap:.15rem;justify-content:flex-end;width:100%}.cell-prefix{color:inherit;font-weight:500}.cell-input{width:5.6rem;border:1px solid transparent;border-radius:6px;background:transparent;text-align:right;padding:.25rem .35rem;color:inherit}.cell-input:hover,.cell-input:focus{border-color:var(--line);background:#fff;outline:none}.site-footer{flex:0 0 var(--footer-h);min-height:var(--footer-h);display:flex;align-items:center;justify-content:center;color:#d7deea;background:var(--ink);font-size:.82rem}.site-footer p{margin:0}@media(max-width:780px){.panel-toolbar{flex-direction:column;align-items:flex-start}.site-header{gap:.6rem}.info-panel:not(.is-collapsed){flex-basis:min(100%,280px);width:min(100%,280px)}}
