/* Ludobind · dashboard.css — 15/06/2026 */
    :root {
      --bg:#060b14; --surface:#0c1422; --surface2:#111c2e; --surface3:#172236;
      --border:#1a2840; --border2:#243650;
      --text:#dde6f0; --text-dim:#a0b8cc; --text-muted:#6b8aab;
      --accent:#38bdf8; --accent-dim:rgba(56,189,248,0.12); --accent-glow:rgba(56,189,248,0.06);
      --danger:#f87171; --warn:#fbbf24; --success:#34d399;
      --s0:#475569;--s1:#6366f1;--s2:#8b5cf6;--s3:#ec4899;--s4:#f97316;
      --s5:#eab308;--s6:#84cc16;--s7:#06b6d4;--s8:#10b981;--s9:#22c55e;
      --c-lorcana:#7c3aed;--c-magic:#c0392b;--c-pokemon:#d97706;
      --c-onepiece:#1d4ed8;--c-swu:#0f766e;--c-riftbound:#059669;
      --c-naruto:#ea580c;--c-yugioh:#7c2d12;--c-warhammer_40k:#6b21a8;--c-default:#374151;
    }
    *,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
    body{background:var(--bg);color:var(--text);font-family:'DM Sans',system-ui,sans-serif;font-size:13.5px;line-height:1.55;min-height:100vh;
      background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='0.025'/%3E%3C/svg%3E")}
    a{color:var(--accent);text-decoration:none} button{font-family:inherit}

    /* AUTH */
    #view-auth{min-height:100vh;display:flex;align-items:center;justify-content:center;
      background:radial-gradient(ellipse 60% 50% at 15% 60%,rgba(56,189,248,0.04) 0%,transparent 70%),
                 radial-gradient(ellipse 50% 40% at 85% 30%,rgba(124,58,237,0.05) 0%,transparent 60%)}
    .auth-box{background:var(--surface);border:1px solid var(--border);border-radius:14px;padding:44px 40px 40px;width:100%;max-width:400px;box-shadow:0 24px 60px rgba(0,0,0,0.5);animation:fadeUp 0.35s ease both}
    .auth-wordmark{display:flex;align-items:baseline;gap:6px;margin-bottom:6px}
    .auth-wordmark h1{font-family:'Syne',sans-serif;font-size:22px;font-weight:800;letter-spacing:-0.5px;color:var(--text)}
    .auth-wordmark .dot{color:var(--accent);font-size:24px}
    .auth-sub{color:var(--text-muted);font-size:12.5px;margin-bottom:36px;letter-spacing:0.3px}

    /* FIELDS */
    .field{margin-bottom:18px}
    .field label{display:block;font-size:11px;font-weight:500;text-transform:uppercase;letter-spacing:0.8px;color:var(--text-muted);margin-bottom:7px}
    .field input{width:100%;background:var(--bg);border:1px solid var(--border);border-radius:7px;padding:10px 13px;color:var(--text);font-family:'DM Sans',sans-serif;font-size:13.5px;outline:none;transition:border-color 0.15s,box-shadow 0.15s}
    .field input:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-glow)}
    .field input::placeholder{color:var(--text-muted)}

    /* BUTTONS */
    .btn-primary{width:100%;background:var(--accent);color:#060b14;border:none;border-radius:7px;padding:11px;font-family:'DM Sans',sans-serif;font-size:13.5px;font-weight:600;cursor:pointer;margin-top:6px;transition:opacity 0.15s,transform 0.1s}
    .btn-primary:hover{opacity:0.9} .btn-primary:active{transform:scale(0.99)} .btn-primary:disabled{opacity:0.45;cursor:not-allowed;transform:none}
    .btn-ghost{background:transparent;border:1px solid var(--border);border-radius:6px;padding:5px 11px;color:var(--text-dim);font-family:'DM Sans',sans-serif;font-size:12px;cursor:pointer;transition:all 0.15s}
    .btn-ghost:hover{border-color:var(--border2);color:var(--text)}
    .nav-link{text-decoration:none;display:inline-block}
    .nav-link.nav-active{border-color:var(--accent);color:var(--text);background:var(--accent-dim)}
    .topbar-page-label{font-size:13px;color:var(--text-muted);font-family:'DM Mono',monospace}
    .btn-sm{background:var(--accent-dim);border:1px solid rgba(56,189,248,0.2);border-radius:5px;padding:5px 11px;color:var(--accent);font-size:12px;font-weight:500;cursor:pointer;transition:all 0.15s;white-space:nowrap}
    .btn-sm:hover{background:rgba(56,189,248,0.18)}
    .btn-download{display:flex;align-items:center;gap:7px;background:var(--success);border:none;border-radius:7px;padding:10px 20px;color:#060b14;font-family:'DM Sans',sans-serif;font-size:13px;font-weight:600;cursor:pointer;transition:opacity 0.15s}
    .btn-download:hover{opacity:0.9} .btn-download:disabled{opacity:0.4;cursor:not-allowed}

    .error-banner{background:rgba(248,113,113,0.08);border:1px solid rgba(248,113,113,0.22);border-radius:7px;padding:10px 13px;color:var(--danger);font-size:12.5px;margin-bottom:18px;line-height:1.45}
    .info-banner{background:rgba(52,211,153,0.08);border:1px solid rgba(52,211,153,0.22);border-radius:7px;padding:10px 13px;color:var(--success);font-size:12.5px;margin-bottom:18px;line-height:1.45}
    .forgot-link{display:block;text-align:center;margin-top:16px;color:var(--text-muted);font-size:12.5px;text-decoration:none}
    .forgot-link:hover{color:var(--accent)}

    /* APP SHELL */
    #view-app{display:flex;flex-direction:column;min-height:100vh}
    .topbar{height:54px;background:var(--surface);border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;padding:0 28px;position:sticky;top:0;z-index:200}
    .topbar-brand{font-family:'Syne',sans-serif;font-size:15px;font-weight:800;letter-spacing:-0.3px;color:var(--text);display:flex;align-items:center;gap:7px}
    .brand-dot{width:7px;height:7px;background:var(--accent);border-radius:50%;display:inline-block}
    .topbar-right{display:flex;align-items:center;gap:14px}
    .store-name{font-size:12px;color:var(--text-muted);font-family:'DM Mono',monospace}
    .main{flex:1;padding:28px 28px 60px;max-width:1380px;width:100%;margin:0 auto}

    /* GAME TABS */
    /* Nick's ask 13/07/2026: was a single-row flex with overflow-x:auto + a hidden scrollbar
       (scrollbar-width:none / ::-webkit-scrollbar{display:none}) — content past the visible
       width was reachable only by scrolling right, with no visual cue that it existed at all
       (Star Wars: Unlimited/Riftbound could be entirely off-screen with 20 games active). Wraps
       to as many rows as needed instead; nothing to scroll, so the scrollbar-hiding rules are
       gone too. */
    .game-tabs{display:flex;flex-wrap:wrap;gap:5px;margin-bottom:28px}
    .g-tab{display:flex;align-items:center;gap:7px;padding:7px 14px;border-radius:8px;border:1px solid var(--border);background:var(--surface);color:var(--text-muted);font-size:12.5px;font-weight:500;cursor:pointer;white-space:nowrap;transition:all 0.15s;font-family:inherit}
    .g-tab:hover{color:var(--text-dim);border-color:var(--border2)} .g-tab.active{background:var(--surface2);border-color:var(--border2);color:var(--text)}
    .g-tab .gdot{width:7px;height:7px;border-radius:50%;flex-shrink:0}
    .g-tab .badge{background:var(--surface3);border-radius:4px;padding:1px 6px;font-size:10.5px;color:var(--text-muted);font-family:'DM Mono',monospace}
    .g-tab.active .badge{background:var(--accent-dim);color:var(--accent)}

    /* GAME SECTION + CARDS */
    .game-section{margin-bottom:36px}
    .section-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px}
    .section-title{display:flex;align-items:center;gap:9px;font-family:'Syne',sans-serif;font-size:14px;font-weight:700;color:var(--text);letter-spacing:-0.2px}
    .section-title .gdot{width:9px;height:9px;border-radius:50%}
    .btn-add{display:flex;align-items:center;gap:5px;background:var(--accent-dim);border:1px solid rgba(56,189,248,0.18);border-radius:6px;padding:6px 13px;color:var(--accent);font-family:'DM Sans',sans-serif;font-size:12px;font-weight:500;cursor:pointer;transition:all 0.15s}
    .btn-add:hover{background:rgba(56,189,248,0.18)}
    .cards-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:14px}
    .inst-card{background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:18px 18px 16px;border-left:3px solid var(--c-default);cursor:pointer;transition:background 0.15s,border-color 0.12s,transform 0.12s;animation:fadeUp 0.3s ease both}
    .inst-card:hover{background:var(--surface2);border-color:var(--border2);transform:translateY(-1px)}
    /* Pipeline redesign (13/07/2026) — manually marking a set "Complete" greys out its tile.
       Deliberately still fully clickable/visible, not hidden — the "Hide" conversation is
       parked pending customer feedback; this is just a visual "done with this one" cue. */
    .inst-card.is-complete{opacity:.5}
    .inst-card.is-complete:hover{opacity:.75}
    .card-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:13px}
    .card-name{font-size:14px;font-weight:600;color:var(--text);line-height:1.3}
    .card-code{font-family:'DM Mono',monospace;font-size:10.5px;color:var(--text-muted);margin-top:3px}
    .stage-pill{flex-shrink:0;padding:3px 8px;border-radius:4px;font-size:10.5px;font-weight:600;font-family:'DM Mono',monospace;text-transform:uppercase;letter-spacing:0.4px;white-space:nowrap}
    .pipeline{display:flex;gap:2.5px;margin-bottom:13px}
    .pip{flex:1;height:3px;border-radius:2px;background:var(--border);transition:background 0.2s}
    .dates-row{display:flex;gap:18px;flex-wrap:wrap}
    .date-cell{display:flex;flex-direction:column;gap:2px}
    .dlabel{font-size:10px;text-transform:uppercase;letter-spacing:0.6px;color:var(--text-muted);font-weight:500}
    .dval{font-family:'DM Mono',monospace;font-size:11.5px;color:var(--text-dim)}
    .dval.urgent{color:var(--danger)} .dval.soon{color:var(--warn)} .dval.past{color:var(--text-muted);text-decoration:line-through}
    .empty{border:1px dashed var(--border);border-radius:10px;padding:38px 24px;text-align:center;color:var(--text-muted)}
    .empty p{font-size:12.5px;margin-top:5px} .empty strong{color:var(--text-dim);font-weight:500;font-size:13px}

    /* DETAIL PANEL */
    .detail-overlay{position:fixed;inset:0;background:rgba(0,0,0,0.55);z-index:300;animation:fadeIn 0.15s ease}
    .detail-panel{position:fixed;top:0;right:0;bottom:0;width:min(1020px,95vw);background:var(--surface);border-left:1px solid var(--border2);overflow-y:auto;z-index:301;animation:slideIn 0.22s ease both;display:flex;flex-direction:column}
    @keyframes slideIn{from{transform:translateX(100%)}to{transform:none}}
    .dp-header{padding:28px 28px 0;border-bottom:1px solid var(--border);flex-shrink:0;background-size:cover;background-position:center;background-repeat:no-repeat;transition:background 0.3s}
    .dp-img-btn{background:none;border:1px solid rgba(255,255,255,0.15);border-radius:5px;padding:3px 8px;font-size:12px;color:var(--text-muted);cursor:pointer;transition:all 0.15s;flex-shrink:0}
    .dp-img-btn:hover{border-color:var(--border2);color:var(--text)}
    .dp-img-form{background:rgba(0,0,0,0.35);backdrop-filter:blur(4px);border:1px solid var(--border);border-radius:6px;padding:10px 12px;margin-bottom:10px;display:flex;gap:8px;align-items:center}
    .dp-img-form input{flex:1;background:rgba(0,0,0,0.4);border:1px solid var(--border2);border-radius:5px;color:var(--text);padding:5px 9px;font-size:12px;font-family:'DM Mono',monospace}
    .dp-header-top{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:12px}
    .dp-title{display:flex;align-items:center;gap:10px}
    .dp-title h2{font-family:'Syne',sans-serif;font-size:18px;font-weight:800;color:var(--text);letter-spacing:-0.3px}
    .dp-close{background:none;border:1px solid var(--border);border-radius:6px;width:30px;height:30px;color:var(--text-muted);cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:16px;flex-shrink:0;transition:all 0.15s}
    .dp-close:hover{border-color:var(--border2);color:var(--text)}
    .dp-meta{display:flex;gap:16px;align-items:center;margin-bottom:12px;flex-wrap:wrap}

    /* MILESTONE PILLS */
    .milestones{display:flex;gap:4px;flex-wrap:wrap;margin-bottom:16px;padding-bottom:16px}
    .ms-btn{background:var(--surface3);border:1px solid var(--border);border-radius:5px;padding:4px 10px;font-size:11px;font-family:'DM Mono',monospace;color:var(--text-muted);cursor:pointer;transition:all 0.15s;white-space:nowrap}
    .ms-btn:hover{border-color:var(--border2);color:var(--text-dim)}
    .ms-btn.done{color:white;border-color:transparent}
    /* Pipeline redesign (13/07/2026) — every pill except 'Complete' is now a computed display,
       not a click target; no pointer cursor, no hover highlight implying it can be clicked. */
    .ms-btn.auto{cursor:default}
    .ms-btn.auto:hover{border-color:var(--border);color:var(--text-muted)}

    /* TABS */
    .dp-tabs{display:flex;gap:0}
    .dp-tab{padding:10px 20px;font-size:12.5px;font-weight:500;color:var(--text-muted);cursor:pointer;border-bottom:2px solid transparent;transition:all 0.15s;background:none;border-top:none;border-left:none;border-right:none}
    .dp-tab:hover{color:var(--text-dim)} .dp-tab.active{color:var(--accent);border-bottom-color:var(--accent)}
    .dp-body{flex:1;padding:24px 28px}

    /* PRODUCT TABLE */
    .dist-group{margin-bottom:28px}
    .dist-group-header{display:flex;align-items:center;gap:10px;margin-bottom:12px;padding-bottom:8px;border-bottom:1px solid var(--border)}
    .dist-label{font-size:12px;font-weight:600;color:var(--text-dim);text-transform:uppercase;letter-spacing:0.5px}
    .dist-badge{background:var(--surface3);border-radius:4px;padding:2px 7px;font-size:10.5px;color:var(--text-muted);font-family:'DM Mono',monospace}
    .dist-badge.op{background:rgba(56,189,248,0.1);color:var(--accent);border:1px solid rgba(56,189,248,0.2)}
    .prod-table{width:100%;border-collapse:collapse;font-size:12.5px}
    .prod-table th{text-align:left;font-size:10px;text-transform:uppercase;letter-spacing:0.6px;color:var(--text-muted);font-weight:500;padding:6px 8px;border-bottom:1px solid var(--border)}
    .prod-table td{padding:8px 8px;border-bottom:1px solid var(--border);vertical-align:middle}
    .prod-table tr:last-child td{border-bottom:none}
    .prod-table tr.active-row td{background:rgba(56,189,248,0.03)}
    .prod-table input[type=number]{width:72px;background:var(--bg);border:1px solid var(--border);border-radius:4px;padding:4px 6px;color:var(--text);font-family:'DM Mono',monospace;font-size:11.5px;outline:none;transition:border-color 0.15s}
    .prod-table input[type=number]:focus{border-color:var(--accent)}
    .sku-cell{font-family:'DM Mono',monospace;font-size:11px;color:var(--text-muted)}
    .price-cell{font-family:'DM Mono',monospace;font-size:11.5px}
    .toggle{position:relative;width:32px;height:18px;display:inline-block}
    .toggle input{opacity:0;width:0;height:0}
    .toggle-slider{position:absolute;cursor:pointer;inset:0;background:var(--border2);border-radius:9px;transition:0.2s}
    .toggle-slider:before{position:absolute;content:"";height:12px;width:12px;left:3px;bottom:3px;background:var(--text-muted);border-radius:50%;transition:0.2s}
    .toggle input:checked + .toggle-slider{background:var(--accent)}
    .toggle input:checked + .toggle-slider:before{transform:translateX(14px);background:white}
    .toggle input:disabled + .toggle-slider{opacity:0.35;cursor:default}
    .save-bar{display:flex;align-items:center;justify-content:space-between;padding:12px 0 0;margin-top:16px;border-top:1px solid var(--border)}
    .save-msg{font-size:12px;color:var(--text-muted)} .save-msg.ok{color:var(--success)}

    /* ORDERS TAB */
    .order-section{margin-bottom:28px}
    .order-section-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}
    .order-section-title{font-size:13px;font-weight:600;color:var(--text)}
    .disclaimer{background:rgba(251,191,36,0.08);border:1px solid rgba(251,191,36,0.2);border-radius:7px;padding:10px 14px;color:var(--warn);font-size:12px;margin-bottom:18px;line-height:1.5}
    .order-table{width:100%;border-collapse:collapse;font-size:12.5px;margin-bottom:10px}
    .order-table th{text-align:left;font-size:10px;text-transform:uppercase;letter-spacing:0.5px;color:var(--text-muted);padding:5px 8px;border-bottom:1px solid var(--border)}
    .order-table td{padding:7px 8px;border-bottom:1px solid var(--border)}
    .order-table tr:last-child td{border-bottom:none}
    .order-total{text-align:right;font-size:12.5px;color:var(--text-dim);padding:8px 0;font-family:'DM Mono',monospace}
    .order-email-box{background:var(--bg);border:1px solid var(--border);border-radius:8px;padding:16px;font-family:'DM Mono',monospace;font-size:12px;color:var(--text-dim);white-space:pre-wrap;line-height:1.7;margin-top:12px}

    /* LOADING / MODAL */
    #view-loading{min-height:100vh;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:16px;color:var(--text-muted);font-size:13px}
    .spinner{width:28px;height:28px;border:2px solid var(--border2);border-top-color:var(--accent);border-radius:50%;animation:spin 0.7s linear infinite}
    .overlay{position:fixed;inset:0;background:rgba(0,0,0,0.65);backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;z-index:500;padding:24px;animation:fadeIn 0.15s ease}
    .modal{background:var(--surface);border:1px solid var(--border2);border-radius:12px;padding:30px 32px 28px;width:100%;max-width:460px;box-shadow:0 30px 70px rgba(0,0,0,0.6);animation:fadeUp 0.2s ease both}
    .modal h2{font-family:'Syne',sans-serif;font-size:17px;font-weight:700;margin-bottom:22px;color:var(--text)}
    .modal select,.modal textarea{width:100%;background:var(--bg);border:1px solid var(--border);border-radius:7px;padding:10px 13px;color:var(--text);font-family:'DM Sans',sans-serif;font-size:13.5px;outline:none;transition:border-color 0.15s}
    .modal select:focus,.modal textarea:focus{border-color:var(--accent)}
    .modal select option{background:var(--surface2)} .modal select:disabled{opacity:0.45} .modal textarea{resize:vertical}
    .modal-footer{display:flex;gap:10px;justify-content:flex-end;margin-top:24px}
    .modal-footer .btn-primary{width:auto;padding:9px 22px}

    /* EVENTS TAB */
    .events-toolbar{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px}
    .event-row{background:var(--surface2);border:1px solid var(--border);border-radius:6px;padding:10px 12px;display:flex;align-items:center;gap:10px;margin-bottom:7px}
    .event-row-edit{background:var(--surface2);border:1px solid var(--accent);border-radius:6px;padding:12px;margin-bottom:7px}
    .ev-fmt{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.5px;padding:2px 7px;border-radius:4px;background:var(--accent-dim);color:var(--accent);min-width:72px;text-align:center;flex-shrink:0;font-family:'DM Mono',monospace}
    .ev-info{flex:1;min-width:0}
    .ev-name{font-size:13px;font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
    .ev-meta{font-size:11px;color:var(--text-muted);margin-top:2px;font-family:'DM Mono',monospace}
    .ev-status{font-size:11.5px;white-space:nowrap;flex-shrink:0}
    .event-row.ev-highlight .ev-name{animation:ev-name-gold 3s ease forwards}
    @keyframes ev-name-gold{0%,40%{color:#f5c842}100%{color:var(--text)}}
    .products-topbar{display:flex;justify-content:flex-end;margin-bottom:14px}
    .export-dropdown{position:relative;display:inline-flex;align-items:center;gap:10px}
    .export-menu{position:absolute;top:calc(100% + 6px);right:0;background:var(--surface2);border:1px solid var(--border);border-radius:8px;box-shadow:0 8px 24px rgba(0,0,0,.4);min-width:280px;z-index:50;overflow:hidden}
    .export-menu-header{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.7px;color:var(--text-muted);padding:8px 14px 4px;background:var(--bg)}
    .export-menu-item{display:flex;justify-content:space-between;align-items:center;gap:10px;width:100%;text-align:left;background:none;border:none;border-bottom:1px solid var(--border);color:var(--text);padding:10px 14px;font-size:12.5px;cursor:pointer;transition:background 0.15s}
    .export-menu-item:last-child{border-bottom:none}
    .export-menu-item:hover{background:var(--accent-dim)}
    .export-toast{font-size:11.5px;color:var(--accent);opacity:0;transition:opacity 0.3s}
    .windows-summary summary{padding:8px 12px;font-size:11.5px;font-weight:600;color:var(--text-muted);cursor:pointer;user-select:none;list-style:none;display:flex;align-items:center;gap:6px}
    .windows-summary summary::-webkit-details-marker{display:none}
    .windows-summary summary::before{content:'▶';font-size:9px;transition:transform 0.15s}
    .windows-summary[open] summary::before{transform:rotate(90deg)}
    .windows-summary summary:hover{color:var(--text)}
    .windows-grid{padding:8px 12px 10px;display:flex;flex-direction:column;gap:5px;border-top:1px solid var(--border);background:var(--surface2)}
    .window-row{display:flex;align-items:center;gap:8px;font-size:11.5px}
    .window-cat{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.5px;padding:1px 6px;border-radius:3px;background:var(--accent-dim);color:var(--accent);font-family:'DM Mono',monospace;flex-shrink:0}
    .window-dates{color:var(--text-muted);font-family:'DM Mono',monospace}
    .window-name{color:var(--text-dim);font-style:italic}

    @keyframes spin{to{transform:rotate(360deg)}}
    @keyframes fadeIn{from{opacity:0}to{opacity:1}}
    @keyframes fadeUp{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
    .inst-card:nth-child(1){animation-delay:0.04s}.inst-card:nth-child(2){animation-delay:0.08s}
    .inst-card:nth-child(3){animation-delay:0.12s}.inst-card:nth-child(4){animation-delay:0.16s}
    .inst-card:nth-child(5){animation-delay:0.20s}.inst-card:nth-child(6){animation-delay:0.24s}
    @media(max-width:600px){.topbar{padding:0 16px}.main{padding:20px 16px 48px}.cards-grid{grid-template-columns:1fr}}
  
/* Attendee list modal */
    .att-section{margin-bottom:14px}
    .att-section-hd{display:flex;justify-content:space-between;align-items:center;font-size:10.5px;font-weight:700;text-transform:uppercase;letter-spacing:.6px;color:var(--text-muted);margin-bottom:6px;padding-bottom:5px;border-bottom:1px solid var(--border)}
    .att-count{background:var(--surface3);border-radius:9px;padding:1px 7px;font-size:10px;font-weight:700;margin-left:5px;font-family:'DM Mono',monospace}
    .att-row{display:flex;align-items:center;gap:8px;padding:6px 0;border-bottom:1px solid var(--border);font-size:13px}
    .att-row:last-child{border-bottom:none}
    .att-editing{align-items:flex-start;flex-wrap:wrap;gap:5px;padding:8px 0}
    .att-src{font-size:10.5px;color:var(--text-muted);font-family:'DM Mono',monospace;flex-shrink:0;min-width:46px}
    .att-qty{font-size:11.5px;color:var(--text-muted);flex-shrink:0}
    .att-empty{font-size:12.5px;color:var(--text-muted);padding:8px 0;font-style:italic}
    .att-add-form{display:flex;gap:6px;align-items:center;padding:8px 0;flex-wrap:wrap}
    .att-add-form input,.att-editing input{background:var(--bg);border:1px solid var(--border);border-radius:6px;padding:4px 8px;color:var(--text);font-family:'DM Sans',sans-serif;font-size:12px;outline:none}
    .att-add-form input:focus,.att-editing input:focus{border-color:var(--accent)}

/* Pricing/margin modal (P6b) */
    .pricing-row input{background:var(--bg);border:1px solid var(--border);border-radius:6px;padding:5px 8px;color:var(--text);font-family:'DM Mono',monospace;font-size:12.5px;outline:none;width:100%}
    .pricing-row input:focus{border-color:var(--accent)}

/* Booster badge in event row */
    .ev-booster{font-size:11px;color:var(--text-muted);margin-top:2px;font-family:'DM Mono',monospace}

/* Booster summary in Products tab */
    .booster-summary{margin:16px 0 0;border:1px solid var(--border2);border-radius:8px;padding:12px 16px;background:var(--surface2)}
    .booster-summary-title{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.6px;color:var(--text-muted);margin-bottom:8px}
    .booster-row{display:flex;justify-content:space-between;align-items:center;font-size:12.5px;padding:4px 0;border-bottom:1px solid var(--border)}
    .booster-row:last-child{border-bottom:none}
    .booster-val{font-family:'DM Mono',monospace;font-size:12px;color:var(--text-dim)}
    .booster-total{font-weight:700;color:var(--text);margin-top:4px;padding-top:6px;border-top:1px solid var(--border2)!important}
    .booster-total .booster-val{color:var(--accent)}

/* Flatpickr dark theme overrides */
  /* Flatpickr dark theme overrides to match dashboard */
  .flatpickr-calendar{background:var(--surface2)!important;border:1px solid var(--border)!important;box-shadow:0 8px 24px rgba(0,0,0,.4)!important}
  .flatpickr-months .flatpickr-month,.flatpickr-weekdays,.span.flatpickr-weekday{background:var(--surface2)!important}
  .flatpickr-day{color:var(--text)!important}
  .flatpickr-day:hover{background:var(--accent-dim)!important;border-color:var(--accent-dim)!important}
  .flatpickr-day.selected,.flatpickr-day.selected:hover{background:var(--accent)!important;border-color:var(--accent)!important;color:#fff!important}
  .flatpickr-day.today{border-color:var(--accent)!important}
  .flatpickr-monthDropdown-months{color:var(--text)!important;background:var(--surface2)!important}
  .flatpickr-monthDropdown-months option{color:#111!important;background:#fff!important}
  .flatpickr-current-month,.numInputWrapper input{color:var(--text)!important;background:transparent!important}
  .flatpickr-prev-month svg,.flatpickr-next-month svg{fill:var(--text)!important}
  span.flatpickr-weekday{color:var(--text-muted)!important}

/* Products tab — lifecycle columns */
  .lifecycle-cell{display:flex;align-items:center;gap:4px;white-space:nowrap}
  .lc-qty{width:58px;background:var(--bg);border:1px solid var(--border);border-radius:4px;padding:3px 5px;color:var(--text);font-family:'DM Mono',monospace;font-size:11.5px;outline:none;transition:border-color 0.15s}
  .lc-qty:disabled{opacity:0.4;cursor:not-allowed}
  .preorder-cell{white-space:nowrap;vertical-align:middle}
  .preorder-epos{display:block;font-size:10px;color:var(--text-muted);font-family:'DM Mono',monospace;margin-bottom:2px}
  .dist-group-header{flex-wrap:wrap}

/* Products tab — order lifecycle rebuild */
  .prod-toolbar{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px}
  .prod-check-cell{width:32px;text-align:center}
  .tick-btn{background:none;border:1px solid var(--border);border-radius:4px;width:24px;height:24px;color:var(--text-muted);cursor:pointer;display:inline-flex;align-items:center;justify-content:center;font-size:13px;transition:all 0.15s;flex-shrink:0;padding:0}
  .tick-btn.ticked{background:rgba(52,211,153,0.12);border-color:var(--success);color:var(--success)}
  .tick-btn:hover:not(.ticked){border-color:var(--border2);color:var(--text)}
  .dist-cutoff{font-size:11px;font-family:'DM Mono',monospace;margin-left:auto;white-space:nowrap}
  .dist-cutoff.past{color:var(--danger)}
  .dist-cutoff.soon{color:var(--warn)}
  .lock-icon{font-size:13px;cursor:pointer;transition:opacity 0.15s;flex-shrink:0}
  .unlock-btn{font-size:10px;background:none;border:1px solid rgba(251,191,36,0.3);border-radius:3px;padding:2px 7px;color:var(--warn);cursor:pointer;transition:all 0.15s}
  .unlock-btn:hover{background:rgba(251,191,36,0.1)}
  .dist-subtotal{text-align:right;padding:6px 8px 0;font-size:11.5px;color:var(--text-muted);font-family:'DM Mono',monospace;border-top:1px solid var(--border)}
  .grand-total-box{background:var(--surface2);border:1px solid var(--border);border-radius:8px;padding:12px 16px;margin-top:8px}
  .grand-total-row{display:flex;justify-content:space-between;align-items:baseline;font-family:'DM Mono',monospace;font-size:13px;color:var(--text);padding:2px 0}
  .grand-total-row span:last-child{font-weight:600}
  .grand-disclaimer{font-size:11px;color:var(--text-muted);margin-top:8px;line-height:1.5;border-top:1px solid var(--border);padding-top:8px}
  .preorder-ind{font-size:11px;font-family:'DM Mono',monospace;color:var(--text-muted);white-space:nowrap}
  .preorder-ind.has-orders{color:var(--accent)}

/* Non-set products modal */
  .modal-wide{max-width:700px}
  .modal-header-row{display:flex;align-items:center;gap:12px;margin-bottom:22px}
  .modal-header-row h2{margin-bottom:0}
  .nsp-count-badge{background:var(--surface3);border-radius:4px;padding:2px 8px;font-size:11px;color:var(--text-muted);font-family:'DM Mono',monospace;flex-shrink:0}
  .nsp-table-wrap{overflow-x:auto;overflow-y:auto;max-height:60vh;margin-bottom:0}
  .nsp-table{width:100%;border-collapse:collapse;font-size:12.5px}
  .nsp-table th{text-align:left;font-size:10px;text-transform:uppercase;letter-spacing:0.6px;color:var(--text-muted);font-weight:500;padding:6px 10px;border-bottom:1px solid var(--border);position:sticky;top:0;background:var(--surface)}
  .nsp-table td{padding:8px 10px;border-bottom:1px solid var(--border);vertical-align:middle}
  .nsp-table tr:last-child td{border-bottom:none}
  .nsp-table tr:hover td{background:var(--surface2)}
  .nsp-name{color:var(--text);max-width:320px}
  .nsp-sku{font-family:'DM Mono',monospace;font-size:11px;color:var(--text-muted);white-space:nowrap}
  .nsp-empty{font-size:12.5px;color:var(--text-muted);padding:20px 0;text-align:center;font-style:italic}

/* ── Calendar & Tasks (Phase 4) ─────────────────────────────────────────── */
.cal-loading{padding:60px 0;text-align:center;color:var(--text-muted);font-size:13px}
.cal-header{display:flex;align-items:center;justify-content:space-between;padding:24px 28px 0}
.cal-header h2{font-family:'Syne',sans-serif;font-size:19px;font-weight:700}
.cal-view-toggle{display:flex;gap:8px;align-items:center}

.cal-filterbar{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:10px;padding:14px 28px}
.cal-filter-groups{display:flex;flex-wrap:wrap;gap:6px}
.cal-filter-btn{background:transparent;border:1px solid var(--border);border-radius:6px;padding:5px 11px;color:var(--text-dim);font-family:'DM Sans',sans-serif;font-size:12px;cursor:pointer;transition:all .15s;display:inline-flex;align-items:center;gap:6px}
.cal-filter-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}
.cal-filter-btn:hover{border-color:var(--border2);color:var(--text)}
.cal-filter-btn.active{background:var(--accent-dim);border-color:var(--accent);color:var(--accent)}
.cal-filter-selects{display:flex;gap:8px}
.cal-filter-selects select{background:var(--surface2);border:1px solid var(--border);border-radius:6px;padding:5px 10px;color:var(--text);font-size:12px;font-family:'DM Sans',sans-serif}
.cal-filter-selects select:disabled{opacity:.4;cursor:not-allowed}

.cal-rail{display:flex;gap:20px;flex-wrap:wrap;align-items:flex-start;padding:0 28px 14px}
.cal-rail-group{flex:1;min-width:220px;background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:12px 14px}
.cal-rail-group summary{font-size:11px;text-transform:uppercase;letter-spacing:.6px;color:var(--text-muted);font-weight:500;cursor:pointer;list-style:none}
.cal-rail-group summary::-webkit-details-marker{display:none}
.cal-rail-group summary::before{content:'▸ ';font-size:9px}
.cal-rail-group[open] summary::before{content:'▾ '}
.cal-rail-group[open] summary{margin-bottom:8px}
.cal-rail-overdue{border-color:rgba(248,113,113,.35)}
.cal-rail-overdue summary{color:var(--danger)}

/* --cal-rim is set inline per pill (calTypeColour, keyed by task_type's coarse
   group) — a pure category signal, deliberately separate from the urgency/
   backorder colouring below, which owns text colour and (for backorder) its
   own higher-specificity border override. */
.cal-pill{display:flex;align-items:center;gap:6px;padding:4px 8px;border-radius:6px;font-size:12px;margin-bottom:4px;background:var(--surface2);border:1px solid var(--cal-rim,transparent);cursor:default;min-width:0;max-width:100%}
.cal-pill.cal-marker{cursor:pointer;color:var(--text-dim)}
.cal-pill.cal-marker:hover{background:var(--surface3)}
/* Set Release Date is a big event and needs to be very obvious (13/07/2026) — bold + thicker
   rim for the set's own op_release/mass_release markers. Per-product release markers (both
   plain non-set products and the rare set_product whose own date differs from its set's) are
   deliberately the opposite: subordinate, not competing with the set-level marker for attention.
   Neither overrides text colour, so cal-overdue/cal-soon/cal-past below still apply normally. */
.cal-pill.cal-release-major{font-weight:700;border-width:2px;padding:5px 9px}
.cal-pill.cal-release-minor{opacity:.72;font-size:11px;padding:2px 6px}
.cal-pill-label{cursor:pointer;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0}
.cal-pill.cal-done .cal-pill-label{color:var(--text-muted);text-decoration:line-through}
.cal-check{flex-shrink:0;width:14px;height:14px;cursor:pointer;accent-color:var(--accent)}
.cal-check-auto{display:inline-flex;align-items:center;justify-content:center;width:14px;height:14px;font-size:11px;color:var(--success);cursor:default}
.cal-pill.cal-overdue,.cal-pill.cal-urgent{color:var(--danger)}
.cal-pill.cal-soon{color:var(--warn)}
.cal-pill.cal-past{color:var(--text-muted)}
/* Distinct from plain cal-overdue — a backorder-driven payment is a decision
   (receive it, or cancel with the distributor), not just "hasn't arrived yet" */
.cal-pill.cal-payment-backorder{color:#f97316;border:1px solid rgba(249,115,22,.35)}

.cal-month,.cal-week{padding:0 28px 28px}
.cal-month-nav{display:flex;align-items:center;justify-content:center;gap:16px;margin-bottom:14px;font-size:13.5px;font-weight:600;color:var(--text)}
.cal-month-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:6px}
.cal-weekday-hdr{font-size:10.5px;text-transform:uppercase;letter-spacing:.6px;color:var(--text-muted);text-align:center;padding-bottom:4px}
/* min-width:0 is load-bearing here — grid items default to min-width:auto, so a
   single long unbreakable pill label (a product name, an approval title) would
   otherwise force its whole column wider than its 1fr share, stretching the
   grid unevenly and making every other column's text unreadable by comparison. */
.cal-day{background:var(--surface);border:1px solid var(--border);border-radius:8px;padding:6px;min-height:92px;min-width:0;overflow:hidden;display:flex;flex-direction:column;gap:3px}
.cal-day-dim{opacity:.4}
.cal-day-today{border-color:var(--accent)}
.cal-day-num{font-size:11.5px;color:var(--text-muted);font-family:'DM Mono',monospace;margin-bottom:2px}
.cal-day-more{font-size:10.5px;color:var(--accent);cursor:pointer;margin-top:auto}

.cal-week-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:6px;align-items:start}
.cal-week-day{min-width:0;background:var(--surface);border:1px solid var(--border);border-radius:8px;padding:10px 8px;overflow:hidden}
.cal-week-day.cal-day-today{border-color:var(--accent)}
.cal-week-day-hdr{font-size:11.5px;font-weight:600;color:var(--text-dim);margin-bottom:6px}
.cal-week-day-empty{font-size:12px;color:var(--text-muted);font-style:italic}
.cal-rail-empty{font-size:12px;color:var(--text-muted);font-style:italic;padding:6px 2px}

.cal-toast{position:fixed;bottom:22px;right:22px;background:var(--surface);border:1px solid var(--border);border-radius:8px;padding:10px 16px;font-size:12.5px;z-index:600;opacity:0;transform:translateY(10px);transition:opacity .2s,transform .2s;pointer-events:none}
.cal-toast.show{opacity:1;transform:translateY(0)}
.cal-toast.err{border-color:rgba(248,113,113,.4);color:var(--danger)}
