:root{--primary: #059669;--primary-hover: #047857;--primary-active: #064e3b;--secondary: #064e3b;--tertiary: #0284c7;--canvas: #f8fafc;--surface: #ffffff;--ink: #0f172a;--body: #334155;--muted: #64748b;--label: #475569;--line: #e2e8f0;--line-strong: #cbd5e1;--placeholder: #64748b;--mint: #ecfdf5;--ok: #047857;--ok-border: #6ee7b7;--warn: #d97706;--warn-bg: #fffbeb;--warn-border: #fcd34d;--danger: #dc2626;--danger-bg: #fef2f2;--danger-border: #fca5a5;--info: #0369a1;--info-bg: #f0f9ff;--shadow: 0 1px 2px rgba(15, 23, 42, .04);--radius: 8px;--radius-lg: 8px;--pine: var(--secondary);--leaf: var(--primary);--space-1: 8px;--space-2: 12px;--space-3: 16px;--space-4: 24px;--space-5: 32px;--control: 42px;color:var(--body);font-family:IBM Plex Sans,Segoe UI,sans-serif;background:var(--canvas)}*{box-sizing:border-box}*{scrollbar-width:thin;scrollbar-color:rgba(100,116,139,.28) transparent}*::-webkit-scrollbar{width:6px;height:6px}*::-webkit-scrollbar-track{background:transparent}*::-webkit-scrollbar-thumb{background-color:#64748b47;border:2px solid transparent;border-radius:99px;background-clip:padding-box}*::-webkit-scrollbar-button,*::-webkit-scrollbar-button:single-button,*::-webkit-scrollbar-corner{display:none;width:0;height:0}aside,.nav-scroll{scrollbar-width:thin;scrollbar-color:rgba(167,243,208,.32) transparent}aside::-webkit-scrollbar,.nav-scroll::-webkit-scrollbar{width:6px}aside::-webkit-scrollbar-thumb,.nav-scroll::-webkit-scrollbar-thumb{background-color:#a7f3d052;border:2px solid transparent;border-radius:99px;background-clip:padding-box}html,body{height:100%}body{margin:0;font-size:14px;line-height:20px;font-weight:400;color:var(--body);background:var(--canvas)}app-root,app-shell{display:block;height:100%;min-height:0}a{color:var(--primary-hover)}button,.button{background:var(--primary);color:#fff;border:0;border-radius:var(--radius);min-height:var(--control);padding:0 16px;font:inherit;font-weight:600;cursor:pointer;text-decoration:none;display:inline-flex;align-items:center;justify-content:center;gap:8px}button:hover:not(:disabled),.button:hover{background:var(--primary-hover)}button:active:not(:disabled),.button:active{background:var(--primary-active)}button:focus-visible,.button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:2px solid var(--primary);outline-offset:2px}button.ghost,a.ghost,.ghost{background:var(--surface);color:var(--ink);border:1px solid var(--line-strong);font-weight:600}button.ghost:hover,a.ghost:hover,.ghost:hover{background:var(--canvas);border-color:var(--line-strong);color:var(--ink)}button:disabled{opacity:.6;cursor:default}button svg,.button svg{width:18px;height:18px;flex:none}input,select,textarea{width:100%;border:1px solid var(--line-strong);border-radius:var(--radius);min-height:var(--control);padding:8px 12px;font:inherit;font-weight:400;color:var(--ink);background:var(--surface)}textarea{min-height:72px;padding-top:10px;resize:vertical;line-height:20px}input::placeholder,textarea::placeholder{color:var(--placeholder);font-weight:400}input:focus,select:focus,textarea:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px #0596692e}input.ng-invalid.ng-touched,select.ng-invalid.ng-touched,textarea.ng-invalid.ng-touched{border-color:var(--danger)}input[type=checkbox],input[type=radio]{width:16px;height:16px;min-height:0;accent-color:var(--primary)}label{display:flex;flex-direction:column;gap:4px;font-size:13px;font-weight:500;line-height:16px;color:var(--label)}.req:after{content:" *";color:var(--danger)}.field-error{color:var(--danger);font-size:12px;font-weight:500}.shell{display:grid;grid-template-columns:240px minmax(0,1fr);grid-template-rows:minmax(0,1fr);height:100%;min-height:0}.mobile-bar{display:none}aside{background:var(--secondary);color:#fff;padding:12px;display:flex;flex-direction:column;min-height:0;min-width:0;overflow:hidden}aside a{color:#ecfdf5;text-decoration:none}.brand{display:block;flex:none;padding:8px 8px 12px}.brand img{width:164px;max-width:100%;height:auto;display:block}.nav-scroll{flex:1 1 auto;min-height:0;overflow:auto;display:flex;flex-direction:column;gap:2px;padding-bottom:8px}.group{margin:12px 10px 4px;color:#d1fae5;font-size:11px;font-weight:600;letter-spacing:.06em;text-transform:uppercase}.group:first-child{margin-top:4px}.nav-scroll a{position:relative;display:flex;align-items:center;gap:10px;min-height:42px;padding:0 10px 0 12px;border-radius:8px;color:#ecfdf5;font-size:14px;font-weight:500}.nav-scroll a svg{width:20px;height:20px;flex:none;fill:currentColor}.nav-scroll a:hover:not(.active){background:#ffffff0d}.nav-scroll a:focus{background:transparent}.nav-scroll a:focus-visible{outline:2px solid #a7f3d0;outline-offset:-2px}.nav-scroll a.active,.nav-scroll a.active:hover,.nav-scroll a.active:focus{background:#ffffff24;font-weight:600;box-shadow:inset 3px 0 #6ee7b7}.userbox{flex:none;display:flex;align-items:center;gap:10px;margin-top:8px;padding:12px 8px 4px;border-top:1px solid rgba(255,255,255,.16);min-width:0}.avatar{width:36px;height:36px;border-radius:50%;background:#ffffff24;display:grid;place-items:center;font-size:13px;font-weight:600;flex:none}.who{margin:0;min-width:0;flex:1}.who strong,.who small{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.who strong{font-size:14px;font-weight:600;color:#fff}.who small{color:#d1fae5;font-size:12px;font-weight:400}button.logout{background:transparent;color:#ecfdf5;border:0;min-height:36px;width:36px;padding:0;border-radius:8px}button.logout:hover{background:#ffffff1a;color:#fff}button.logout svg{width:20px;height:20px;fill:currentColor}main{display:flex;flex-direction:column;min-width:0;min-height:0;height:100%;overflow:auto;padding:24px;background:var(--canvas)}main>router-outlet{display:none}app-shipments,app-shipment-form,app-partners,app-tour-detail,app-mobile,app-fleet{flex:1 1 auto;min-height:0;min-width:0;display:flex;flex-direction:column;overflow:hidden}app-shifts{flex:1 1 auto;min-height:0;min-width:0;display:flex;flex-direction:column;overflow:auto}.page-head,article header,.card header{display:flex;justify-content:space-between;gap:16px;align-items:flex-start}.page-head p,article header p{margin:4px 0 0;color:var(--muted);font-size:14px}h1{margin:0;font-size:26px;font-weight:600;line-height:32px;color:var(--ink);letter-spacing:-.02em}h2{margin:0 0 12px;font-size:17px;font-weight:600;line-height:24px;color:var(--ink)}h3{margin:16px 0 8px;font-size:15px;font-weight:600;color:var(--ink)}.filters,.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:12px;align-items:end;margin:16px 0}.wide{grid-column:1 / -1}.filter-bar{display:flex;flex-wrap:wrap;gap:12px;align-items:end}.filter-bar .search{flex:1 1 220px;min-width:200px}.filter-bar label{flex:1 1 140px;min-width:140px}.filter-bar .actions{display:flex;flex-wrap:wrap;gap:8px;align-items:center}.extra-filters{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;padding:16px;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow)}.week-pair{grid-column:span 2;display:grid;grid-template-columns:1fr 1fr;gap:12px}.hint{margin:0;color:var(--muted);font-size:12px;font-weight:400}.chips{display:flex;flex-wrap:wrap;gap:8px;align-items:center}.chip{display:inline-flex;align-items:center;gap:6px;max-width:100%;background:var(--mint);color:var(--primary-active);border-radius:999px;padding:4px 8px 4px 10px;font-size:12px;font-weight:600}.chip span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}button.chip-x{background:transparent;color:var(--primary-active);min-height:0;width:18px;height:18px;padding:0;border-radius:50%;font-size:14px;line-height:1}button.chip-x:hover{background:#064e3b1a}.table-wrap{overflow:auto;min-height:0;min-width:0;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow)}table{width:100%;border-collapse:collapse;font-variant-numeric:tabular-nums}th,td{text-align:left;padding:10px 12px;border-bottom:1px solid #f1f5f9;vertical-align:middle}th{position:sticky;top:0;z-index:1;background:#f8fafc;color:var(--label);font-size:12px;font-weight:600;letter-spacing:.02em;border-bottom:1px solid var(--line-strong);white-space:nowrap}tbody tr:hover{background:#f8fafc}tbody tr.link-row{cursor:pointer}tbody tr.link-row:hover,tbody tr.link-row.menu-open{background:#f1f5f9}td a{font-weight:600;color:var(--primary-active);text-decoration:none}td a:hover{text-decoration:underline}td small,.muted{color:var(--muted);font-weight:400}.num{text-align:right;white-space:nowrap}.clip{max-width:180px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ship-table{min-width:1180px}.ship-table td:first-child,.ship-table th:first-child{white-space:nowrap}.tag{display:inline-flex;align-items:center;gap:6px;border-radius:999px;padding:2px 8px;background:var(--info-bg);color:var(--info);font-size:12px;font-weight:600;letter-spacing:0;text-transform:none;white-space:nowrap}.tag:before{content:"";width:6px;height:6px;border-radius:999px;background:var(--tertiary)}.tag[data-status=delivered],.tag[data-status=completed],.tag[data-status=closed],.tag[data-status=loaded],.tag[data-status=ready]{background:var(--mint);color:var(--ok)}.tag[data-status=delivered]:before,.tag[data-status=completed]:before,.tag[data-status=closed]:before,.tag[data-status=loaded]:before,.tag[data-status=ready]:before{background:var(--primary)}.tag[data-status=problem]{background:var(--danger-bg);color:var(--danger)}.tag[data-status=problem]:before{background:var(--danger)}.tag[data-status=draft],.tag[data-status=planned]{background:var(--warn-bg);color:#b45309}.tag[data-status=draft]:before,.tag[data-status=planned]:before{background:#f59e0b}.card,section,.panel{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:16px;box-shadow:var(--shadow)}section{margin:16px 0}.panel{margin:0}.stack{display:flex;flex-direction:column;gap:16px;min-height:0;min-width:0}.error{color:var(--danger)}.warn{background:var(--warn-bg);color:#92400e;border:1px solid var(--warn-border);padding:10px 12px;border-radius:var(--radius)}.ok{color:var(--ok)}.banner{margin:0;padding:10px 12px;border-radius:var(--radius);background:var(--mint);color:var(--primary-active);border:1px solid var(--ok-border)}.banner.error{background:var(--danger-bg);color:var(--danger);border:1px solid var(--danger-border)}.split{display:grid;grid-template-columns:280px minmax(0,1fr);gap:16px}.list{list-style:none;padding:0;margin:0}.list li{padding:10px 12px;border-bottom:1px solid #f1f5f9;cursor:pointer}.list li.selected,.list li:hover{background:var(--canvas)}.list small,.list p{display:block;color:var(--muted)}.check{flex-direction:row;align-items:center;gap:8px;font-size:14px;font-weight:400}.shipment{border-top:1px solid var(--line);padding-top:8px;margin-top:8px}fieldset{border:1px solid var(--line);border-radius:var(--radius);padding:12px}legend{color:var(--label);font-size:12px;font-weight:600;padding:0 4px}.state{padding:32px 16px;text-align:center;color:var(--muted);background:var(--surface);border:1px solid var(--line);border-radius:var(--radius)}.pager{display:flex;flex-wrap:wrap;gap:12px;align-items:center;justify-content:space-between}.pager .navish{display:flex;gap:8px;align-items:center}.pager label{flex-direction:row;align-items:center;gap:8px;font-size:13px}.pager select{width:auto;min-width:72px}.back-link{color:var(--muted);font-size:13px;font-weight:500;text-decoration:none}.back-link:hover{color:var(--ink)}.head-line{display:flex;flex-wrap:wrap;gap:8px 12px;align-items:center}.tabs{display:flex;gap:4px;overflow-x:auto;border-bottom:1px solid var(--line-strong);flex:none}button.tab{background:transparent;color:var(--body);border:0;border-bottom:2px solid transparent;border-radius:0;min-height:42px;padding:0 12px;font-weight:500;white-space:nowrap;box-shadow:none}button.tab:hover,button.tab:active{background:transparent;color:var(--ink)}button.tab.active{color:var(--primary-active);border-bottom-color:var(--primary);font-weight:600}button.tab .tab-err{display:inline-grid;place-items:center;width:16px;height:16px;margin-left:6px;border-radius:50%;background:var(--danger);color:#fff;font-size:11px;font-weight:700}.sheet-scroll{flex:1 1 auto;min-height:0;overflow:auto;padding-right:2px}.action-bar{flex:none;display:flex;flex-wrap:wrap;gap:12px;align-items:center;justify-content:space-between;padding-top:12px;margin-top:12px;border-top:1px solid var(--line);background:var(--canvas)}.action-bar .bar-actions{display:flex;gap:8px;align-items:center}.dirty{color:var(--muted);font-size:13px}.form-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;align-items:start}.span-2{grid-column:span 2}.span-3{grid-column:span 3}.span-4{grid-column:span 4}.pair{display:grid;grid-template-columns:1fr 1fr;gap:16px;align-items:start}.loc-grid{display:grid;grid-template-columns:120px minmax(0,1.3fr) minmax(160px,.9fr);gap:12px}.loc-grid .full{grid-column:1 / -1}.loc-grid .contact{grid-column:1 / 3}.money-row,.invoice-row{display:grid;gap:12px;align-items:end}.money-row{grid-template-columns:minmax(0,280px) 110px;max-width:420px}.invoice-row{grid-template-columns:minmax(0,1.6fr) minmax(140px,.8fr) 110px 36px}button.icon-btn{background:transparent;color:var(--muted);border:0;width:36px;min-height:36px;padding:0}button.icon-btn:hover{background:var(--danger-bg);color:var(--danger)}button.icon-btn svg{width:18px;height:18px}.totals{display:flex;flex-wrap:wrap;gap:8px 16px;margin:0;color:var(--ink);font-size:13px;font-weight:500}.cargo-table{min-width:980px}.cargo-table input,.cargo-table select{min-height:40px}.cargo-table th,.cargo-table td{padding:8px}.menu-btn{display:none}button.menu-btn,button.backdrop{background:var(--surface);color:var(--ink);border:1px solid var(--line)}button.backdrop{position:fixed;inset:0;z-index:20;border:0;border-radius:0;min-height:0;padding:0;background:#0f172a73}button.backdrop:hover{background:#0f172a73}@media(max-width:1200px){.form-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.span-3,.span-4{grid-column:span 2}.extra-filters{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:960px){.shell{grid-template-columns:minmax(0,1fr);grid-template-rows:auto minmax(0,1fr)}.mobile-bar{display:flex;align-items:center;gap:12px;grid-row:1;position:relative;z-index:15;padding:8px 12px;background:var(--secondary);min-height:56px}aside{grid-row:1}main{grid-row:2}.mobile-bar img{width:132px;height:auto}button.menu-btn{display:none}.mobile-bar{justify-content:center}aside{position:fixed;z-index:30;top:0;bottom:0;left:0;width:min(280px,88vw);transform:translate(-105%);transition:transform .18s ease}aside.open{transform:none}.pair,.split,.week-pair,.money-row,.invoice-row{grid-template-columns:1fr}.invoice-row button.icon-btn,.money-row button.icon-btn{justify-self:start}main{padding:16px 16px calc(124px + env(safe-area-inset-bottom))}h1{font-size:24px;line-height:30px}}@media(max-width:640px){.form-grid,.extra-filters,.loc-grid{grid-template-columns:1fr}.span-2,.span-3,.span-4,.loc-grid .full,.loc-grid .contact,.week-pair{grid-column:auto}}
