dialog.modal{border:none;padding:1.25rem;box-shadow:0 12px 40px #00000047;border-radius:12px;background:var(--card-bg, #fff);color:var(--text, #0f172a)}dialog.modal::backdrop{background:#00000073}dialog.modal:not([open]){display:none}dialog.modal[open]{display:block}.contracts-toolbar{display:flex;flex-direction:column;gap:.6rem;margin-bottom:1.25rem}.toolbar-top{display:flex;align-items:center;gap:.75rem}.toolbar-top h1{margin:0;flex:1;font-size:clamp(1.1rem,3vw,1.5rem)}.toolbar-actions{display:flex;gap:.5rem;align-items:center;flex-shrink:0}.toolbar-filters{display:flex;gap:.5rem;flex-wrap:wrap;align-items:center}.contracts-summary{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:1rem;margin-bottom:1.25rem}.summary-card{background:var(--card-bg, #fff);border:1px solid var(--border, #e2e8f0);border-radius:8px;padding:.85rem 1rem;text-align:center}.summary-card .s-val{font-size:1.5rem;font-weight:700;color:var(--text, #0f172a)}.summary-card .s-lbl{font-size:.75rem;color:var(--muted, #64748b);text-transform:uppercase;letter-spacing:.4px;margin-top:2px}.summary-card.warn .s-val{color:#d97706}.summary-card.danger .s-val{color:#dc2626}.badge{display:inline-block;padding:3px 9px;border-radius:99px;font-size:.78rem;font-weight:600;white-space:nowrap}.badge-active{background:#dcfce7;color:#15803d}.badge-soon{background:#fef3c7;color:#92400e}.badge-expired{background:#fee2e2;color:#991b1b}.badge-cancelled{background:#f1f5f9;color:#64748b}.badge-type{display:inline-block;padding:2px 7px;border-radius:4px;font-size:.75rem;background:#e0f2fe;color:#0369a1;white-space:nowrap}.days-remaining{font-weight:600}.days-remaining.soon{color:#d97706}.days-remaining.expired{color:#dc2626}.cost-period{font-size:.75rem;color:var(--muted, #64748b);font-weight:400}#contractModal[open]{overflow:hidden}.modal-scroll-body{max-height:calc(min(760px,90vh) - 210px);overflow-y:auto;scrollbar-width:thin;scrollbar-color:rgba(148,163,184,.35) transparent}.modal-scroll-body::-webkit-scrollbar{width:4px}.modal-scroll-body::-webkit-scrollbar-track{background:transparent}.modal-scroll-body::-webkit-scrollbar-thumb{background:#94a3b859;border-radius:99px}.modal-scroll-body::-webkit-scrollbar-thumb:hover{background:#94a3b8b3}#contractModal .form-grid{display:grid;grid-template-columns:1fr 1fr;gap:.5rem 1rem}#contractModal .form-grid .span2{grid-column:span 2}#contractModal label{display:flex;flex-direction:column;gap:3px;font-size:.9rem;font-weight:500}#contractModal input,#contractModal select,#contractModal textarea{padding:.35rem .5rem;border:1px solid var(--border, #cbd5e1);border-radius:6px;font-size:.95rem;background:var(--input-bg, #fff);color:var(--text, #0f172a)}#contractModal textarea{resize:vertical;min-height:56px}.notif-days-row{display:flex;flex-wrap:wrap;gap:.5rem;margin-top:4px}.notif-day-pill{display:inline-flex;align-items:center;gap:5px;background:#f1f5f9;padding:3px 10px;border-radius:99px;font-size:.85rem;cursor:pointer;user-select:none}.notif-day-pill input{margin:0}#contractSettingsModal .form-grid{display:grid;gap:1rem}#contractSettingsModal .notif-days-row{margin-top:.5rem}#contractsTable.compact{width:100%;border-collapse:separate;border-spacing:0}#contractsTable.compact th{position:sticky;top:0;background:var(--table-head, #f1f5f9);z-index:10;text-align:left;padding:.75rem 1rem;font-size:.8rem;font-weight:700;color:var(--muted, #64748b);text-transform:uppercase;letter-spacing:.5px;border-bottom:2px solid var(--border, #e2e8f0);white-space:nowrap}#contractsTable.compact td{padding:.75rem 1rem;border-bottom:1px solid var(--border, #f1f5f9);vertical-align:middle;font-size:.92rem}#contractsTable.compact tr:last-child td{border-bottom:none}#contractsTable.compact tbody tr:hover td{background:var(--hover, #f8fafc);cursor:pointer}#contractsTable.compact .col-name{min-width:180px}#contractsTable.compact .col-cost{text-align:right;font-variant-numeric:tabular-nums}.contract-name{font-weight:600;color:var(--text, #0f172a)}.contract-ref{font-size:.78rem;color:var(--muted, #94a3b8);margin-top:1px}tr.contract-cancelled td{opacity:.5}#contractModal input:disabled,#contractModal select:disabled,#contractModal textarea:disabled{background:var(--surface, #f8fafc);color:var(--text, #0f172a);cursor:default;opacity:.85}@media(max-width:640px){#contractModal .form-grid{grid-template-columns:1fr}#contractModal .form-grid .span2{grid-column:span 1}}.toolbar-more{position:relative}.toolbar-more>summary{list-style:none;cursor:pointer}.toolbar-more>summary::-webkit-details-marker{display:none}.toolbar-more-menu{position:absolute;right:0;top:calc(100% + 6px);background:#fff;border:1px solid #e2e8f0;border-radius:8px;box-shadow:0 4px 16px #0000001f;z-index:200;min-width:200px;overflow:hidden}.toolbar-more-menu button{display:block;width:100%;padding:.6rem 1rem;text-align:left;background:none;border:none;border-bottom:1px solid #f1f5f9;cursor:pointer;font-size:.88rem;color:#374151;line-height:1.4}.toolbar-more-menu button:last-child{border-bottom:none}.toolbar-more-menu button:hover{background:#f8fafc}html.dark-mode .toolbar-more-menu{background:#1e293b;border-color:#334155}html.dark-mode .toolbar-more-menu button{color:#e2e8f0;border-color:#334155}html.dark-mode .toolbar-more-menu button:hover{background:#0f172a}.modal-tabs{display:flex;border-bottom:2px solid var(--border, #e2e8f0);margin-bottom:1rem;gap:0}.modal-tab-btn{padding:.45rem 1rem;border:none;border-bottom:2px solid transparent;background:none;cursor:pointer;font-size:.88rem;font-weight:500;color:var(--muted, #64748b);margin-bottom:-2px;transition:color .15s,border-color .15s;white-space:nowrap}.modal-tab-btn:hover{color:#0f172a}.modal-tab-btn.active{color:var(--primary, #0ea5e9);border-bottom-color:var(--primary, #0ea5e9)}.modal-tab-panel{display:none;padding:.25rem 0}.modal-tab-panel.active{display:block}.audit-list--full{max-height:none;min-height:80px}.notice-date-info{padding:.5rem .75rem;border-radius:6px;font-size:.85rem;font-weight:500;line-height:1.4}.notice-date-info.notice-ok{background:#dcfce7;color:#15803d}.notice-date-info.notice-soon{background:#fef3c7;color:#92400e}.notice-date-info.notice-expired{background:#fee2e2;color:#991b1b}th.sortable{cursor:pointer;user-select:none}th.sortable:after{content:" ↕";opacity:.3;font-size:.8em}th.sort-asc:after{content:" ↑";opacity:1}th.sort-desc:after{content:" ↓";opacity:1}.doc-link{text-decoration:none;margin-left:4px;font-size:.9em}.doc-link:hover{opacity:.7}.audit-section{border-top:1px solid var(--border, #e2e8f0);padding-top:.75rem;margin-top:.75rem}.audit-section summary{cursor:pointer;font-weight:600;font-size:.88rem;color:var(--muted, #64748b);padding:.25rem 0}.audit-list{margin-top:.5rem;display:flex;flex-direction:column;gap:0;max-height:220px;overflow-y:auto}.audit-entry{display:grid;grid-template-columns:120px auto 1fr;gap:.25rem .75rem;font-size:.82rem;padding:.4rem 0;border-bottom:1px solid var(--border, #f1f5f9);align-items:baseline}.audit-entry:last-child{border-bottom:none}.audit-ts{color:var(--muted, #94a3b8);white-space:nowrap;font-size:.78rem}.audit-action{font-weight:600}.audit-user{color:var(--muted, #64748b);font-size:.78rem;justify-self:end}.audit-desc{grid-column:1 / -1;color:var(--muted, #64748b);padding-left:0;font-size:.8rem}.contracts-mobile-cards{display:none}.mobile-contract-card{background:var(--card-bg, #fff);border:1px solid var(--border, #e2e8f0);border-radius:10px;padding:.85rem 1rem;cursor:pointer;transition:box-shadow .15s}.mobile-contract-card:hover{box-shadow:0 2px 8px #0000001a}.mobile-card-top{display:flex;justify-content:space-between;align-items:flex-start;gap:.5rem;margin-bottom:.4rem}.mobile-card-meta{display:flex;gap:.5rem;flex-wrap:wrap;margin-bottom:.4rem;font-size:.85rem;color:var(--muted, #64748b)}.mobile-card-footer{display:flex;justify-content:space-between;font-size:.82rem;color:var(--muted, #64748b)}@media(max-width:640px){.table-scroll{display:none}.contracts-mobile-cards{display:flex;flex-direction:column;gap:.6rem}}.active-filters{display:flex;flex-wrap:wrap;gap:.4rem;margin-bottom:.75rem}.filter-chip{display:inline-flex;align-items:center;gap:5px;background:#e0f2fe;color:#0369a1;border-radius:99px;padding:3px 10px 3px 12px;font-size:.8rem;font-weight:500}.chip-clear{background:none;border:none;cursor:pointer;color:#0369a1;font-size:1rem;line-height:1;padding:0 2px;opacity:.7}.chip-clear:hover{opacity:1}html.dark-mode .filter-chip{background:#0c4a6e;color:#7dd3fc}html.dark-mode .chip-clear{color:#7dd3fc}.button.active{background:var(--primary, #0ea5e9);border-color:var(--primary, #0ea5e9);color:#fff}.auto-renew-warning{font-size:.72rem;color:#d97706;font-weight:600;margin-top:3px}.btn-inline-renew{display:inline-flex;align-items:center;background:none;border:1px solid var(--border, #e2e8f0);border-radius:4px;cursor:pointer;font-size:.72rem;padding:1px 6px;margin-top:4px;color:var(--muted, #64748b);white-space:nowrap}.btn-inline-renew:hover{background:var(--hover, #f1f5f9);color:var(--primary, #0ea5e9);border-color:var(--primary, #0ea5e9)}html.dark-mode .btn-inline-renew{border-color:#334155;color:#94a3b8}html.dark-mode .btn-inline-renew:hover{background:#1e293b;color:#7dd3fc;border-color:#7dd3fc}.col-check{width:36px;padding:.75rem .5rem!important;text-align:center}.bulk-bar{display:flex;align-items:center;gap:.75rem;background:var(--primary, #0ea5e9);color:#fff;padding:.55rem 1rem;border-radius:8px;margin-bottom:1rem;flex-wrap:wrap}.bulk-count{font-weight:600;font-size:.9rem}.bulk-bar .button{background:#fff3;border-color:#ffffff59;color:#fff}.bulk-bar .button:hover{background:#ffffff59}.bulk-bar .button.danger{background:#dc2626bf;border-color:#b91c1ce6}.button.small{padding:.3rem .7rem;font-size:.82rem}.pagination-bar{display:flex;align-items:center;gap:.75rem;padding:.65rem 0;flex-wrap:wrap}.pagination-info{font-size:.85rem;color:var(--muted, #64748b)}.pagination-controls{display:flex;align-items:center;gap:.4rem}.page-indicator{font-size:.85rem;min-width:55px;text-align:center;color:var(--text, #0f172a)}.type-pill{display:inline-flex;align-items:center;gap:4px;background:#f1f5f9;border:1px solid var(--border, #e2e8f0);border-radius:99px;padding:3px 10px;font-size:.85rem}.type-pill-del{background:none;border:none;cursor:pointer;color:var(--muted, #94a3b8);font-size:1.1rem;line-height:1;padding:0 2px}.type-pill-del:hover{color:#dc2626}@media(max-width:1024px){.toolbar-actions .button,.toolbar-filters .input,.toolbar-filters .search-input{min-height:44px}.col-check{width:44px}.pagination-controls .button{min-height:44px;min-width:44px}.bulk-bar .button{min-height:40px}.modal-tab-btn{padding:.55rem 1rem;min-height:44px}}@media(max-width:640px){#filterOwner,#groupBySelect{display:none!important}}@media print{#app-header,.contracts-toolbar,.contracts-summary,#contractsMobileCards,.pagination-bar,.bulk-bar{display:none!important}.card{box-shadow:none!important;border:none!important}#contractsTable.compact th,#contractsTable.compact td{font-size:.78rem;padding:.35rem .6rem}#contractsTable .col-check{display:none!important}}html.dark-mode .summary-card{background:#1e293b;border-color:#334155}html.dark-mode .summary-card .s-val{color:#f1f5f9}html.dark-mode .summary-card .s-lbl{color:#94a3b8}html.dark-mode .summary-card.warn .s-val{color:#fbbf24}html.dark-mode .summary-card.danger .s-val{color:#f87171}html.dark-mode dialog.modal{background:#1e293b;color:#f1f5f9}html.dark-mode dialog.modal::backdrop{background:#0009}html.dark-mode .card{background:#1e293b}html.dark-mode #contractsTable.compact th{background:#0f172a;color:#94a3b8;border-color:#334155}html.dark-mode #contractsTable.compact td{color:#e2e8f0;border-color:#334155}html.dark-mode #contractsTable.compact tbody tr:hover td{background:#162032}html.dark-mode #contractModal input,html.dark-mode #contractModal select,html.dark-mode #contractModal textarea{background:#0f172a;border-color:#334155;color:#f1f5f9}html.dark-mode #contractModal input:disabled,html.dark-mode #contractModal select:disabled,html.dark-mode #contractModal textarea:disabled{background:#162032;color:#94a3b8}html.dark-mode #renewModal input{background:#0f172a;border-color:#334155;color:#f1f5f9}html.dark-mode .notif-day-pill{background:#334155;color:#f1f5f9}html.dark-mode .contract-name{color:#f1f5f9}html.dark-mode .contract-ref{color:#64748b}html.dark-mode .badge-active{background:#14532d;color:#86efac}html.dark-mode .badge-soon{background:#713f12;color:#fde68a}html.dark-mode .badge-expired{background:#7f1d1d;color:#fca5a5}html.dark-mode .badge-cancelled{background:#1e293b;color:#94a3b8;border:1px solid #334155}html.dark-mode .badge-type{background:#0c4a6e;color:#7dd3fc}html.dark-mode .audit-entry,html.dark-mode .audit-section{border-color:#334155}html.dark-mode .mobile-contract-card{background:#1e293b;border-color:#334155}html.dark-mode .mobile-contract-card:hover{box-shadow:0 2px 8px #0006}html.dark-mode #contractsTable.compact th.sort-asc:after,html.dark-mode #contractsTable.compact th.sort-desc:after{opacity:1;color:#7dd3fc}html.dark-mode .modal-tabs{border-color:#334155}html.dark-mode .modal-tab-btn{color:#64748b}html.dark-mode .modal-tab-btn:hover{color:#e2e8f0}html.dark-mode .modal-tab-btn.active{color:#38bdf8;border-bottom-color:#38bdf8}html.dark-mode .notice-date-info.notice-ok{background:#14532d;color:#86efac}html.dark-mode .notice-date-info.notice-soon{background:#713f12;color:#fde68a}html.dark-mode .notice-date-info.notice-expired{background:#7f1d1d;color:#fca5a5}html.dark-mode .type-pill{background:#334155;border-color:#475569;color:#e2e8f0}html.dark-mode .type-pill-del:hover{color:#f87171}html.dark-mode .page-indicator{color:#e2e8f0}html.dark-mode .pagination-info{color:#94a3b8}html.dark-mode #csNewType{background:#0f172a;border-color:#334155;color:#f1f5f9}html.dark-mode .group-header td{background:#0f172a;border-top-color:#38bdf8;border-bottom-color:#334155}html.dark-mode .group-name{color:#38bdf8}html.dark-mode .group-count{background:#38bdf8;color:#0f172a}html.dark-mode #bulkRenewModal input{background:#0f172a;border-color:#334155;color:#f1f5f9}.mobile-card-owner{font-size:.78rem;color:var(--muted, #64748b)}.form-section{margin-top:1rem;padding-top:.75rem;border-top:1px solid var(--border, #e2e8f0)}.form-section:first-child{margin-top:0;padding-top:0;border-top:none}.form-section-title{font-size:.72rem;font-weight:700;letter-spacing:.07em;text-transform:uppercase;color:var(--primary, #0ea5e9);margin-bottom:.6rem}html.dark-mode .form-section{border-color:#334155}html.dark-mode .form-section-title{color:#38bdf8}.checks-row{display:flex;gap:1.5rem;align-items:center;padding:.2rem 0}.check-label{display:flex;align-items:center;gap:7px;font-weight:400;font-size:.9rem;cursor:pointer}.filter-info{font-size:.82rem;color:var(--muted, #64748b);padding:.2rem 0;margin-bottom:.25rem}html.dark-mode .filter-info{color:#94a3b8}.duration-info{font-size:.82rem;color:var(--primary, #0ea5e9);font-weight:500;padding:.15rem 0}html.dark-mode .duration-info{color:#38bdf8}.modal-tab-btn.has-custom-notif{position:relative}.modal-tab-btn.has-custom-notif:after{content:"";position:absolute;top:4px;right:4px;width:6px;height:6px;border-radius:50%;background:var(--primary, #0ea5e9)}.expiry-banner{display:flex;align-items:center;flex-wrap:wrap;gap:.5rem;background:#fff7ed;border:1px solid #fed7aa;border-radius:8px;padding:.55rem .9rem;margin-bottom:.75rem;font-size:.85rem;color:#9a3412}.eb-icon{font-size:1rem;flex-shrink:0}.eb-msg{font-weight:600;flex-shrink:0}.eb-list{display:flex;flex-wrap:wrap;gap:.4rem .75rem}.eb-item{white-space:nowrap}.eb-item strong{color:#c2410c}html.dark-mode .expiry-banner{background:#431407;border-color:#9a3412;color:#fed7aa}html.dark-mode .eb-item strong{color:#fb923c}tr.group-header td{background:#f8fafc;padding:.45rem .85rem;border-top:2px solid var(--primary, #0ea5e9);border-bottom:1px solid var(--border, #e2e8f0)}.group-name{font-weight:700;font-size:.8rem;letter-spacing:.06em;text-transform:uppercase;color:var(--primary, #0ea5e9);margin-right:.5rem}.group-count{display:inline-flex;align-items:center;justify-content:center;background:var(--primary, #0ea5e9);color:#fff;border-radius:99px;font-size:.7rem;font-weight:600;padding:1px 7px;vertical-align:middle}.owner-tag{display:inline-flex;align-items:center;gap:3px;font-size:.75rem;color:var(--muted, #64748b);margin-top:2px}html.dark-mode .owner-tag{color:#94a3b8}.auto-renew-tag{font-size:.8em;vertical-align:middle;opacity:.7;cursor:default}.badge-clickable{cursor:pointer;transition:filter .15s}.badge-clickable:hover{filter:brightness(.88)}.contract-timeline-wrap{background:#fff;border:1px solid #e2e8f0;border-radius:12px;padding:1rem;margin-bottom:1rem;overflow-x:auto}.ct-container{min-width:700px}.ct-header-row{display:flex;align-items:flex-end;margin-bottom:.25rem}.ct-label-head{width:170px;flex-shrink:0}.ct-months-wrap{flex:1;position:relative;height:1.4rem}.ct-months{position:relative;height:100%}.ct-month{position:absolute;font-size:.68rem;color:#94a3b8;white-space:nowrap;transform:translate(-50%);top:0}.ct-rows{display:flex;flex-direction:column;gap:4px}.ct-row{display:flex;align-items:center;cursor:pointer}.ct-row:hover .ct-bar{filter:brightness(.88)}.ct-label{width:170px;flex-shrink:0;font-size:.8rem;color:#334155;padding-right:.5rem;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.ct-track{flex:1;height:22px;background:#f1f5f9;border-radius:4px;position:relative;overflow:visible}.ct-bar{position:absolute;height:100%;border-radius:4px;min-width:4px;transition:filter .15s;opacity:.85}.ct-bar-open{opacity:.55;border-right:3px dashed #94a3b8;border-radius:4px 0 0 4px}.ct-today-line{position:absolute;top:-4px;bottom:-4px;width:2px;background:#6366f1;z-index:2;pointer-events:none}.ct-today-line:before{content:"vandaag";position:absolute;top:-16px;left:50%;transform:translate(-50%);font-size:.6rem;color:#6366f1;white-space:nowrap;font-weight:700}html.dark-mode .contract-timeline-wrap{background:#1e293b;border-color:#334155}html.dark-mode .ct-track{background:#334155}html.dark-mode .ct-label{color:#94a3b8}html.dark-mode .ct-month{color:#64748b}
