@import url("https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600&family=JetBrains+Mono:wght@400;500;600&display=swap");:root{--bg:#f5f3ee;--bg-dark:#1a1d24;--surface:#fff;--surface-alt:#ece9e1;--surface-dark:#262a33;--border:rgba(26,29,36,.1);--border-strong:rgba(26,29,36,.2);--border-dark:rgba(26,29,36,.35);--text:#1a1d24;--text-secondary:#52565e;--text-tertiary:#8a8e96;--text-on-dark:#f5f3ee;--text-on-dark-muted:#a8acb4;--accent:#1d9e75;--accent-dark:#0f6e56;--accent-light:#5dcaa5;--accent-bg:#e1f5ee;--accent-text:#085041;--success:#1d9e75;--success-bg:#e1f5ee;--warning:#ba7517;--warning-bg:#faeeda;--warning-text:#854f0b;--danger:#d85a30;--danger-bg:#faece7;--danger-text:#993c1d;--info:#2e4b6b;--info-bg:#e2e9f0;--radius-sm:4px;--radius-md:6px;--radius-lg:8px}*{box-sizing:border-box;margin:0;padding:0}body,html{font-family:Inter,sans-serif;background:var(--bg);color:var(--text);min-height:100vh;font-size:14px;line-height:1.5;-webkit-font-smoothing:antialiased}a{color:inherit;text-decoration:none}.app{max-width:1140px;margin:0 auto;padding:0}.hopper-header{background:var(--bg-dark);padding:1.5rem 2rem;justify-content:space-between;border-bottom:1px solid var(--border-dark)}.hopper-header,.hopper-logo{color:var(--text-on-dark);display:flex;align-items:center}.hopper-logo{gap:14px;font-family:JetBrains Mono,monospace;font-size:18px;font-weight:500;letter-spacing:-.3px}.hopper-logo-mark{width:28px;height:28px;position:relative;flex-shrink:0}.hopper-logo-mark:before{content:"";position:absolute;left:4px;right:4px;top:50%;height:2px;background:var(--accent);transform:translateY(-50%);border-radius:1px}.hopper-logo-mark:after{content:"";position:absolute;right:2px;top:50%;width:8px;height:8px;border-right:2px solid var(--accent);border-top:2px solid var(--accent);transform:translateY(-50%) rotate(45deg)}.hopper-logo-text{line-height:1}.hopper-logo-slash{margin:0 4px}.hopper-logo-slash,.hopper-logo-sub{color:var(--text-on-dark-muted);font-weight:400}.hopper-logo-sub{font-size:13px}.hopper-header-right{display:flex;align-items:center;gap:10px;font-size:11px;color:var(--text-on-dark-muted);flex-wrap:wrap;font-family:JetBrains Mono,monospace;text-transform:uppercase;letter-spacing:.06em}.hopper-header-stat{padding:5px 12px;background:hsla(0,0%,100%,.06);border:1px solid var(--border-dark);border-radius:var(--radius-sm)}.hopper-header-stat strong{color:var(--text-on-dark);font-weight:500;font-family:JetBrains Mono,monospace;letter-spacing:normal;text-transform:none}.hopper-header-btn{padding:6px 14px;background:transparent;border:1px solid var(--border-dark);border-radius:var(--radius-sm);color:var(--text-on-dark-muted);font-family:JetBrains Mono,monospace;font-size:11px;text-transform:uppercase;letter-spacing:.06em;cursor:pointer;transition:all .15s}.hopper-header-btn:hover{background:hsla(0,0%,100%,.08);color:var(--text-on-dark)}.hopper-header-user{padding:5px 12px;font-size:11px;color:var(--accent-light);border:1px solid rgba(93,202,165,.3);border-radius:var(--radius-sm);background:rgba(29,158,117,.1)}.tabs-wrap{background:var(--surface);border-bottom:1px solid var(--border);padding:0 2rem}.tabs{display:flex;gap:0;overflow-x:auto;max-width:1140px;margin:0 auto}.tab{font-family:Inter,sans-serif;font-size:13px;font-weight:500;padding:14px 22px;background:transparent;color:var(--text-tertiary);cursor:pointer;border:none;border-bottom:2px solid transparent;margin-bottom:-1px;transition:all .15s;white-space:nowrap;letter-spacing:-.1px}.tab:hover{color:var(--text-secondary)}.tab.active{color:var(--text);border-bottom-color:var(--accent)}.tab .tab-count{font-family:JetBrains Mono,monospace;font-size:10px;background:var(--surface-alt);color:var(--text-secondary);padding:2px 6px;border-radius:2px;margin-left:6px}.tab.active .tab-count{background:var(--accent-bg);color:var(--accent-text)}.content{padding:2rem;max-width:1140px;margin:0 auto}.section-label{font-family:JetBrains Mono,monospace;font-size:10px;font-weight:500;letter-spacing:.12em;text-transform:uppercase;color:var(--text-tertiary);margin-bottom:1rem;display:flex;align-items:center;gap:10px}.section-label:after{content:"";flex:1 1;height:1px;background:var(--border)}.section-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:1rem}.section-header .section-label{margin-bottom:0}.page-title{font-size:22px;font-weight:600;letter-spacing:-.5px;margin-bottom:6px}.page-sub{font-size:14px;color:var(--text-secondary);margin-bottom:2rem}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);padding:1.5rem;margin-bottom:1rem}.card-muted{background:var(--surface-alt);border:none}.card-accent{border-left:3px solid var(--accent)}.card-warning{border-left:3px solid var(--warning)}.card-danger{border-left:3px solid var(--danger)}.card-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:1rem;gap:12px}.card-title{font-size:15px;font-weight:600;letter-spacing:-.2px}.stats{display:grid;grid-template-columns:repeat(4,1fr);grid-gap:12px;gap:12px;margin-bottom:1.5rem}.stat{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);padding:16px 18px;position:relative;overflow:hidden}.stat:before{content:"";position:absolute;top:0;left:0;width:2px;height:100%;background:var(--bg-dark)}.stat.stat-accent:before{background:var(--accent)}.stat.stat-warning:before{background:var(--warning)}.stat.stat-danger:before{background:var(--danger)}.stat-label{font-size:10px;color:var(--text-tertiary);margin-bottom:8px;font-weight:500;text-transform:uppercase;letter-spacing:.08em}.stat-label,.stat-value{font-family:JetBrains Mono,monospace}.stat-value{font-size:24px;font-weight:600;letter-spacing:-.5px}.stat-value.accent{color:var(--accent)}.stat-value.warning{color:var(--warning)}.stat-value.danger{color:var(--danger)}.stat-sub{font-size:11px;color:var(--text-tertiary);margin-top:4px}.grid-2{grid-template-columns:1fr 1fr;grid-gap:14px}.grid-2,.grid-3{display:grid;gap:14px}.grid-3{grid-template-columns:1fr 1fr 1fr;grid-gap:14px}.grid-4{display:grid;grid-template-columns:1fr 1fr 1fr 1fr;grid-gap:14px;gap:14px}.full{grid-column:1/-1}.field{display:flex;flex-direction:column;gap:6px}.field label{font-family:JetBrains Mono,monospace;font-size:10px;font-weight:500;color:var(--text-tertiary);text-transform:uppercase;letter-spacing:.08em}.field input,.field select,.field textarea{font-family:Inter,sans-serif;font-size:13px;padding:10px 12px;border:1px solid var(--border-strong);border-radius:var(--radius-md);background:var(--surface);color:var(--text);width:100%;transition:border-color .15s,box-shadow .15s}.field input:focus,.field select:focus,.field textarea:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 2px rgba(29,158,117,.12)}.field textarea{min-height:72px;resize:vertical}.field input[type=number]{font-family:JetBrains Mono,monospace}.btn{font-family:Inter,sans-serif;font-size:13px;font-weight:500;padding:10px 20px;border-radius:var(--radius-md);cursor:pointer;transition:all .12s;border:1px solid transparent;text-decoration:none;display:inline-flex;align-items:center;gap:6px;letter-spacing:-.1px}.btn-primary{background:var(--bg-dark);color:var(--text-on-dark);border-color:var(--bg-dark)}.btn-primary:hover{background:#000;border-color:#000}.btn-primary:disabled{opacity:.45;cursor:not-allowed}.btn-accent{background:var(--accent);color:#fff;border-color:var(--accent)}.btn-accent:hover{background:var(--accent-dark);border-color:var(--accent-dark)}.btn-outline{background:transparent;border-color:var(--border-strong);color:var(--text-secondary)}.btn-outline:hover{background:var(--surface-alt);color:var(--text);border-color:var(--text-secondary)}.btn-ghost{background:transparent;border:1px dashed var(--border-strong);color:var(--text-secondary);font-size:12px;padding:8px 14px}.btn-ghost:hover{background:var(--surface-alt);color:var(--text);border-color:var(--text-secondary)}.btn-danger{background:transparent;border-color:transparent;color:var(--danger);font-size:12px;padding:6px 12px}.btn-danger:hover{background:var(--danger-bg)}.btn-sm{padding:7px 14px;font-size:12px}.actions{display:flex;gap:10px;align-items:center;margin-top:1.25rem;flex-wrap:wrap}.table-wrap{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);overflow:hidden;margin-bottom:1rem}.table{width:100%;border-collapse:collapse;font-size:13px}.table th{font-family:JetBrains Mono,monospace;font-size:10px;font-weight:500;letter-spacing:.1em;text-transform:uppercase;color:var(--text-tertiary);text-align:left;padding:12px 16px;background:var(--surface-alt)}.table td,.table th{border-bottom:1px solid var(--border)}.table td{padding:14px 16px;vertical-align:middle}.table tbody tr:last-child td{border-bottom:none}.table tbody tr:hover{background:var(--surface-alt)}.table tbody tr.clickable{cursor:pointer}.badge{display:inline-block;font-family:JetBrains Mono,monospace;font-size:10px;font-weight:500;padding:3px 10px;border-radius:2px;text-transform:uppercase;letter-spacing:.08em}.badge-draft{background:var(--surface-alt);color:var(--text-secondary)}.badge-active{background:var(--accent-bg);color:var(--accent-text)}.badge-production{background:var(--warning-bg);color:var(--warning-text)}.badge-transit{background:var(--info-bg);color:var(--info)}.badge-delivered{background:var(--accent-bg);color:var(--accent-dark)}.badge-invoiced{background:var(--info-bg);color:var(--info)}.badge-paid{background:var(--accent);color:#fff}.badge-overdue{background:var(--danger-bg);color:var(--danger-text)}.badge-closed{background:var(--surface-alt);color:var(--text-tertiary)}.price{font-family:JetBrains Mono,monospace;font-weight:500}.order-bar{background:var(--bg-dark);color:var(--text-on-dark);border-radius:var(--radius-lg);padding:16px 22px;margin-bottom:1.5rem;display:flex;align-items:center;gap:32px;flex-wrap:wrap}.order-detail{display:flex;flex-direction:column;gap:2px}.order-detail-label{font-family:JetBrains Mono,monospace;font-size:9px;color:var(--text-on-dark-muted);text-transform:uppercase;letter-spacing:.1em}.order-detail-value{font-size:13px;font-weight:500;color:var(--text-on-dark);font-family:JetBrains Mono,monospace}.order-detail-value.accent{color:var(--accent-light)}.pipeline{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));grid-gap:14px;gap:14px;margin-bottom:2rem}.pipeline-column{min-height:200px}.pipeline-column-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px;padding-bottom:10px;border-bottom:2px solid var(--border)}.pipeline-column-header.stage-production{border-bottom-color:var(--warning)}.pipeline-column-header.stage-transit{border-bottom-color:var(--info)}.pipeline-column-header.stage-delivered{border-bottom-color:var(--accent)}.pipeline-column-header.stage-invoiced{border-bottom-color:#6b7280}.pipeline-column-header.stage-paid{border-bottom-color:var(--accent-dark)}.pipeline-column-title{font-family:JetBrains Mono,monospace;font-size:10px;font-weight:500;text-transform:uppercase;letter-spacing:.1em;color:var(--text-secondary)}.pipeline-column-count{font-family:JetBrains Mono,monospace;font-size:11px;color:var(--text-tertiary);background:var(--surface-alt);padding:2px 8px;border-radius:2px}.pipeline-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);padding:14px;margin-bottom:10px;cursor:pointer;transition:border-color .12s,box-shadow .12s}.pipeline-card:hover{border-color:var(--border-strong);box-shadow:0 1px 4px rgba(0,0,0,.04)}.pipeline-card-customer{font-size:13px;font-weight:600;letter-spacing:-.1px;margin-bottom:4px}.pipeline-card-product{font-size:12px;color:var(--text-secondary);margin-bottom:10px;line-height:1.4}.pipeline-card-footer{display:flex;align-items:center;justify-content:space-between;gap:8px}.pipeline-card-ref{font-family:JetBrains Mono,monospace;font-size:10px;color:var(--text-tertiary)}.pipeline-card-value{font-family:JetBrains Mono,monospace;font-size:12px;font-weight:500}.pipeline-card-days{font-size:11px;color:var(--text-tertiary)}.pipeline-card-days.overdue{color:var(--danger);font-weight:500}.timeline{position:relative;padding-left:24px}.timeline:before{content:"";position:absolute;left:7px;top:0;bottom:0;width:2px;background:var(--border)}.timeline-item{position:relative;padding-bottom:1.25rem}.timeline-item:last-child{padding-bottom:0}.timeline-dot{position:absolute;left:-20px;top:4px;width:10px;height:10px;border-radius:50%;background:var(--surface-alt);border:2px solid var(--border-strong)}.timeline-dot.completed{background:var(--accent);border-color:var(--accent)}.timeline-dot.active{background:var(--warning);border-color:var(--warning)}.timeline-dot.upcoming{background:var(--surface);border-color:var(--border)}.timeline-label{font-size:13px;font-weight:500;margin-bottom:2px}.timeline-meta{font-size:12px;color:var(--text-tertiary)}.timeline-meta .date{font-family:JetBrains Mono,monospace;font-size:11px}.stage-bar{display:flex;gap:4px;margin-bottom:1.5rem}.stage-step{flex:1 1;height:4px;border-radius:2px;background:var(--border)}.stage-step.completed{background:var(--accent)}.stage-step.active{background:var(--warning)}.stage-labels{display:flex;justify-content:space-between;margin-bottom:6px}.stage-label{font-family:JetBrains Mono,monospace;font-size:9px;text-transform:uppercase;letter-spacing:.08em;color:var(--text-tertiary)}.stage-label.completed{color:var(--accent-dark)}.stage-label.active{color:var(--warning);font-weight:500}.finance-grid{display:grid;grid-template-columns:1fr 1fr;grid-gap:14px;gap:14px;margin-bottom:1.5rem}.finance-row{display:flex;justify-content:space-between;align-items:center;padding:10px 0;border-bottom:1px solid var(--border)}.finance-row:last-child{border-bottom:none}.finance-label{font-size:13px;color:var(--text-secondary)}.finance-value{font-family:JetBrains Mono,monospace;font-size:14px;font-weight:500}.finance-value.positive{color:var(--accent)}.finance-value.negative{color:var(--danger)}.finance-total{display:flex;justify-content:space-between;align-items:center;padding:12px 0;border-top:2px solid var(--bg-dark);margin-top:4px}.finance-total .finance-label{font-weight:600;color:var(--text)}.finance-total .finance-value{font-size:18px;font-weight:600}.queue-section{margin-bottom:2rem}.queue-item{display:flex;align-items:center;justify-content:space-between;padding:14px 16px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);margin-bottom:8px;cursor:pointer;transition:border-color .12s;gap:12px}.queue-item:hover{border-color:var(--border-strong)}.queue-item-left{display:flex;align-items:center;gap:14px;min-width:0}.queue-item-icon{width:32px;height:32px;border-radius:var(--radius-sm);display:flex;align-items:center;justify-content:center;font-size:14px;flex-shrink:0}.queue-item-icon.bill{background:var(--warning-bg);color:var(--warning)}.queue-item-icon.invoice{background:var(--info-bg);color:var(--info)}.queue-item-icon.payment{background:var(--accent-bg);color:var(--accent)}.queue-item-icon.overdue{background:var(--danger-bg);color:var(--danger)}.queue-item-info{min-width:0}.queue-item-title{font-size:13px;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.queue-item-sub{font-size:12px;color:var(--text-tertiary)}.queue-item-right{display:flex;align-items:center;gap:16px;flex-shrink:0}.queue-item-amount{font-size:13px;font-weight:500}.queue-item-amount,.queue-item-date{font-family:JetBrains Mono,monospace}.queue-item-date{font-size:11px;color:var(--text-tertiary)}.cashflow-week{display:grid;grid-template-columns:120px 1fr 1fr;grid-gap:16px;gap:16px;padding:14px 0;border-bottom:1px solid var(--border);align-items:start}.cashflow-week:last-child{border-bottom:none}.cashflow-week-label{font-family:JetBrains Mono,monospace;font-size:11px;color:var(--text-secondary);font-weight:500;padding-top:2px}.cashflow-in,.cashflow-out{display:flex;flex-direction:column;gap:6px}.cashflow-entry{display:flex;justify-content:space-between;align-items:center;font-size:12px;padding:6px 10px;border-radius:var(--radius-sm)}.cashflow-entry.inflow{background:var(--accent-bg);color:var(--accent-text)}.cashflow-entry.outflow{background:var(--danger-bg);color:var(--danger-text)}.cashflow-amount{font-family:JetBrains Mono,monospace;font-weight:500;font-size:12px}.directory-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);padding:1.25rem;margin-bottom:10px;cursor:pointer;transition:border-color .12s}.directory-card:hover{border-color:var(--border-strong)}.directory-card-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px}.directory-card-name{font-size:15px;font-weight:600;letter-spacing:-.2px}.directory-card-type{font-family:JetBrains Mono,monospace;font-size:10px;text-transform:uppercase;letter-spacing:.08em;color:var(--text-tertiary);background:var(--surface-alt);padding:3px 8px;border-radius:2px}.directory-card-meta{display:flex;gap:20px;font-size:12px;color:var(--text-secondary)}.directory-card-meta strong{font-family:JetBrains Mono,monospace;font-weight:500;color:var(--text)}.alert{border-radius:var(--radius-lg);padding:1rem 1.25rem;margin-bottom:1.25rem;display:flex;gap:12px;align-items:flex-start;border:1px solid var(--border)}.alert-success{background:var(--success-bg);border-color:rgba(29,158,117,.25)}.alert-warning{background:var(--warning-bg);border-color:rgba(186,117,23,.2)}.alert-danger{background:var(--danger-bg);border-color:rgba(216,90,48,.2)}.alert-info{background:var(--info-bg);border-color:rgba(46,75,107,.2)}.alert-title{font-size:13px;font-weight:600;margin-bottom:4px}.alert-sub{font-size:12px;color:var(--text-secondary);line-height:1.55}.modal-overlay{position:fixed;inset:0;background:rgba(26,29,36,.5);display:none;align-items:center;justify-content:center;z-index:100;padding:2rem}.modal-overlay.active{display:flex}.modal-backdrop{position:fixed;inset:0;background:rgba(26,29,36,.5);display:flex;align-items:center;justify-content:center;z-index:100;padding:2rem}.modal{background:var(--surface);border-radius:var(--radius-lg);max-width:720px;width:100%;max-height:90vh;overflow-y:auto;padding:1.75rem;border:1px solid var(--border)}.modal-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1.25rem;padding-bottom:1rem;border-bottom:1px solid var(--border)}.modal-title{font-size:16px;font-weight:600;letter-spacing:-.2px}.modal-close{background:none;border:none;font-size:20px;cursor:pointer;color:var(--text-tertiary);line-height:1;padding:0 4px}.modal-close:hover{color:var(--text)}.portal-page{min-height:100vh;background:var(--bg)}.portal-header{background:var(--bg-dark);color:var(--text-on-dark);padding:1.5rem 2rem;border-bottom:1px solid var(--border-dark)}.portal-header-inner{max-width:800px;margin:0 auto;display:flex;align-items:center;justify-content:space-between}.portal-header-tag{font-family:JetBrains Mono,monospace;font-size:10px;color:var(--text-on-dark-muted);text-transform:uppercase;letter-spacing:.12em}.portal-content{max-width:800px;margin:0 auto;padding:2.5rem 2rem 4rem}.portal-page-title{font-size:26px;font-weight:600;letter-spacing:-.8px;margin-bottom:10px}.portal-page-sub{font-size:14px;color:var(--text-secondary);line-height:1.6;margin-bottom:2rem;max-width:600px}.login-page{min-height:100vh;background:var(--bg-dark);display:flex;align-items:center;justify-content:center;padding:2rem}.login-card{background:var(--surface);border-radius:var(--radius-lg);padding:2.5rem;max-width:420px;width:100%}.login-logo{display:flex;align-items:center;gap:14px;margin-bottom:2rem}.login-logo-mark{width:36px;height:36px;position:relative;flex-shrink:0}.login-logo-mark:before{content:"";position:absolute;left:4px;right:6px;top:50%;height:2.5px;background:var(--accent);transform:translateY(-50%);border-radius:1px}.login-logo-mark:after{content:"";position:absolute;right:2px;top:50%;width:10px;height:10px;border-right:2.5px solid var(--accent);border-top:2.5px solid var(--accent);transform:translateY(-50%) rotate(45deg)}.login-logo-text{font-size:22px;font-weight:500;letter-spacing:-.5px}.login-logo-sub,.login-logo-text{font-family:JetBrains Mono,monospace}.login-logo-sub{font-size:11px;color:var(--text-tertiary);text-transform:uppercase;letter-spacing:.15em;margin-top:2px}.login-sub{font-size:14px;color:var(--text-secondary);margin-bottom:1.5rem;line-height:1.55}.empty-state{text-align:center;padding:3rem 1rem;color:var(--text-tertiary);font-size:13px}.empty-state strong{display:block;color:var(--text-secondary);font-size:14px;font-weight:600;margin-bottom:6px}.text-sm{font-size:12px}.text-muted{color:var(--text-tertiary)}.text-secondary{color:var(--text-secondary)}.text-mono{font-family:JetBrains Mono,monospace}.text-accent{color:var(--accent)}.text-warning{color:var(--warning)}.text-danger{color:var(--danger)}.mt-1{margin-top:.5rem}.mt-2{margin-top:1rem}.mt-3{margin-top:1.5rem}.mb-1{margin-bottom:.5rem}.mb-2{margin-bottom:1rem}.mb-3{margin-bottom:1.5rem}.flex{display:flex}.flex-between{display:flex;justify-content:space-between;align-items:center}.gap-1{gap:8px}.gap-2{gap:14px}@media (max-width:760px){.grid-2,.grid-3,.grid-4{grid-template-columns:1fr}.full{grid-column:1}.stats{grid-template-columns:1fr 1fr}.finance-grid,.pipeline{grid-template-columns:1fr}.order-bar{gap:10px}.hopper-header,.order-bar{flex-direction:column;align-items:flex-start}.hopper-header{gap:12px;padding:1.25rem 1.5rem}.content{padding:1.5rem}.tabs-wrap{padding:0 1.5rem}.cashflow-week{grid-template-columns:1fr}.portal-content{padding:2rem 1.5rem 3rem}.portal-page-title{font-size:22px}.queue-item{flex-direction:column;align-items:flex-start}.queue-item-right{width:100%;justify-content:space-between}}