.login-page{min-height:100vh;display:flex;flex-direction:column;background:linear-gradient(135deg,#1a0505,#3d0d0d,#2d0808);position:relative;overflow:hidden}.login-page:before,.login-page:after{content:"";position:absolute;border-radius:50%;border:1px solid rgba(169,18,18,.12);pointer-events:none}.login-page:before{width:600px;height:600px;top:-150px;left:-150px}.login-page:after{width:500px;height:500px;bottom:-100px;right:-100px}.login-content{flex:1;display:flex;align-items:center;justify-content:center;padding:2rem}.login-card{background:#fff;border-radius:20px;box-shadow:0 25px 60px #0006,0 0 0 1px #ffffff0d;padding:3rem 2.5rem 2.5rem;width:100%;max-width:420px;position:relative;z-index:1}.brand{display:flex;flex-direction:column;align-items:center;gap:.75rem;margin-bottom:2.25rem}.brand-icon{width:64px;height:64px;background:linear-gradient(135deg,#8a0e0e,#a91212);border-radius:16px;display:flex;align-items:center;justify-content:center;box-shadow:0 8px 20px #a9121259}.brand-icon svg{width:36px;height:36px;color:#fff}.brand-name{font-size:2rem;font-weight:800;color:#0f172a;letter-spacing:-.5px}.brand-name span{color:#a91212}.brand-tagline{font-size:.875rem;color:#64748b;letter-spacing:.01em}.divider{height:1px;background:#e2e8f0;margin-bottom:2rem}.login-form{display:flex;flex-direction:column;gap:1.25rem}.form-group{display:flex;flex-direction:column;gap:.4rem}.form-group label{font-size:.8125rem;font-weight:600;color:#374151;letter-spacing:.02em;text-transform:uppercase}.input-wrapper{position:relative;display:flex;align-items:center}.input-icon{position:absolute;left:.875rem;width:18px;height:18px;color:#94a3b8;pointer-events:none;flex-shrink:0}.form-group input{width:100%;padding:.75rem 1rem .75rem 2.75rem;border:1.5px solid #e2e8f0;border-radius:10px;font-size:.9375rem;color:#0f172a;background:#f8fafc;transition:border-color .15s,box-shadow .15s,background .15s;outline:none}.form-group input:focus{border-color:#a91212;background:#fff;box-shadow:0 0 0 3px #a912121f}.form-group input::placeholder{color:#cbd5e1}.input-with-toggle{padding-right:2.75rem!important}.pw-toggle{position:absolute;right:.875rem;background:none;border:none;padding:0;cursor:pointer;display:flex;align-items:center;color:#94a3b8;transition:color .15s;line-height:0}.pw-toggle svg{width:18px;height:18px}.pw-toggle:hover{color:#a91212}.forgot-link{align-self:flex-end;background:none;border:none;padding:0;font-size:.8rem;color:#a91212;cursor:pointer;margin-top:.2rem;transition:color .15s}.forgot-link:hover{color:#8a0e0e;text-decoration:underline}.back-link{display:inline-flex;align-items:center;gap:.375rem;background:none;border:none;padding:0;font-size:.8125rem;font-weight:500;color:#64748b;cursor:pointer;margin-bottom:.5rem;transition:color .15s}.back-link svg{width:15px;height:15px}.back-link:hover{color:#0f172a}.forgot-intro{margin-bottom:.25rem}.forgot-title{font-size:1rem;font-weight:700;color:#0f172a;margin-bottom:.375rem}.forgot-subtitle{font-size:.8375rem;color:#64748b;line-height:1.5}.forgot-sent{display:flex;flex-direction:column;align-items:center;gap:.75rem;text-align:center}.forgot-sent-icon{width:52px;height:52px;border-radius:50%;background:#dcfce7;color:#16a34a;font-size:1.5rem;font-weight:700;display:flex;align-items:center;justify-content:center;margin-bottom:.25rem}.forgot-sent .forgot-subtitle{max-width:300px}.forgot-sent .login-button{width:100%;margin-top:.75rem}.login-error{font-size:.8125rem;color:#ef4444;background:#fef2f2;border:1px solid #fecaca;border-radius:8px;padding:.5rem .875rem;margin-top:-.25rem}.login-button{margin-top:.5rem;padding:.875rem 1rem;background:linear-gradient(135deg,#8a0e0e,#a91212);color:#fff;border:none;border-radius:10px;font-size:.9375rem;font-weight:600;cursor:pointer;letter-spacing:.02em;transition:opacity .15s,transform .1s,box-shadow .15s;box-shadow:0 4px 14px #a9121259}.login-button:hover{opacity:.92;transform:translateY(-1px);box-shadow:0 6px 20px #a9121273}.login-button:active{transform:translateY(0);opacity:1}.login-footer{text-align:center;padding:1.25rem;font-size:.75rem;color:#94a3b8b3;position:relative;z-index:1}.sidebar{width:240px;flex-shrink:0;background:#0f172a;display:flex;flex-direction:column;overflow:hidden}.sidebar-brand{display:flex;align-items:center;gap:.625rem;padding:1.25rem 1.25rem 1rem;border-bottom:1px solid rgba(255,255,255,.07)}.sidebar-brand-icon{width:32px;height:32px;background:linear-gradient(135deg,#8a0e0e,#a91212);border-radius:8px;display:flex;align-items:center;justify-content:center;flex-shrink:0}.sidebar-brand-icon svg{width:18px;height:18px;color:#fff}.sidebar-brand-name{font-size:1.125rem;font-weight:800;color:#f8fafc;letter-spacing:-.3px}.sidebar-brand-name span{color:#a91212}.sidebar-nav{flex:1;padding:.75rem;display:flex;flex-direction:column;gap:2px;overflow-y:auto}.sidebar-section-label{font-size:.65rem;font-weight:600;text-transform:uppercase;letter-spacing:.08em;color:#475569;padding:.75rem .5rem .25rem}.nav-item{display:flex;align-items:center;gap:.75rem;width:100%;padding:.6rem .75rem;border:none;border-radius:8px;background:transparent;color:#94a3b8;font-size:.875rem;font-weight:500;cursor:pointer;text-align:left;transition:background .12s,color .12s}.nav-item svg{width:18px;height:18px;flex-shrink:0}.nav-item:hover{background:#ffffff0f;color:#e2e8f0}.nav-item.active{background:#a9121226;color:#e57373}.nav-item.active svg{color:#a91212}.nav-subitem{padding-left:2.375rem;font-size:.8125rem}.nav-subitem svg{width:15px;height:15px}.nav-divider{height:1px;background:#ffffff12;margin:.5rem}.sidebar-user{padding:.875rem 1rem;border-top:1px solid rgba(255,255,255,.07);display:flex;align-items:center;gap:.75rem}.user-avatar{width:34px;height:34px;border-radius:50%;background:linear-gradient(135deg,#8a0e0e,#a91212);display:flex;align-items:center;justify-content:center;font-size:.875rem;font-weight:700;color:#fff;flex-shrink:0;overflow:hidden}.user-avatar-img{width:100%;height:100%;object-fit:cover;border-radius:50%}.user-meta{flex:1;min-width:0}.user-meta-name{font-size:.8125rem;font-weight:600;color:#e2e8f0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.user-meta-role{font-size:.7rem;color:#64748b;text-transform:capitalize}.crop-editor{display:flex;flex-direction:column;align-items:center;gap:1rem;padding:1.25rem 1rem .75rem}.crop-hint{font-size:.75rem;color:#94a3b8;margin:0;text-align:center}.crop-box{position:relative;width:280px;height:280px;border-radius:8px;overflow:hidden;background:#0f172a;cursor:grab;touch-action:none;-webkit-user-select:none;user-select:none}.crop-box:active{cursor:grabbing}.crop-overlay-svg{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;pointer-events:none}.crop-zoom-row{display:flex;align-items:center;gap:.625rem;width:280px}.crop-zoom-icon{font-size:1.125rem;font-weight:700;color:#64748b;line-height:1;width:16px;text-align:center;-webkit-user-select:none;user-select:none}.crop-zoom-slider{flex:1;-webkit-appearance:none;-moz-appearance:none;appearance:none;height:4px;border-radius:2px;background:#e2e8f0;outline:none;cursor:pointer}.crop-zoom-slider::-webkit-slider-thumb{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:16px;height:16px;border-radius:50%;background:#a91212;cursor:pointer;box-shadow:0 1px 4px #a9121266;transition:box-shadow .12s}.crop-zoom-slider::-webkit-slider-thumb:hover{box-shadow:0 1px 8px #a9121299}.crop-zoom-slider::-moz-range-thumb{width:16px;height:16px;border-radius:50%;background:#a91212;cursor:pointer;border:none;box-shadow:0 1px 4px #a9121266}.crop-actions{display:flex;gap:.625rem;width:280px;justify-content:flex-end}.pref-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1000;display:flex;justify-content:flex-end;align-items:flex-start;padding:58px 1rem 0}.pref-modal{width:340px;background:#fff;border:1px solid #e2e8f0;border-radius:12px;box-shadow:0 8px 32px #0000001f,0 2px 8px #0000000f;overflow:hidden;animation:pref-slide-in .15s ease-out}@keyframes pref-slide-in{0%{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:translateY(0)}}.pref-header{display:flex;align-items:center;justify-content:space-between;padding:.875rem 1rem .875rem 1.25rem;border-bottom:1px solid #f1f5f9}.pref-title{font-size:.9375rem;font-weight:700;color:#0f172a}.pref-close{width:28px;height:28px;border:none;border-radius:6px;background:transparent;color:#94a3b8;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background .1s,color .1s;padding:0}.pref-close svg{width:16px;height:16px}.pref-close:hover{background:#f1f5f9;color:#475569}.pref-body{padding:1.25rem;display:flex;flex-direction:column;gap:1.5rem}.pref-avatar-wrap{display:flex;align-items:center;gap:1rem}.pref-avatar{width:56px;height:56px;border-radius:50%;display:flex;align-items:center;justify-content:center;flex-shrink:0;overflow:hidden;box-shadow:0 2px 8px #00000026}.pref-avatar-img{width:100%;height:100%;object-fit:cover;border-radius:50%}.pref-avatar-initials{font-size:1.25rem;font-weight:700;color:#fff;line-height:1;-webkit-user-select:none;user-select:none}.pref-user-info{display:flex;flex-direction:column;gap:.2rem}.pref-user-name{font-size:.9375rem;font-weight:700;color:#0f172a}.pref-user-sub{font-size:.75rem;color:#94a3b8;font-weight:500}.pref-section{display:flex;flex-direction:column;gap:.625rem}.pref-section-label{font-size:.8125rem;font-weight:600;color:#334155;margin:0}.pref-section-hint{font-weight:400;color:#94a3b8}.pref-photo-actions{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap}.pref-file-input{display:none}.pref-swatches{display:flex;gap:.5rem;flex-wrap:wrap}.pref-color-preview{display:flex;align-items:center;gap:.625rem}.pref-color-preview-label{font-size:.75rem;color:#94a3b8;font-weight:500}.pref-color-preview-avatar{width:30px;height:30px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:.7rem;font-weight:700;color:#fff;-webkit-user-select:none;user-select:none;box-shadow:0 1px 4px #00000026}.app-header{height:58px;background:#fff;border-bottom:1px solid #e2e8f0;display:flex;align-items:center;justify-content:space-between;padding:0 1.5rem;flex-shrink:0;gap:1rem}.header-left{display:flex;align-items:center;gap:.5rem}.header-page-title{font-size:1rem;font-weight:600;color:#0f172a}.header-right{display:flex;align-items:center;gap:.75rem}.header-user{display:flex;align-items:center;gap:.625rem;padding:.375rem .75rem .375rem .5rem;border-radius:8px;background:#f8fafc;border:1px solid #e2e8f0}.header-user-btn{cursor:pointer;font:inherit;transition:background .1s,border-color .1s}.header-user-btn:hover{background:#f1f5f9;border-color:#cbd5e1}.header-avatar{width:28px;height:28px;border-radius:50%;background:linear-gradient(135deg,#8a0e0e,#a91212);display:flex;align-items:center;justify-content:center;font-size:.75rem;font-weight:700;color:#fff;flex-shrink:0;overflow:hidden}.header-avatar-img{width:100%;height:100%;object-fit:cover;border-radius:50%}.header-user-info{display:flex;flex-direction:column;line-height:1.2}.header-user-name{font-size:.8125rem;font-weight:600;color:#0f172a}.header-user-role{font-size:.7rem;color:#64748b;text-transform:capitalize}.header-role-badge{font-size:.65rem;font-weight:700;text-transform:uppercase;letter-spacing:.05em;padding:2px 6px;border-radius:4px;background:#a912121a;color:#a91212}.header-role-badge.admin{background:#ef44441a;color:#ef4444}.logout-button{display:flex;align-items:center;gap:.375rem;padding:.4rem .875rem;border:1.5px solid #e2e8f0;border-radius:8px;background:transparent;color:#64748b;font-size:.8125rem;font-weight:500;cursor:pointer;transition:border-color .12s,color .12s,background .12s}.logout-button svg{width:15px;height:15px}.logout-button:hover{border-color:#ef4444;color:#ef4444;background:#fef2f2}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}body{font-family:Segoe UI,system-ui,-apple-system,sans-serif}.app-layout{display:flex;height:100vh;overflow:hidden;background:#f1f5f9}.app-main{flex:1;display:flex;flex-direction:column;overflow:hidden;min-width:0}.app-content{flex:1;overflow-y:auto;padding:2rem}.app-footer{height:38px;background:#fff;border-top:1px solid #e2e8f0;display:flex;align-items:center;justify-content:space-between;padding:0 1.5rem;font-size:.725rem;color:#94a3b8;flex-shrink:0;gap:1rem}.footer-status{display:flex;align-items:center;gap:.4rem}.status-dot{width:7px;height:7px;border-radius:50%;background:#22c55e;display:inline-block;flex-shrink:0}.dashboard{display:flex;flex-direction:column;gap:1.5rem;max-width:1400px}.dashboard-header{display:flex;align-items:flex-end;justify-content:space-between}.dashboard-title{font-size:1.5rem;font-weight:700;color:#0f172a}.dashboard-date{font-size:.875rem;color:#64748b;margin-top:.125rem}.summary-cards{display:grid;grid-template-columns:repeat(3,1fr);gap:1rem}.summary-card{background:#fff;border-radius:12px;padding:1.25rem 1.5rem;border:1px solid #e2e8f0;display:flex;flex-direction:column;gap:.25rem;position:relative;overflow:hidden}.summary-card:before{content:"";position:absolute;top:0;left:0;right:0;height:3px;background:linear-gradient(90deg,#8a0e0e,#a91212)}.summary-card:nth-child(2):before{background:linear-gradient(90deg,#0f766e,#14b8a6)}.summary-card:nth-child(3):before{background:linear-gradient(90deg,#7c3aed,#a78bfa)}.summary-label{font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:#64748b}.summary-value{font-size:2rem;font-weight:800;color:#0f172a;line-height:1;margin:.25rem 0}.summary-sub{font-size:.75rem;color:#94a3b8}.dashboard-card{background:#fff;border-radius:12px;border:1px solid #e2e8f0;overflow:hidden}.card-header{display:flex;align-items:center;justify-content:space-between;padding:1.125rem 1.5rem;border-bottom:1px solid #f1f5f9;gap:1rem;flex-wrap:wrap}.card-title{font-size:.9375rem;font-weight:600;color:#0f172a}.entry-count{font-size:.8125rem;color:#64748b}.period-picker{display:flex;align-items:center;gap:.5rem;font-size:.8125rem;color:#64748b}.period-picker label{font-weight:500}.period-picker input[type=date]{padding:.35rem .625rem;border:1.5px solid #e2e8f0;border-radius:7px;font-size:.8125rem;color:#0f172a;background:#f8fafc;outline:none;cursor:pointer;transition:border-color .12s}.period-picker input[type=date]:focus{border-color:#a91212}.tracker-card{background:#fff;border:1px solid #e2e8f0;border-radius:12px;padding:1rem 1.5rem;display:flex;align-items:center;justify-content:space-between;gap:1rem}.tracker-left{display:flex;align-items:center;gap:1rem}.tracker-btn{width:46px;height:46px;border:none;border-radius:50%;cursor:pointer;display:flex;align-items:center;justify-content:center;flex-shrink:0;transition:transform .15s,box-shadow .15s}.tracker-btn svg{width:18px;height:18px}.tracker-play{background:#22c55e;color:#fff;box-shadow:0 4px 12px #22c55e59}.tracker-play:hover{transform:scale(1.07);box-shadow:0 6px 18px #22c55e73}.tracker-stop{background:#ef4444;color:#fff;box-shadow:0 4px 12px #ef444459}.tracker-stop:hover{transform:scale(1.07);box-shadow:0 6px 18px #ef444473}.tracker-info{display:flex;align-items:center}.tracker-label{font-size:.875rem;color:#475569;display:flex;align-items:center;gap:.5rem}.tracker-label strong{color:#0f172a}.tracker-pulse{width:8px;height:8px;border-radius:50%;background:#ef4444;display:inline-block;flex-shrink:0;animation:tracker-pulse 1.2s ease-in-out infinite}@keyframes tracker-pulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.4;transform:scale(.8)}}.tracker-restart{background:none;border:1.5px solid #e2e8f0;border-radius:6px;padding:2px 10px;font-size:.75rem;color:#64748b;cursor:pointer;transition:border-color .12s,color .12s}.tracker-restart:hover{border-color:#22c55e;color:#16a34a}.tracker-right{flex-shrink:0}.tracker-clock{font-size:1.875rem;font-weight:700;font-variant-numeric:tabular-nums;letter-spacing:.04em;color:#0f172a}.tracker-clock-running{color:#ef4444}.chart-wrapper{padding:1rem 1.5rem .5rem;overflow-x:auto}.chart-legend{display:flex;flex-wrap:wrap;gap:.375rem 1.25rem;padding:.25rem 1.5rem 1rem}.legend-item{display:flex;align-items:center;gap:.4rem;font-size:.75rem;color:#64748b}.legend-swatch{width:10px;height:10px;border-radius:2px;flex-shrink:0}.chart-tooltip{position:fixed;z-index:1000;background:#0f172a;color:#f1f5f9;border-radius:10px;padding:.75rem 1rem;pointer-events:none;box-shadow:0 8px 28px #0006;min-width:220px;max-width:300px;font-size:.8125rem;line-height:1.45}.tt-project{display:flex;align-items:center;gap:.5rem;margin-bottom:.25rem}.tt-swatch{width:10px;height:10px;border-radius:2px;flex-shrink:0}.tt-project strong{font-weight:700;color:#fff;font-size:.875rem}.tt-wp{color:#94a3b8;font-size:.775rem;margin-bottom:.375rem}.tt-time{font-variant-numeric:tabular-nums;color:#e2e8f0;border-top:1px solid rgba(255,255,255,.08);padding-top:.375rem;margin-top:.375rem}.tt-hours{color:#e57373;font-weight:600}.tt-desc{color:#94a3b8;font-size:.775rem;margin-top:.25rem;line-height:1.4}.time-table{width:100%;border-collapse:collapse;font-size:.8375rem}.time-table thead tr{background:#f8fafc;border-bottom:2px solid #e2e8f0}.time-table th{padding:.625rem 1rem;text-align:left;font-size:.725rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:#64748b;white-space:nowrap}.time-table tbody tr{border-bottom:1px solid #f1f5f9;transition:background .1s}.time-table tbody tr:hover{background:#f8fafc}.time-table tbody tr:last-child{border-bottom:none}.time-table td{padding:.625rem 1rem;color:#334155;vertical-align:middle}.col-date{white-space:nowrap;color:#0f172a;font-weight:500}.col-time{white-space:nowrap;font-variant-numeric:tabular-nums;color:#475569}.col-hours{white-space:nowrap;font-weight:700;font-variant-numeric:tabular-nums;color:#a91212;text-align:right;width:60px}.col-project{white-space:nowrap}.project-badge{display:inline-block;padding:2px 8px;border-radius:20px;font-size:.75rem;font-weight:600;background:#a912121a;color:#a91212;white-space:nowrap}.project-badge[data-project="Client Portal v2"]{background:#14b8a61a;color:#0f766e}.project-badge[data-project="Internal Tools Suite"]{background:#7c3aed1a;color:#6d28d9}.col-wp{color:#475569;white-space:nowrap}.col-desc{color:#64748b;max-width:320px}.no-entries{text-align:center;padding:2.5rem!important;color:#94a3b8;font-size:.875rem}.export-wrap{position:relative}.export-btn{display:flex;align-items:center;gap:.35rem;padding:.375rem .75rem;border:1.5px solid #e2e8f0;border-radius:8px;background:#fff;color:#475569;font-size:.8125rem;font-weight:500;cursor:pointer;transition:border-color .12s,color .12s,background .12s;white-space:nowrap}.export-btn:hover,.export-btn.open{border-color:#a91212;color:#8a0e0e;background:#fdf2f2}.export-btn-icon{width:14px;height:14px;flex-shrink:0}.export-chevron{width:13px;height:13px;flex-shrink:0;transition:transform .15s}.export-btn.open .export-chevron{transform:rotate(180deg)}.export-dropdown{position:absolute;top:calc(100% + 5px);right:0;background:#fff;border:1.5px solid #e2e8f0;border-radius:10px;box-shadow:0 8px 28px #0000001f;z-index:50;overflow:hidden;min-width:170px;padding:.3rem;display:flex;flex-direction:column;gap:1px}.export-option{display:flex;align-items:center;gap:.625rem;width:100%;padding:.55rem .75rem;border:none;background:transparent;border-radius:7px;cursor:pointer;text-align:left;transition:background .1s}.export-option:hover{background:#f8fafc}.export-option-icon{display:flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:7px;flex-shrink:0}.export-option-icon svg{width:15px;height:15px}.export-option-excel .export-option-icon{background:#f0fdf4;color:#16a34a}.export-option-excel:hover .export-option-icon{background:#dcfce7}.export-option-csv .export-option-icon{background:#fdf2f2;color:#a91212}.export-option-csv:hover .export-option-icon{background:#fee2e2}.export-option-pdf .export-option-icon{background:#fff1f2;color:#dc2626}.export-option-pdf:hover .export-option-icon{background:#fee2e2}.export-option-label{font-size:.8375rem;font-weight:600;color:#0f172a;flex:1}.export-option-ext{font-size:.725rem;color:#94a3b8;font-variant-numeric:tabular-nums}.list-toolbar-wrap{border-bottom:1px solid #f1f5f9}.list-toolbar{display:flex;align-items:center;gap:.625rem;padding:.75rem 1.25rem;flex-wrap:wrap}.search-box{display:flex;align-items:center;gap:.5rem;flex:1;min-width:180px;max-width:360px;background:#f8fafc;border:1.5px solid #e2e8f0;border-radius:8px;padding:.35rem .625rem;transition:border-color .12s}.search-box:focus-within{border-color:#a91212;background:#fff}.search-icon{width:15px;height:15px;color:#94a3b8;flex-shrink:0}.search-input{flex:1;border:none;background:transparent;font-size:.8125rem;color:#0f172a;outline:none;min-width:0}.search-input::placeholder{color:#94a3b8}.search-clear{display:flex;align-items:center;justify-content:center;border:none;background:none;cursor:pointer;color:#94a3b8;padding:0;transition:color .1s}.search-clear:hover{color:#475569}.search-clear svg{width:13px;height:13px}.toolbar-actions{display:flex;align-items:center;gap:.5rem;margin-left:auto}.filter-btn{display:flex;align-items:center;gap:.375rem;padding:.375rem .75rem;border:1.5px solid #e2e8f0;border-radius:8px;background:#fff;color:#475569;font-size:.8125rem;font-weight:500;cursor:pointer;transition:border-color .12s,color .12s,background .12s;white-space:nowrap}.filter-btn svg{width:14px;height:14px}.filter-btn:hover{border-color:#a91212;color:#8a0e0e}.filter-btn.open{border-color:#a91212;background:#a912120f;color:#8a0e0e}.filter-count{display:inline-flex;align-items:center;justify-content:center;min-width:18px;height:18px;padding:0 4px;background:#a91212;color:#fff;font-size:.7rem;font-weight:700;border-radius:99px}.filter-clear-btn{padding:.375rem .625rem;border:1.5px solid #fca5a5;border-radius:8px;background:#fff1f2;color:#dc2626;font-size:.775rem;font-weight:500;cursor:pointer;transition:background .1s;white-space:nowrap}.filter-clear-btn:hover{background:#fee2e2}.columns-btn{display:flex;align-items:center;justify-content:center;width:34px;height:34px;border:1.5px solid #e2e8f0;border-radius:8px;background:#fff;color:#475569;cursor:pointer;transition:border-color .12s,color .12s,background .12s;flex-shrink:0}.columns-btn svg{width:16px;height:16px}.columns-btn:hover{border-color:#a91212;color:#8a0e0e;background:#fdf2f2}.filter-panel{display:flex;flex-wrap:wrap;gap:.75rem;padding:.75rem 1.25rem;background:#f8fafc;border-bottom:1px solid #e2e8f0}.filter-field{display:flex;flex-direction:column;gap:.25rem;min-width:160px}.filter-label{font-size:.7rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:#64748b}.filter-select{padding:.3rem .625rem;border:1.5px solid #e2e8f0;border-radius:7px;background:#fff;font-size:.8125rem;color:#0f172a;outline:none;cursor:pointer;transition:border-color .12s}.filter-select:focus{border-color:#a91212}.list-page{display:flex;flex-direction:column;gap:1.5rem;max-width:1200px}.list-card{background:#fff;border-radius:12px;border:1px solid #e2e8f0;overflow:clip}.list-table{width:max-content;min-width:100%;border-collapse:collapse;font-size:.8375rem}.list-table thead tr{background:#f8fafc;border-bottom:2px solid #e2e8f0}.list-table th{padding:.65rem 1.25rem;text-align:left;font-size:.725rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:#64748b;white-space:nowrap}.list-table th.sortable,.contracts-table th.sortable{cursor:pointer;-webkit-user-select:none;user-select:none}.list-table th.sortable:hover,.contracts-table th.sortable:hover{background:#f1f5f9;color:#8a0e0e}.list-table th.sort-active,.contracts-table th.sort-active{color:#a91212}.th-inner{display:inline-flex;align-items:center;gap:.35rem}.sort-icon{flex-shrink:0;transition:opacity .1s}th.sortable:hover .sort-icon{opacity:1!important}th.col-draggable{cursor:grab}th.col-drag-over{position:relative}th.col-drag-over:before{content:"";position:absolute;left:0;top:20%;height:60%;width:2px;background:#a91212;border-radius:2px}.list-table tbody tr{border-bottom:1px solid #f1f5f9;transition:background .1s}.list-table tbody tr:hover{background:#f8fafc}.list-table tbody tr:last-child{border-bottom:none}.list-table td{padding:.875rem 1.25rem;vertical-align:middle;color:#334155}.empty-state{text-align:center;padding:3rem 1.5rem!important;color:#94a3b8}.empty-state-icon{margin:0 auto .75rem;width:40px;height:40px;color:#cbd5e1}.empty-state-text{font-size:.875rem;color:#94a3b8}.card-header-right{display:flex;align-items:center;gap:.75rem}.add-btn{display:flex;align-items:center;gap:.375rem;padding:.4rem .875rem;background:#a91212;color:#fff;border:none;border-radius:8px;font-size:.8125rem;font-weight:600;cursor:pointer;transition:background .12s;white-space:nowrap}.add-btn:hover{background:#8a0e0e}.add-btn svg{width:14px;height:14px}.cust-name-cell{display:flex;align-items:center;gap:.625rem}.cust-color-dot{width:10px;height:10px;border-radius:50%;flex-shrink:0}.cust-name{font-weight:600;color:#0f172a}.cust-meta{color:#475569;font-size:.8125rem}.cust-link{color:#a91212;text-decoration:none}.cust-link:hover{text-decoration:underline}.cust-pill{display:inline-flex;align-items:center;padding:.2rem .6rem;border-radius:99px;font-size:.725rem;font-weight:600}.cust-pill-on{background:#f0fdf4;color:#15803d}.cust-pill-off{background:#f8fafc;color:#94a3b8}.user-name-cell{display:flex;align-items:center;gap:.625rem}.user-initials{width:30px;height:30px;border-radius:50%;background:linear-gradient(135deg,#8a0e0e,#a91212);color:#fff;font-size:.7rem;font-weight:700;display:flex;align-items:center;justify-content:center;flex-shrink:0}.user-mono{font-family:ui-monospace,Cascadia Code,monospace;font-size:.8rem}.user-role-badge{display:inline-flex;align-items:center;padding:.2rem .625rem;border-radius:99px;font-size:.725rem;font-weight:600}.user-role-admin{background:#ef44441a;color:#dc2626}.user-role-staff{background:#a912121a;color:#a91212}.proj-status{display:inline-flex;align-items:center;padding:.25rem .7rem;border-radius:99px;font-size:.75rem;font-weight:600}.proj-status-planning{background:#f5f3ff;color:#7c3aed}.proj-status-active{background:#f0fdf4;color:#15803d}.proj-status-onhold{background:#fffbeb;color:#b45309}.proj-status-completed{background:#eff6ff;color:#1d4ed8}.inv-number{font-family:ui-monospace,Cascadia Code,monospace;font-size:.8rem;font-weight:600;color:#0f172a}.inv-amount{text-align:right;font-variant-numeric:tabular-nums;font-weight:600;color:#0f172a;white-space:nowrap}.inv-total{font-size:.8125rem;font-weight:600;color:#475569;padding:.25rem .625rem;background:#f8fafc;border:1px solid #e2e8f0;border-radius:6px}.inv-status{display:inline-flex;align-items:center;gap:.375rem;padding:.3rem .75rem;border-radius:20px;font-size:.75rem;font-weight:600;white-space:nowrap}.inv-status-draft{background:#f8fafc;color:#64748b}.inv-status-draft .status-badge-dot{background:#94a3b8}.inv-status-sent{background:#eff6ff;color:#1d4ed8}.inv-status-sent .status-badge-dot{background:#3b82f6}.inv-status-paid{background:#f0fdf4;color:#15803d}.inv-status-paid .status-badge-dot{background:#22c55e}.inv-status-overdue{background:#fff1f2;color:#dc2626}.inv-status-overdue .status-badge-dot{background:#f87171}.inv-actions{width:56px;text-align:right}.inv-pdf-btn{padding:.25rem .5rem;font-size:.7rem;font-weight:600;letter-spacing:.04em;color:#a91212;background:#fdf2f2;border:1px solid #fecaca;border-radius:4px;cursor:pointer;white-space:nowrap}.inv-pdf-btn:hover{background:#fee2e2}.col-picker{background:#fff;border-radius:14px;width:100%;max-width:540px;display:flex;flex-direction:column;box-shadow:0 24px 64px #00000038;overflow:hidden}.col-picker-body{padding:1.25rem 1.5rem 1rem}.col-picker-section-label{font-size:.7rem;font-weight:700;text-transform:uppercase;letter-spacing:.07em;color:#64748b;margin-bottom:.875rem}.col-chip-grid{display:flex;flex-wrap:wrap;gap:.5rem}.col-chip{display:inline-flex;align-items:center;gap:.35rem;padding:.35rem .875rem;border-radius:99px;border:1.5px solid #e2e8f0;background:#f8fafc;color:#64748b;font-size:.8125rem;font-weight:500;cursor:pointer;transition:border-color .12s,background .12s,color .12s;white-space:nowrap}.col-chip:hover{border-color:#94a3b8;color:#334155}.col-chip.selected{border-color:#a91212;background:#fdf2f2;color:#a91212;font-weight:600}.col-chip.selected:hover{background:#dbeafe}.col-chip-check{width:12px;height:12px;flex-shrink:0}.col-picker-footer{display:flex;align-items:center;justify-content:space-between;padding:.875rem 1.5rem 1.125rem;border-top:1px solid #e2e8f0;gap:.75rem}.col-picker-footer-right{display:flex;gap:.5rem}.btn-reset{padding:.45rem .875rem;border:1.5px solid #fca5a5;border-radius:8px;background:#fff1f2;color:#dc2626;font-size:.8125rem;font-weight:500;cursor:pointer;transition:background .1s}.btn-reset:hover{background:#fee2e2}.col-order-list{display:flex;flex-direction:column;gap:.25rem;margin-bottom:1.25rem;max-height:220px;overflow-y:auto}.col-order-item{display:flex;align-items:center;gap:.625rem;padding:.5rem .75rem;border-radius:8px;border:1.5px solid #e2e8f0;background:#f8fafc;cursor:grab;-webkit-user-select:none;user-select:none;transition:background .1s,border-color .1s,opacity .1s}.col-order-item:hover{background:#f1f5f9;border-color:#cbd5e1}.col-order-item.dragging{opacity:.35}.col-order-item.drag-over{border-color:#a91212;background:#fdf2f2}.drag-handle{width:12px;height:16px;color:#94a3b8;flex-shrink:0;cursor:grab}.col-order-label{flex:1;font-size:.875rem;font-weight:500;color:#334155}.col-order-remove{width:22px;height:22px;display:flex;align-items:center;justify-content:center;border:none;background:transparent;color:#94a3b8;cursor:pointer;border-radius:4px;padding:0;transition:color .1s,background .1s;flex-shrink:0}.col-order-remove:hover{color:#dc2626;background:#fff1f2}.col-order-remove svg{width:13px;height:13px}.col-chip-plus{width:11px;height:11px;flex-shrink:0;opacity:.6}.contracts-page{display:flex;flex-direction:column;gap:1.5rem;max-width:1200px}.contracts-page .dashboard-header{display:flex;flex-direction:column;gap:.125rem}.contracts-summary{display:grid;grid-template-columns:repeat(4,1fr);gap:1rem}.contracts-summary .summary-card:before{background:linear-gradient(90deg,#0f766e,#14b8a6)}.contracts-summary .summary-card:nth-child(2):before{background:linear-gradient(90deg,#15803d,#22c55e)}.contracts-summary .summary-card:nth-child(3):before{background:linear-gradient(90deg,#8a0e0e,#a91212)}.contracts-summary .summary-card:nth-child(4):before{background:linear-gradient(90deg,#b45309,#f59e0b)}.contracts-card{background:#fff;border-radius:12px;border:1px solid #e2e8f0;overflow:clip}.table-wrapper{overflow-x:auto}.contracts-table{width:max-content;min-width:100%;border-collapse:collapse;font-size:.8375rem}.contracts-table thead tr{background:#f8fafc;border-bottom:2px solid #e2e8f0}.contracts-table th{padding:.65rem 1.25rem;text-align:left;font-size:.725rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:#64748b;white-space:nowrap}.contracts-table tbody tr{border-bottom:1px solid #f1f5f9;transition:background .1s}.contracts-table tbody tr:hover{background:#f8fafc}.contracts-table tbody tr:last-child{border-bottom:none}.contracts-table td{padding:.875rem 1.25rem;vertical-align:middle;color:#334155}.contract-name{font-weight:600;color:#0f172a}.contract-ref{font-size:.75rem;color:#94a3b8;margin-top:.125rem}.contract-period{white-space:nowrap;color:#475569;font-size:.8125rem}.contract-days{white-space:nowrap}.days-value{font-weight:700;color:#0f172a;font-variant-numeric:tabular-nums}.days-label{font-size:.75rem;color:#94a3b8;margin-left:.2rem}.status-badge{display:inline-flex;align-items:center;gap:.375rem;padding:.3rem .75rem;border-radius:20px;font-size:.75rem;font-weight:600;white-space:nowrap}.status-badge-dot{width:6px;height:6px;border-radius:50%;flex-shrink:0}.status-signed{background:#f0fdf4;color:#15803d}.status-signed .status-badge-dot{background:#22c55e}.status-partial{background:#eff6ff;color:#1d4ed8}.status-partial .status-badge-dot{background:#3b82f6}.status-open{background:#fff7ed;color:#c2410c}.status-open .status-badge-dot{background:#f97316}.contract-customer{color:#475569;white-space:nowrap}.usage-wrapper{display:flex;align-items:center;gap:.5rem;min-width:120px}.usage-track{flex:1;height:6px;background:#e2e8f0;border-radius:99px;overflow:hidden}.usage-track-ghost{opacity:.4}.usage-fill{height:100%;border-radius:99px;transition:width .2s}.usage-fill-green{background:#22c55e}.usage-fill-yellow{background:#f59e0b}.usage-fill-red{background:#ef4444}.usage-pct{font-size:.75rem;font-weight:600;font-variant-numeric:tabular-nums;width:2.5rem;text-align:right;flex-shrink:0}.usage-pct-green{color:#16a34a}.usage-pct-yellow{color:#b45309}.usage-pct-red{color:#dc2626}.usage-pct-ghost{color:#cbd5e1}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0f172a8c;display:flex;align-items:center;justify-content:center;z-index:200;padding:1.5rem;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.modal{background:#fff;border-radius:14px;width:100%;max-width:680px;max-height:90vh;display:flex;flex-direction:column;box-shadow:0 24px 64px #00000038;overflow:hidden}.modal-header{display:flex;align-items:center;justify-content:space-between;padding:1.25rem 1.5rem;border-bottom:1px solid #e2e8f0;flex-shrink:0}.modal-title{font-size:1.0625rem;font-weight:700;color:#0f172a}.modal-close{width:32px;height:32px;display:flex;align-items:center;justify-content:center;border:none;background:#f1f5f9;border-radius:8px;cursor:pointer;color:#64748b;transition:background .1s,color .1s}.modal-close:hover{background:#e2e8f0;color:#0f172a}.modal-close svg{width:16px;height:16px}.modal-body{overflow-y:auto;flex:1;padding:0 0 .5rem}.form-section{padding:1.25rem 1.5rem;border-bottom:1px solid #f1f5f9}.form-section:last-of-type{border-bottom:none}.form-section-title{font-size:.7rem;font-weight:700;text-transform:uppercase;letter-spacing:.07em;color:#64748b;margin-bottom:1rem}.form-row{display:grid;gap:.875rem;margin-bottom:.875rem}.form-row-2col{grid-template-columns:1fr 1fr}.form-row-3col{grid-template-columns:1fr 1fr 1fr}.form-field{display:flex;flex-direction:column;gap:.325rem;margin-bottom:.875rem}.form-row .form-field{margin-bottom:0}.form-label{font-size:.75rem;font-weight:600;color:#374151;letter-spacing:.01em}.required{color:#dc2626}.form-input,.form-select,.form-textarea{padding:.475rem .75rem;border:1.5px solid #e2e8f0;border-radius:8px;font-size:.8375rem;color:#0f172a;background:#f8fafc;outline:none;transition:border-color .12s,background .12s;font-family:inherit}.form-input:focus,.form-select:focus,.form-textarea:focus{border-color:#a91212;background:#fff}.form-textarea{resize:vertical;min-height:80px}.form-select{cursor:pointer}.form-field.has-error .form-input,.form-field.has-error .form-select{border-color:#f87171;background:#fff5f5}.form-error{font-size:.75rem;color:#dc2626}.input-icon-wrap{position:relative;display:flex;align-items:center}.input-icon{position:absolute;left:.65rem;top:50%;transform:translateY(-50%);width:15px;height:15px;color:#94a3b8;pointer-events:none;flex-shrink:0;display:flex;align-items:center}.input-icon svg{width:15px;height:15px}.input-with-icon{padding-left:2.25rem;width:100%}.input-icon-wrap.has-error .form-input{border-color:#f87171;background:#fff5f5}.input-icon-wrap:focus-within .input-icon{color:#a91212}.color-field{position:relative}.color-trigger{display:flex;align-items:center;gap:.5rem;width:100%;padding:.475rem .75rem;border:1.5px solid #e2e8f0;border-radius:8px;background:#f8fafc;cursor:pointer;font-size:.8375rem;color:#0f172a;text-align:left;transition:border-color .12s,background .12s}.color-trigger:hover,.color-trigger.open{border-color:#a91212;background:#fff}.color-swatch{width:18px;height:18px;border-radius:4px;flex-shrink:0;border:1px solid rgba(0,0,0,.08)}.color-trigger-label{flex:1}.color-trigger-hex{font-size:.7rem;color:#94a3b8;font-variant-numeric:tabular-nums}.color-trigger-chevron{width:14px;height:14px;color:#94a3b8;flex-shrink:0;transition:transform .15s}.color-trigger.open .color-trigger-chevron{transform:rotate(180deg)}.color-dropdown{position:absolute;top:calc(100% + 4px);left:0;right:0;background:#fff;border:1.5px solid #e2e8f0;border-radius:10px;box-shadow:0 8px 24px #0000001f;z-index:10;padding:.75rem}.color-grid{display:grid;grid-template-columns:repeat(6,1fr);gap:6px;margin-bottom:.625rem}.color-option{width:100%;aspect-ratio:1;border-radius:6px;border:2px solid transparent;cursor:pointer;transition:transform .1s,border-color .1s;padding:0}.color-option:hover{transform:scale(1.12)}.color-option.selected{border-color:#0f172a;box-shadow:0 0 0 2px #fff inset}.color-custom-row{display:flex;align-items:center;gap:.5rem;padding-top:.5rem;border-top:1px solid #f1f5f9}.color-custom-label{font-size:.775rem;color:#64748b;flex:1}.color-custom-input{position:absolute;opacity:0;pointer-events:none;width:0;height:0}.color-custom-preview{width:28px;height:28px;border-radius:6px;border:1.5px solid #e2e8f0;cursor:pointer;flex-shrink:0;transition:transform .1s}.color-custom-preview:hover{transform:scale(1.1)}.toggle-group{display:flex;flex-direction:column;gap:.75rem}.toggle-row{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.75rem 1rem;background:#f8fafc;border:1.5px solid #e2e8f0;border-radius:10px;cursor:pointer;transition:background .1s}.toggle-row:hover{background:#f1f5f9}.toggle-text{display:flex;flex-direction:column;gap:.125rem}.toggle-label{font-size:.875rem;font-weight:600;color:#0f172a}.toggle-desc{font-size:.75rem;color:#64748b}.toggle-switch{width:44px;height:24px;border-radius:99px;border:none;background:#cbd5e1;cursor:pointer;position:relative;flex-shrink:0;transition:background .18s;padding:0}.toggle-switch.on{background:#22c55e}.toggle-thumb{position:absolute;top:3px;left:3px;width:18px;height:18px;border-radius:50%;background:#fff;box-shadow:0 1px 3px #0000002e;transition:left .18s}.toggle-switch.on .toggle-thumb{left:23px}.modal-footer{display:flex;justify-content:flex-end;gap:.625rem;padding:1rem 1.5rem 1.25rem;border-top:1px solid #e2e8f0;flex-shrink:0;margin-top:.5rem}.btn-primary{padding:.5rem 1.25rem;background:#a91212;color:#fff;border:none;border-radius:8px;font-size:.875rem;font-weight:600;cursor:pointer;transition:background .12s}.btn-primary:hover{background:#8a0e0e}.btn-secondary{padding:.5rem 1.125rem;background:#fff;color:#475569;border:1.5px solid #e2e8f0;border-radius:8px;font-size:.875rem;font-weight:500;cursor:pointer;transition:background .12s,border-color .12s}.btn-secondary:hover{background:#f8fafc;border-color:#cbd5e1}.roles-page{display:flex;flex-direction:column;gap:1.5rem;max-width:1200px}.role-name-cell{display:flex;align-items:center;gap:.625rem}.role-icon{width:32px;height:32px;border-radius:8px;display:flex;align-items:center;justify-content:center;flex-shrink:0}.role-icon svg{width:16px;height:16px}.role-builtin-badge{display:inline-flex;padding:.15rem .5rem;border-radius:99px;font-size:.675rem;font-weight:600;background:#f1f5f9;color:#64748b;text-transform:uppercase;letter-spacing:.05em;white-space:nowrap}.perm-count-badge{display:inline-flex;align-items:center;gap:.25rem;padding:.2rem .6rem;border-radius:99px;font-size:.75rem;font-weight:600;background:#fdf2f2;color:#a91212}.row-actions{display:flex;align-items:center;gap:.375rem}.icon-btn{display:flex;align-items:center;justify-content:center;width:30px;height:30px;border:1.5px solid #e2e8f0;border-radius:7px;background:#fff;cursor:pointer;color:#475569;transition:border-color .12s,color .12s,background .12s;flex-shrink:0}.icon-btn svg{width:14px;height:14px}.icon-btn:hover{border-color:#a91212;color:#8a0e0e;background:#fdf2f2}.icon-btn.danger:hover{border-color:#fca5a5;color:#dc2626;background:#fff1f2}.icon-btn:disabled{opacity:.35;cursor:not-allowed;pointer-events:none}.role-editor-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0f172a73;z-index:100;display:flex;align-items:flex-start;justify-content:center;padding:2rem 1rem;overflow-y:auto}.role-editor{background:#fff;border-radius:14px;width:100%;max-width:760px;box-shadow:0 24px 64px #0f172a2e;display:flex;flex-direction:column;margin:auto 0}.role-editor-header{display:flex;align-items:center;gap:.75rem;padding:1.125rem 1.5rem;border-bottom:1px solid #f1f5f9;flex-shrink:0}.role-editor-icon{width:36px;height:36px;border-radius:9px;display:flex;align-items:center;justify-content:center;flex-shrink:0}.role-editor-icon svg{width:18px;height:18px}.role-editor-title{font-size:1rem;font-weight:700;color:#0f172a;flex:1}.role-editor-close{display:flex;align-items:center;justify-content:center;width:30px;height:30px;border:none;background:none;cursor:pointer;color:#94a3b8;border-radius:6px;transition:color .1s,background .1s}.role-editor-close:hover{color:#475569;background:#f1f5f9}.role-editor-close svg{width:16px;height:16px}.role-editor-body{padding:1.5rem;display:flex;flex-direction:column;gap:1.75rem;overflow-y:auto;max-height:calc(90vh - 132px)}.editor-section-title{font-size:.725rem;font-weight:700;text-transform:uppercase;letter-spacing:.07em;color:#64748b;margin-bottom:.875rem}.role-details-row{display:grid;grid-template-columns:1fr 1fr;gap:.875rem;margin-bottom:.875rem}.re-field{display:flex;flex-direction:column;gap:.3rem}.re-label{font-size:.775rem;font-weight:600;color:#374151}.re-input{padding:.45rem .75rem;border:1.5px solid #e2e8f0;border-radius:8px;font-size:.8375rem;color:#0f172a;background:#fff;outline:none;transition:border-color .12s}.re-input:focus{border-color:#a91212}.re-input:disabled{background:#f8fafc;color:#94a3b8;cursor:not-allowed}.re-input.has-error{border-color:#f87171}.re-error{font-size:.75rem;color:#dc2626}.re-textarea{padding:.45rem .75rem;border:1.5px solid #e2e8f0;border-radius:8px;font-size:.8375rem;color:#0f172a;background:#fff;outline:none;resize:vertical;font-family:inherit;line-height:1.5;transition:border-color .12s}.re-textarea:focus{border-color:#a91212}.perm-summary{font-size:.8125rem;color:#64748b;margin-bottom:.875rem}.perm-summary strong{color:#a91212;font-weight:700}.perm-groups{display:flex;flex-direction:column;gap:.5rem}.perm-group{border:1.5px solid #e2e8f0;border-radius:10px;overflow:hidden}.perm-group-header{display:flex;align-items:center;gap:.625rem;padding:.55rem .875rem;background:#f8fafc;border-bottom:1.5px solid #e2e8f0;cursor:pointer;-webkit-user-select:none;user-select:none}.perm-group-header:hover{background:#f1f5f9}.perm-group-name{font-size:.8125rem;font-weight:600;color:#0f172a;flex:1}.perm-group-count{font-size:.75rem;color:#94a3b8;font-variant-numeric:tabular-nums}.perm-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(155px,1fr));gap:.25rem;padding:.625rem .875rem}.perm-item{display:flex;align-items:center;gap:.4rem;padding:.25rem .375rem;border-radius:5px;cursor:pointer;transition:background .08s}.perm-item:hover{background:#f8fafc}.perm-checkbox{width:15px;height:15px;accent-color:#a91212;cursor:pointer;flex-shrink:0}.perm-label{font-size:.8125rem;color:#334155;cursor:pointer;-webkit-user-select:none;user-select:none}.role-editor-footer{display:flex;align-items:center;justify-content:flex-end;gap:.625rem;padding:1rem 1.5rem;border-top:1px solid #f1f5f9;flex-shrink:0}.settings-page{padding:1.5rem;max-width:680px}.settings-card{background:#fff;border:1px solid #e2e8f0;border-radius:12px;overflow:hidden;box-shadow:0 1px 4px #0000000d}.settings-card-header{padding:1rem 1.5rem;border-bottom:1px solid #f1f5f9}.settings-card-title{font-size:.9375rem;font-weight:700;color:#0f172a}.settings-card-body{padding:1.5rem;display:flex;flex-direction:column;gap:1.75rem}.settings-field{display:flex;flex-direction:column;gap:.375rem}.settings-field-label{font-size:.8125rem;font-weight:600;color:#334155}.settings-field-hint{font-size:.75rem;color:#94a3b8;margin:0 0 .25rem}.settings-select{width:240px;padding:.5rem .75rem;border:1.5px solid #e2e8f0;border-radius:8px;font-size:.875rem;color:#0f172a;background:#fff;cursor:pointer;outline:none;transition:border-color .12s}.settings-select:hover{border-color:#94a3b8}.settings-select:focus{border-color:#a91212;box-shadow:0 0 0 3px #a912121a}.btn-upload{display:inline-flex;align-items:center;gap:.375rem;padding:.45rem 1rem;border:1.5px solid #e2e8f0;border-radius:8px;background:#fff;color:#334155;font-size:.8125rem;font-weight:500;cursor:pointer;transition:border-color .12s,background .12s}.btn-upload svg{width:14px;height:14px;flex-shrink:0}.btn-upload:hover{border-color:#94a3b8;background:#f8fafc}.btn-remove-photo{padding:.45rem .875rem;border:1.5px solid #fca5a5;border-radius:8px;background:#fff1f2;color:#dc2626;font-size:.8125rem;font-weight:500;cursor:pointer;transition:background .1s}.btn-remove-photo:hover{background:#fee2e2}.color-swatch{width:36px;height:36px;border-radius:50%;border:3px solid transparent;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:transform .12s,box-shadow .12s;outline:none}.color-swatch:hover{transform:scale(1.1);box-shadow:0 2px 8px #0003}.color-swatch.active{border-color:#0f172a;box-shadow:0 0 0 2px #fff,0 0 0 4px #0f172a}.color-swatch svg{width:14px;height:14px}
