@import "https://fonts.googleapis.com/css2?family=Outfit:wght@300;400;500;600;700;800;900&family=Geist+Mono:wght@400;500;600;700&display=swap";
:root{--font-title:"Outfit", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;--font-body:"Outfit", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;--font-mono:"Geist Mono", monospace;--bg-radial:radial-gradient(circle at top, #fdfcfb 0%, #fffefb 100%);--bg-primary:#fffefb;--bg-secondary:#f8f4f0;--bg-tertiary:#fcfaf7;--border-color:#e5dfd8;--border-focus:#ff4f00;--text-primary:#201515;--text-secondary:#2f2a26;--text-muted:#605d52;--text-on-primary:#fffefb;--accent-blue:#ff4f00;--accent-blue-hover:#e04600;--accent-gold:#f59e0b;--status-available:#10b981;--status-available-bg:#10b9810f;--status-available-border:#10b98140;--status-available-glow:#10b98126;--status-partial:#f59e0b;--status-partial-bg:#f59e0b0f;--status-partial-border:#f59e0b40;--status-partial-glow:#f59e0b26;--status-sold:#ef4444;--status-sold-bg:#ef44440f;--status-sold-border:#ef444440;--status-sold-glow:#ef444426;--shadow-sm:0 2px 8px #2015150d, 0 1px 3px #20151508;--shadow-md:0 10px 25px -5px #20151514, 0 4px 10px #2015150a;--shadow-lg:0 20px 40px -10px #2015151f, 0 8px 16px #2015150f;--glass-blur:10px;--radius-sm:6px;--radius-md:12px;--radius-lg:18px;--ease-out:cubic-bezier(.23, 1, .32, 1);--ease-in-out:cubic-bezier(.77, 0, .175, 1);--ease-drawer:cubic-bezier(.32, .72, 0, 1);--transition-fast:.12s var(--ease-out);--transition-normal:.22s var(--ease-out);--transition-slow:.35s var(--ease-out)}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent;margin:0;padding:0}body{background:var(--bg-radial);background-color:var(--bg-primary);color:var(--text-primary);font-family:var(--font-body);background-attachment:fixed;min-height:100vh;line-height:1.6;overflow-x:hidden}h1,h2,h3,h4,h5,h6{font-family:var(--font-title);letter-spacing:-.02em;color:var(--text-primary);font-weight:700}button,input,textarea,select{font-family:inherit;font-size:inherit}@keyframes fadeIn{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}@keyframes slideUp{0%{opacity:0;transform:translateY(40px)}to{opacity:1;transform:translateY(0)}}@keyframes pulseGlow{0%,to{opacity:.5}50%{opacity:.9}}.animate-fade-in{animation:fadeIn var(--transition-normal) forwards}.glass-panel{background:var(--bg-secondary);border:1px solid var(--border-color);border-radius:var(--radius-md);box-shadow:var(--shadow-sm);transition:border-color var(--transition-normal), box-shadow var(--transition-normal), transform var(--transition-normal)}@media (hover:hover) and (pointer:fine){.glass-panel:hover{box-shadow:var(--shadow-md);border-color:#c5c0b1}}.interactive-target{cursor:pointer;transition:transform var(--transition-fast), background var(--transition-fast), border-color var(--transition-fast), box-shadow var(--transition-fast)}.interactive-target:active{transform:scale(.97)}.form-group{flex-direction:column;gap:8px;width:100%;display:flex}.form-label{font-family:var(--font-title);color:var(--text-muted);letter-spacing:.05em;text-transform:uppercase;font-size:12px;font-weight:700}.form-input{background-color:var(--bg-primary);border:1px solid var(--border-color);border-radius:var(--radius-sm);width:100%;color:var(--text-primary);transition:border-color var(--transition-fast), box-shadow var(--transition-fast), background-color var(--transition-fast);outline:none;padding:12px 16px;font-size:16px;box-shadow:inset 0 1px 3px #20151508}.form-input:focus{border-color:var(--border-focus);background-color:var(--bg-primary);box-shadow:0 0 0 3px #ff4f0026}.form-input::placeholder{color:#c5c0b1}.app-container{flex-direction:column;width:100%;max-width:1200px;min-height:100vh;margin:0 auto;padding:20px;display:flex}@media (min-width:768px){.app-container{padding:40px 24px}}.btn{background-color:var(--bg-secondary);border:1px solid var(--border-color);border-radius:var(--radius-md);color:var(--text-primary);font-family:var(--font-title);cursor:pointer;transition:transform var(--transition-fast), background-color var(--transition-fast), border-color var(--transition-fast), box-shadow var(--transition-fast);box-shadow:var(--shadow-sm);outline:none;justify-content:center;align-items:center;gap:8px;padding:12px 24px;font-size:15px;font-weight:600;display:inline-flex}.btn:active{box-shadow:none;transform:scale(.97)}.btn-primary{background:var(--accent-blue);border:1px solid var(--accent-blue);color:var(--text-on-primary);text-shadow:none}@media (hover:hover) and (pointer:fine){.btn-primary:hover{background:var(--accent-blue-hover);border-color:var(--accent-blue-hover);transform:translateY(-1px);box-shadow:0 4px 12px #ff4f0040}}.btn-danger{color:#ef4444;background:#ef44440f;border:1px solid #ef444433}@media (hover:hover) and (pointer:fine){.btn-danger:hover{color:#fffefb;background:#ef4444;border-color:#ef4444;transform:translateY(-1px);box-shadow:0 4px 12px #ef444440}}.btn-secondary{background:var(--bg-primary);border:1px solid var(--border-color);color:var(--text-primary)}@media (hover:hover) and (pointer:fine){.btn-secondary:hover{background:var(--bg-secondary);border-color:#c5c0b1;transform:translateY(-1px)}}.plot-badge{border-radius:var(--radius-sm);text-transform:uppercase;letter-spacing:.05em;align-items:center;gap:6px;padding:5px 12px;font-size:11px;font-weight:700;display:inline-flex}.plot-badge.available{background-color:var(--status-available-bg);border:1px solid var(--status-available-border);color:var(--status-available)}.plot-badge.partially_paid{background-color:var(--status-partial-bg);border:1px solid var(--status-partial-border);color:var(--status-partial)}.plot-badge.sold{background-color:var(--status-sold-bg);border:1px solid var(--status-sold-border);color:var(--status-sold)}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:#2015151a;border-radius:9999px}::-webkit-scrollbar-thumb:hover{background:#20151533}.form-row{gap:12px;width:100%;display:flex}.flex-1{flex:1;min-width:0}.flex-2{flex:2;min-width:0}.form-select{appearance:none;cursor:pointer;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke='%23605d52'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M19 9l-7 7-7-7'/%3E%3C/svg%3E");background-position:right 16px center;background-repeat:no-repeat;background-size:16px;padding-right:40px}.form-textarea{resize:none;font-family:inherit}.modal-overlay{-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);z-index:1000;animation:modalFadeIn .22s var(--ease-out) forwards;background-color:#20151573;justify-content:center;align-items:center;padding:16px;display:flex;position:fixed;inset:0}.modal-container{background-color:var(--bg-secondary);border-radius:var(--radius-md);border:1px solid var(--border-color);width:100%;max-width:460px;max-height:90vh;box-shadow:var(--shadow-lg);animation:modalZoomIn .25s var(--ease-out) forwards;flex-direction:column;display:flex;overflow:hidden}@keyframes modalFadeIn{0%{opacity:0;-webkit-backdrop-filter:blur();backdrop-filter:blur();background-color:#20151500}to{opacity:1;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background-color:#20151573}}@keyframes modalZoomIn{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}.modal-header{border-bottom:1px solid var(--border-color);background:var(--bg-secondary);justify-content:space-between;align-items:center;padding:16px 20px;display:flex}.modal-title-wrap{align-items:center;gap:10px;display:flex}.modal-title-icon{color:var(--accent-blue);width:20px;height:20px}.close-btn{color:var(--text-secondary);cursor:pointer;transition:background-color var(--transition-fast), color var(--transition-fast);background:0 0;border:none;border-radius:50%;justify-content:center;align-items:center;padding:4px;display:flex}@media (hover:hover) and (pointer:fine){.close-btn:hover{background-color:var(--bg-tertiary);color:var(--text-primary)}}.modal-content-form{flex-direction:column;flex:1;min-height:0;display:flex}.modal-form-body{flex-direction:column;flex:1;gap:16px;padding:20px;display:flex;overflow:hidden auto}.modal-form{flex-direction:column;gap:16px;padding:20px;display:flex}.modal-actions{background:var(--bg-secondary);border-top:1px solid var(--border-color);justify-content:flex-end;gap:12px;padding:16px 20px;display:flex}.modal-loading{justify-content:center;align-items:center;padding:50px 20px;display:flex}.file-upload-zone{border:2px dashed var(--border-color);border-radius:var(--radius-sm);background:var(--bg-primary);min-height:100px;transition:border-color var(--transition-fast);flex-direction:column;justify-content:center;align-items:center;padding:8px;display:flex}.upload-placeholder{cursor:pointer;color:var(--text-secondary);text-align:center;flex-direction:column;align-items:center;gap:6px;width:100%;padding:16px;font-size:14px;display:flex}.upload-icon{color:var(--accent-blue)}.preview-container{flex-direction:column;align-items:center;gap:10px;width:100%;display:flex}.map-preview-img{object-fit:contain;border-radius:var(--radius-sm);border:1px solid var(--border-color);max-width:100%;max-height:120px}.pdf-preview-placeholder{border-radius:var(--radius-sm);text-align:center;background:#ff4f000a;border:1px dashed #ff4f004d;flex-direction:column;justify-content:center;align-items:center;gap:8px;width:100%;padding:16px;display:flex}.pdf-icon{color:var(--accent-blue)}.pdf-filename{color:var(--text-secondary);word-break:break-all;font-size:13px;font-weight:500}.remove-preview-btn{border-radius:var(--radius-sm);padding:6px 14px;font-size:13px}.drawer-overlay{-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);z-index:1000;animation:modalFadeIn .22s var(--ease-out) forwards;background-color:#20151573;justify-content:center;align-items:flex-end;display:flex;position:fixed;inset:0}@media (min-width:768px){.drawer-overlay{align-items:center;padding:24px}}.drawer-container{background-color:var(--bg-secondary);border-radius:var(--radius-lg) var(--radius-lg) 0 0;width:100%;max-width:480px;max-height:85vh;box-shadow:var(--shadow-lg);animation:slideUp .38s var(--ease-drawer) forwards;border:1px solid var(--border-color);border-bottom:none;flex-direction:column;display:flex;overflow:hidden}@media (min-width:768px){.drawer-container{border-radius:var(--radius-md);border-bottom:1px solid var(--border-color);max-height:90vh;animation:modalZoomIn .28s var(--ease-out) forwards}}.drawer-header{border-bottom:1px solid var(--border-color);justify-content:space-between;align-items:center;padding:16px 20px;display:flex}.drawer-title-wrap{align-items:center;gap:12px;display:flex}.drawer-content-form{flex-direction:column;flex:1;min-height:0;display:flex}.drawer-form-body{flex-direction:column;flex:1;gap:20px;padding:20px;display:flex;overflow:hidden auto}.drawer-actions{background:var(--bg-secondary);border-top:1px solid var(--border-color);box-sizing:border-box;gap:10px;min-width:0;padding:14px 16px;display:flex}.drawer-actions>.btn{text-overflow:ellipsis;white-space:nowrap;flex:1 1 0;gap:6px;min-width:0;padding:11px 12px;font-size:13px;overflow:hidden}.drawer-loading{justify-content:center;align-items:center;padding:60px 24px;display:flex}.lightbox-overlay{z-index:2000;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background-color:#201515f2;justify-content:center;align-items:center;padding:20px;display:flex;position:fixed;inset:0}.lightbox-close{color:#fffefb;cursor:pointer;width:48px;height:48px;transition:background var(--transition-fast);background:#ffffff1a;border:1px solid #fff3;border-radius:50%;justify-content:center;align-items:center;display:flex;position:absolute;top:24px;right:24px}@media (hover:hover) and (pointer:fine){.lightbox-close:hover{background:#fff3}}.lightbox-content{flex-direction:column;justify-content:center;align-items:center;gap:12px;width:100%;max-width:90vw;height:100%;max-height:80vh;display:flex}.lightbox-img{object-fit:contain;border-radius:var(--radius-md);max-width:100%;max-height:80vh;box-shadow:0 10px 40px #20151566}.lightbox-pdf{border-radius:var(--radius-md);border:none;width:90vw;height:80vh;box-shadow:0 10px 40px #20151566}.lightbox-pdf-link{text-decoration:none}.search-container{border-radius:var(--radius-md);flex:1;align-items:center;gap:12px;padding:12px 16px;display:flex}.search-icon{color:var(--text-muted)}.search-input{color:var(--text-primary);background:0 0;border:none;outline:none;width:100%;font-size:16px}.fullscreen-loading{background:var(--bg-radial);justify-content:center;align-items:center;min-height:100vh;display:flex}.mobile-only{display:flex}@media (min-width:768px){.mobile-only{display:none}}.global-route-loader-bar{background:var(--border-color);z-index:9999;height:4px;position:fixed;top:0;left:0;right:0;overflow:hidden;box-shadow:0 1px 3px #2015150d}.global-route-loader-progress{background:linear-gradient(90deg, var(--accent-blue) 0%, var(--accent-gold) 100%);transform-origin:0%;width:100%;height:100%;box-shadow:0 0 8px var(--accent-blue);animation:1.8s ease-in-out infinite globalRouteLoaderAnim}@keyframes globalRouteLoaderAnim{0%{transform:translate(-100%)scaleX(.2)}50%{transform:translate(0%)scaleX(.7)}to{transform:translate(100%)scaleX(.2)}}body.global-navigating{cursor:progress!important}body.global-navigating button,body.global-navigating a,body.global-navigating input,body.global-navigating select,body.global-navigating textarea,body.global-navigating .interactive-target{cursor:progress!important;pointer-events:none!important}.project-documents-section{flex-direction:column;gap:16px;margin-top:16px;padding:20px;display:flex}.section-subtitle{color:var(--text-primary);letter-spacing:-.01em;font-size:15px;font-weight:750}.document-list{flex-direction:column;gap:12px;display:flex}.document-item{border-radius:var(--radius-md);background:var(--bg-primary);border:1px solid var(--border-color);transition:border-color var(--transition-fast), box-shadow var(--transition-fast);justify-content:space-between;align-items:center;padding:14px 18px;display:flex}@media (hover:hover) and (pointer:fine){.document-item:hover{border-color:var(--text-muted);box-shadow:var(--shadow-sm)}}.doc-info{color:var(--text-primary);flex:1;align-items:center;gap:10px;min-width:0;display:flex}.doc-icon{color:var(--accent-blue);flex-shrink:0}.doc-name{white-space:nowrap;text-overflow:ellipsis;font-size:14px;font-weight:600;overflow:hidden}.doc-actions{align-items:center;gap:8px;display:flex}.doc-action-btn{background:var(--bg-secondary);border:1px solid var(--border-color);color:var(--text-secondary);cursor:pointer;transition:background-color var(--transition-fast), border-color var(--transition-fast), color var(--transition-fast);border-radius:6px;align-items:center;gap:4px;padding:6px 12px;font-size:12px;font-weight:600;display:flex}@media (hover:hover) and (pointer:fine){.doc-action-btn:hover{background:var(--bg-tertiary);border-color:var(--text-muted);color:var(--text-primary)}}.doc-status{color:var(--text-muted);font-size:12px;font-style:italic}.share-toast{color:#fffefb;border-radius:var(--radius-sm);box-shadow:var(--shadow-md);z-index:3000;opacity:0;background:#201515f2;padding:10px 20px;font-size:13px;font-weight:500;transition:transform .3s cubic-bezier(.16,1,.3,1),opacity .3s;position:fixed;bottom:24px;left:50%;transform:translate(-50%)translateY(100px)}.share-toast.show{opacity:1;transform:translate(-50%)translateY(0)}.share-all-docs-btn{justify-content:center;align-items:center;gap:8px;width:100%;margin-top:10px;padding:10px 14px;font-size:13px;font-weight:600;display:flex}.font-mono{font-family:var(--font-mono);font-variant-numeric:tabular-nums}.controls-card-top{border-radius:var(--radius-md);flex-direction:column;gap:20px;margin-bottom:24px;padding:20px;display:flex}@media (min-width:860px){.controls-card-top{flex-direction:row;align-items:flex-start;gap:32px}}.metrics-col{flex-direction:column;flex:1;gap:12px;display:flex}.metrics-date-label{color:var(--text-primary);font-size:15px;font-weight:700}.att-calendar{background:var(--bg-primary);border:1px solid var(--border-color);border-radius:var(--radius-md);-webkit-user-select:none;user-select:none;flex-shrink:0;min-width:260px;padding:14px}.cal-header{justify-content:space-between;align-items:center;margin-bottom:10px;display:flex}.cal-month-label{color:var(--text-primary);letter-spacing:.01em;font-size:13px;font-weight:800}.cal-nav-btn{border:1px solid var(--border-color);background:var(--bg-secondary);width:28px;height:28px;color:var(--text-muted);cursor:pointer;transition:all var(--transition-fast);border-radius:7px;justify-content:center;align-items:center;display:flex}.cal-nav-btn:hover{background:var(--bg-tertiary);color:var(--text-primary)}.cal-dow-row{grid-template-columns:repeat(7,1fr);margin-bottom:4px;display:grid}.cal-dow{text-align:center;text-transform:uppercase;color:var(--text-muted);letter-spacing:.04em;padding:4px 0;font-size:9px;font-weight:700}.cal-grid{grid-template-columns:repeat(7,1fr);gap:2px;display:grid}.cal-cell{aspect-ratio:1;cursor:pointer;transition:background var(--transition-fast);background:0 0;border:none;border-radius:7px;flex-direction:column;justify-content:center;align-items:center;gap:2px;padding:0;display:flex;position:relative}.cal-cell.blank{cursor:default}.cal-cell.day:hover{background:var(--bg-secondary)}.cal-cell.today .cal-day-num{background:var(--bg-secondary);border:1.5px solid var(--accent-blue);width:22px;height:22px;color:var(--accent-blue);border-radius:50%;justify-content:center;align-items:center;display:flex}.cal-cell.selected .cal-day-num{background:var(--accent-blue);color:#fff;border-radius:50%;justify-content:center;align-items:center;width:22px;height:22px;display:flex}.cal-cell.selected{background:#c07a3a14}.cal-day-num{color:var(--text-primary);font-size:11px;font-weight:600;line-height:1}.cal-dot{border-radius:50%;flex-shrink:0;width:5px;height:5px;display:block}.dot-full{background:var(--status-available)}.dot-partial{background:var(--status-partial)}.cal-legend{border-top:1px solid var(--border-color);justify-content:center;gap:12px;margin-top:8px;padding-top:8px;display:flex}.leg-item{color:var(--text-muted);align-items:center;gap:4px;font-size:10px;font-weight:600;display:flex}.dot-none-ex{border:1px solid var(--text-muted);border-radius:50%;width:5px;height:5px;display:inline-block}.dashboard-header{border-radius:var(--radius-md);justify-content:space-between;align-items:center;margin-bottom:20px;padding:16px 24px;display:flex}.header-left{align-items:center;gap:12px;display:flex}.back-to-hub-btn{background:var(--bg-secondary);border:1px solid var(--border-color);width:36px;height:36px;color:var(--text-secondary);transition:all var(--transition-fast);border-radius:9px;justify-content:center;align-items:center;display:flex}.header-info{flex-direction:column;display:flex}.welcome-tag{letter-spacing:.05em;color:var(--accent-blue);text-transform:uppercase;margin-bottom:2px;font-size:11px;font-weight:700;display:block}.header-title{color:var(--text-primary);margin:0;font-size:24px;font-weight:800;line-height:1.2}@media (max-width:480px){.header-title{font-size:20px}}.tab-navigation{background:var(--bg-secondary);border:1px solid var(--border-color);border-radius:var(--radius-md);gap:6px;width:max-content;max-width:100%;margin-bottom:24px;padding:6px;display:flex}.tab-btn{border-radius:calc(var(--radius-md) - 4px);color:var(--text-muted);cursor:pointer;transition:all var(--transition-fast);background:0 0;border:1px solid #0000;outline:none;align-items:center;gap:8px;padding:8px 16px;font-size:14px;font-weight:600;display:flex}.tab-btn:hover{color:var(--text-primary);background:#2015150a}.tab-btn:active{transform:scale(.97)}.tab-btn.active{background:var(--bg-primary);color:var(--accent-blue);box-shadow:var(--shadow-sm);border-color:var(--border-color)}.attendance-nav-container{flex-direction:column;gap:16px;margin-bottom:24px;display:flex}@media (min-width:900px){.attendance-nav-container{flex-direction:row;align-items:stretch}}.week-strip-wrapper{background:var(--bg-secondary);border:1px solid var(--border-color);border-radius:var(--radius-md);flex-direction:column;flex:1.2;justify-content:space-between;gap:12px;padding:16px;display:flex}.week-strip-header{justify-content:space-between;align-items:center;display:flex}.strip-title{color:var(--text-primary);text-transform:uppercase;letter-spacing:.05em;font-size:13px;font-weight:800}.date-picker-trigger{border:1px solid var(--border-color);background:var(--bg-primary);width:32px;height:32px;color:var(--text-muted);cursor:pointer;transition:transform var(--transition-fast), background var(--transition-fast);border-radius:8px;justify-content:center;align-items:center;display:flex;position:relative;overflow:hidden}.date-picker-trigger:hover{background:var(--bg-secondary);color:var(--text-primary)}.date-picker-trigger:active{transform:scale(.95)}.dp-input{opacity:0;cursor:pointer;width:100%;height:100%;position:absolute;top:0;left:0}.week-strip-navigator{align-items:center;gap:8px;display:flex}.week-days-container{flex:1;grid-template-columns:repeat(7,1fr);gap:6px;display:grid}.week-day-pill{border-radius:var(--radius-md);border:1px solid var(--border-color);background:var(--bg-primary);cursor:pointer;transition:transform .12s var(--ease-out), background .12s var(--ease-out), border-color .12s var(--ease-out);aspect-ratio:.85;flex-direction:column;justify-content:center;align-items:center;min-width:44px;padding:10px 4px;display:flex}.week-day-pill:active{transform:scale(.95)}.week-day-pill.selected{border-color:var(--accent-blue);box-shadow:var(--shadow-sm);background:#ff4f000f}.week-day-pill.selected .pill-date{color:var(--accent-blue);font-weight:800}.week-day-pill.today{border-color:#a09a8f}.week-day-pill.today .pill-date{text-underline-offset:2px;text-decoration:underline}.pill-day{text-transform:uppercase;color:var(--text-muted);margin-bottom:2px;font-size:9px;font-weight:700}.pill-date{color:var(--text-primary);font-size:13px;font-weight:600}.pill-dot{border-radius:50%;width:5px;height:5px;margin-top:4px}.pill-dot.dot-full{background:var(--status-available)}.pill-dot.dot-partial{background:var(--status-partial)}.nav-arrow-btn{border:1px solid var(--border-color);background:var(--bg-primary);width:32px;height:32px;color:var(--text-muted);cursor:pointer;transition:transform .12s var(--ease-out), background .12s var(--ease-out);border-radius:8px;justify-content:center;align-items:center;display:flex}.nav-arrow-btn:hover{background:var(--bg-secondary);color:var(--text-primary)}.nav-arrow-btn:active{transform:scale(.95)}.attendance-summary-dashboard{background:var(--bg-secondary);border:1px solid var(--border-color);border-radius:var(--radius-md);flex-direction:column;flex:1;justify-content:space-between;gap:12px;padding:16px;display:flex}.summary-date-header{border-bottom:1px solid var(--border-color);padding-bottom:8px}.summary-date{color:var(--text-primary);font-size:14px;font-weight:700}.dashboard-metrics-grid{grid-template-columns:repeat(5,1fr);gap:8px;display:grid}.dash-metric{background:var(--bg-primary);border:1px solid var(--border-color);border-radius:var(--radius-sm);text-align:center;flex-direction:column;justify-content:center;align-items:center;padding:8px 4px;display:flex}.dash-metric .dm-lbl{text-transform:uppercase;letter-spacing:.05em;color:var(--text-muted);margin-bottom:2px;font-size:8px;font-weight:700}.dash-metric .dm-val{color:var(--text-primary);font-size:15px;font-weight:800}.dash-metric.present .dm-val{color:var(--status-available)}.dash-metric.half .dm-val{color:var(--status-partial)}.dash-metric.absent .dm-val{color:var(--status-sold)}.dash-metric.total-wages .dm-val{color:var(--accent-blue)}.bulk-actions-bar{border-radius:var(--radius-md);flex-wrap:wrap;align-items:center;gap:12px;margin-bottom:16px;padding:12px 16px;display:flex}.bulk-title{text-transform:uppercase;letter-spacing:.05em;color:var(--text-muted);font-size:11px;font-weight:800}.bulk-buttons{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.bulk-action-btn{border-radius:var(--radius-sm);border:1px solid var(--border-color);background:var(--bg-primary);color:var(--text-secondary);cursor:pointer;transition:transform .12s var(--ease-out), background .12s var(--ease-out);align-items:center;gap:6px;padding:6px 12px;font-size:12px;font-weight:600;display:inline-flex}.bulk-action-btn:hover{background:var(--bg-secondary);color:var(--text-primary)}.bulk-action-btn:active{transform:scale(.97)}.bulk-select-wrapper{align-items:center;display:flex;position:relative}.bulk-icon{color:var(--text-muted);pointer-events:none;position:absolute;left:10px}.bulk-select{border-radius:var(--radius-sm);border:1px solid var(--border-color);background:var(--bg-primary);color:var(--text-secondary);cursor:pointer;height:30px;transition:border-color var(--transition-fast);outline:none;padding:6px 12px 6px 28px;font-size:12px;font-weight:600}.bulk-select:focus{border-color:var(--border-focus)}.attendance-roster-grid{margin-bottom:40px}.roster-list-cards{grid-template-columns:1fr;gap:12px;display:grid}@media (min-width:768px){.roster-list-cards{grid-template-columns:repeat(2,1fr)}}@media (min-width:1200px){.roster-list-cards{grid-template-columns:repeat(3,1fr)}}.roster-row-card{background:var(--bg-secondary);border:1px solid var(--border-color);border-radius:var(--radius-md);transition:transform var(--transition-normal), border-color var(--transition-normal);border-left:4px solid #0000;flex-direction:column;gap:12px;padding:16px;display:flex}.roster-row-card:hover{border-color:#c5c0b1}.roster-row-card.att-status-present{border-left-color:var(--status-available)}.roster-row-card.att-status-half_day{border-left-color:var(--status-partial)}.roster-row-card.att-status-absent{border-left-color:var(--status-sold)}.worker-header-info{align-items:center;gap:10px;display:flex;position:relative}.worker-name-role{flex-direction:column;flex:1;min-width:0;display:flex}.worker-name{color:var(--text-primary);white-space:nowrap;text-overflow:ellipsis;font-size:15px;font-weight:700;overflow:hidden}.worker-meta-badges{flex-wrap:wrap;align-items:center;gap:6px;margin-top:2px;display:flex}.worker-role-badge{text-transform:uppercase;letter-spacing:.05em;color:var(--accent-blue);background:#ff4f000d;border-radius:4px;padding:1px 6px;font-size:9px;font-weight:800}.worker-wage-rate{color:var(--text-muted);font-size:11px;font-weight:600}.clear-record-btn{width:28px;height:28px;color:var(--text-muted);cursor:pointer;transition:all var(--transition-fast);opacity:.4;background:0 0;border:none;border-radius:50%;justify-content:center;align-items:center;display:flex}.roster-row-card:hover .clear-record-btn{opacity:1}.clear-record-btn:hover{color:var(--status-sold);background:#ef444414}.worker-status-selector{grid-template-columns:repeat(3,1fr);gap:6px;display:grid}.status-pill{border:2px solid var(--border-color);background:var(--bg-primary);cursor:pointer;text-transform:uppercase;letter-spacing:.02em;height:38px;color:var(--text-muted);transition:transform .12s var(--ease-out), background .12s var(--ease-out), border-color .12s var(--ease-out);border-radius:10px;outline:none;justify-content:center;align-items:center;gap:4px;font-size:11px;font-weight:700;display:flex}.status-pill:active{transform:scale(.97)}.status-pill.present:hover:not(.active){border-color:var(--status-available);background:var(--status-available-bg)}.status-pill.half-day:hover:not(.active){border-color:var(--status-partial);background:var(--status-partial-bg)}.status-pill.absent:hover:not(.active){border-color:var(--status-sold);background:var(--status-sold-bg)}.status-pill.present.active{border-color:var(--status-available);color:var(--status-available);background:#10b9811a}.status-pill.half-day.active{border-color:var(--status-partial);color:var(--status-partial);background:#f59e0b1a}.status-pill.absent.active{border-color:var(--status-sold);color:var(--status-sold);background:#ef444414}.worker-badges-toolbar{border-top:1px solid var(--border-color);grid-template-columns:repeat(2,1fr);gap:6px;padding-top:12px;display:grid}.action-badge{border-radius:var(--radius-sm);border:1px solid var(--border-color);background:var(--bg-primary);color:var(--text-muted);cursor:pointer;transition:transform .12s var(--ease-out), background .12s var(--ease-out), border-color .12s var(--ease-out);text-align:left;align-items:center;gap:6px;min-width:0;padding:8px 10px;font-size:11px;font-weight:600;display:inline-flex}.action-badge span{white-space:nowrap;text-overflow:ellipsis;flex:1;overflow:hidden}.action-badge:active{transform:scale(.97)}.action-badge:hover{background:var(--bg-secondary);color:var(--text-primary);border-color:#b5af9f}.action-badge.has-val.project-badge{color:var(--accent-blue);background:#ff4f0008;border-color:#ff4f0033}.action-badge.has-val.petrol-badge{color:var(--status-partial);background:#f59e0b08;border-color:#f59e0b33}.action-badge.has-val.advance-badge{color:var(--accent-blue);background:#ff4f0008;border-color:#ff4f0033}.action-badge.has-val.remarks-badge{color:#6366f1;background:#6366f108;border-color:#6366f133}.worker-week-status{color:var(--text-muted);border-top:1px dashed var(--border-color);align-items:center;gap:4px;margin-top:4px;padding-top:8px;font-size:11px;font-weight:600;display:flex}.w-status-title{color:var(--text-secondary);font-weight:700}.roster-footer-btn-container{justify-content:flex-end;margin-top:20px;display:flex}.popover-overlay{-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);z-index:2000;background:#20151566;justify-content:center;align-items:center;padding:16px;display:flex;position:fixed;inset:0}.popover-modal{background:var(--bg-primary);border-radius:var(--radius-md);width:100%;max-width:380px;box-shadow:var(--shadow-lg);border:1px solid var(--border-color);flex-direction:column;display:flex;overflow:hidden}.scale-up{animation:popoverScaleUp .22s var(--ease-out) forwards}@keyframes popoverScaleUp{0%{opacity:0;transform:scale(.96)}to{opacity:1;transform:scale(1)}}.popover-header{border-bottom:1px solid var(--border-color);background:var(--bg-secondary);padding:16px 20px}.popover-title-row{justify-content:space-between;align-items:center;display:flex}.popover-title-row h3{color:var(--text-primary);margin:0;font-size:16px;font-weight:800}.popover-close-btn{width:24px;height:24px;color:var(--text-muted);cursor:pointer;transition:background var(--transition-fast);background:0 0;border:none;border-radius:50%;justify-content:center;align-items:center;display:flex}.popover-close-btn:hover{color:var(--text-primary);background:#2015150d}.popover-subtitle{color:var(--text-muted);margin-top:2px;font-size:12px;font-weight:600}.popover-body{padding:20px}.project-grid{flex-direction:column;gap:6px;max-height:240px;padding-right:4px;display:flex;overflow-y:auto}.project-option{border:1px solid var(--border-color);background:var(--bg-primary);cursor:pointer;transition:background var(--transition-fast), border-color var(--transition-fast);color:var(--text-secondary);text-align:left;border-radius:8px;align-items:center;gap:10px;padding:10px 12px;font-size:13px;font-weight:600;display:flex}.project-option:hover{background:var(--bg-secondary);color:var(--text-primary)}.project-option.selected{border-color:var(--accent-blue);color:var(--accent-blue);background:#ff4f000a}.proj-dot{border:1.5px solid var(--text-muted);border-radius:50%;flex-shrink:0;width:8px;height:8px}.proj-dot.active{border-color:var(--status-available);background:var(--status-available)}.popover-form-content{flex-direction:column;gap:14px;display:flex}.shortcut-buttons{gap:6px;display:flex}.shortcut-btn{border:1px solid var(--border-color);background:var(--bg-secondary);color:var(--text-secondary);cursor:pointer;transition:all var(--transition-fast);border-radius:8px;flex:1;padding:8px 4px;font-size:11px;font-weight:700}.shortcut-btn:hover{background:var(--border-color);color:var(--text-primary)}.shortcut-btn:active{transform:scale(.95)}.popover-footer-actions{justify-content:flex-end;gap:10px;margin-top:6px;display:flex}.advance-current-status{background:var(--bg-secondary);border-radius:8px;justify-content:space-between;align-items:center;padding:10px 12px;font-size:12px;display:flex}.advance-current-status strong{color:var(--accent-blue);font-size:14px}.directory-controls-row{flex-direction:column;align-items:stretch;gap:16px;margin-bottom:24px;display:flex}@media (min-width:600px){.directory-controls-row{flex-direction:row;justify-content:space-between;align-items:center}}.month-selector{border-radius:var(--radius-md);align-items:center;gap:10px;width:100%;max-width:320px;padding:6px 14px;display:flex}.month-lbl{text-transform:uppercase;color:var(--text-muted);white-space:nowrap;font-size:12px;font-weight:700}.month-field{color:var(--text-primary);cursor:pointer;outline:none;width:140px;font-weight:600;box-shadow:none!important;background:0 0!important;border:none!important;padding:4px 8px!important;font-size:15px!important}.wage-input-wrap{align-items:center;width:100%;display:flex;position:relative}.drawer-actions{border-top:1px solid var(--border-color);justify-content:flex-end;gap:12px;padding-top:16px;display:flex}.workers-list-grid{grid-template-columns:1fr;gap:16px;margin-bottom:40px;display:grid}@media (min-width:640px){.workers-list-grid{grid-template-columns:repeat(2,1fr)}}@media (min-width:1024px){.workers-list-grid{grid-template-columns:repeat(3,1fr)}}.worker-card-profile{background:var(--bg-secondary);border-radius:var(--radius-md);transition:all var(--transition-fast);flex-direction:column;gap:16px;padding:20px;display:flex}.worker-card-profile:hover{border-color:#c5c0b1;transform:translateY(-2px)}.worker-card-header{justify-content:space-between;align-items:flex-start;display:flex}.w-identity-row{align-items:center;gap:12px;display:flex}.w-identity{flex-direction:column;display:flex}.w-identity h4{color:var(--text-primary);font-size:17px;font-weight:700}.w-role{color:var(--accent-blue);text-transform:uppercase;letter-spacing:.02em;font-size:12px;font-weight:700}.w-phone{color:var(--text-muted);margin-top:2px;font-size:12px;font-weight:500}.worker-card-actions{gap:4px;display:flex}.icon-action-btn{cursor:pointer;width:30px;height:30px;transition:all var(--transition-fast);color:var(--text-muted);background:0 0;border:none;border-radius:50%;outline:none;justify-content:center;align-items:center;display:flex}.icon-action-btn.edit:hover{color:#6366f1;background:#6366f114}.icon-action-btn.history:hover{color:#0ea5e9;background:#0ea5e914}.icon-action-btn.delete:hover{color:#ef4444;background:#ef444414}.w-wage-tag{background:var(--bg-primary);border:1px solid var(--border-color);border-radius:var(--radius-sm);color:var(--text-secondary);align-self:flex-start;align-items:center;gap:6px;padding:8px 12px;font-size:13px;display:inline-flex}.w-wage-tag strong{color:var(--text-primary)}.worker-monthly-ledger{border-top:1px solid var(--border-color);flex-direction:column;gap:12px;padding-top:14px;display:flex}.ledger-title{color:var(--text-muted);text-transform:uppercase;letter-spacing:.05em;font-size:11px;font-weight:700}.ledger-metrics{grid-template-columns:repeat(3,1fr);gap:6px;display:grid}.ledger-block{background:var(--bg-primary);border:1px solid var(--border-color);text-align:center;border-radius:6px;flex-direction:column;align-items:center;padding:6px 4px;display:flex}.ledger-block .lbl{color:var(--text-muted);text-transform:uppercase;font-size:9px;font-weight:600}.ledger-block .val{font-size:14px;font-weight:800}.ledger-block .val.green{color:var(--status-available)}.ledger-block .val.orange{color:var(--status-partial)}.ledger-block .val.red{color:var(--status-sold)}.ledger-totals{background:var(--bg-primary);border:1px solid var(--border-color);border-radius:8px;flex-direction:column;gap:6px;padding:10px 12px;font-size:12px;display:flex}.tot-row{color:var(--text-muted);justify-content:space-between;font-weight:500;display:flex}.tot-row.main-total{border-top:1px solid var(--border-color);color:var(--text-primary);padding-top:6px;font-size:13px;font-weight:700}.tot-row.main-total .orange{color:var(--accent-blue)}.photo-action-btn{border:1px solid var(--border-color);background:var(--bg-secondary);color:var(--text-secondary);cursor:pointer;transition:all var(--transition-fast);border-radius:6px;align-items:center;gap:4px;padding:5px 10px;font-size:11px;font-weight:600;display:inline-flex}.photo-action-btn:hover{background:var(--bg-tertiary);color:var(--text-primary)}.photo-action-btn.danger{color:#ef4444;border-color:#ef44444d}.photo-action-btn.danger:hover{background:#ef444414}.photo-action-btn:disabled{opacity:.5;cursor:not-allowed}@keyframes spin{to{transform:rotate(360deg)}}.photo-spinner{border:2px solid #ffffff4d;border-top-color:#fff;border-radius:50%;width:20px;height:20px;animation:.7s linear infinite spin}.history-modal-header{justify-content:space-between;align-items:center;display:flex}.history-modal-header h3{color:var(--text-primary);font-size:17px;font-weight:700}.history-range-tabs{flex-wrap:wrap;gap:6px;display:flex}.range-tab{border:1px solid var(--border-color);background:var(--bg-secondary);color:var(--text-secondary);cursor:pointer;transition:all var(--transition-fast);border-radius:20px;padding:6px 14px;font-size:12px;font-weight:600}.range-tab.active{background:var(--accent-blue);color:#fff;border-color:var(--accent-blue)}.history-stats{grid-template-columns:repeat(4,1fr);gap:8px;display:grid}.hstat{border:1px solid var(--border-color);background:var(--bg-primary);border-radius:8px;flex-direction:column;align-items:center;gap:2px;padding:10px 8px;display:flex}.hstat span{font-size:18px;font-weight:800}.hstat label{text-transform:uppercase;color:var(--text-muted);font-size:9px;font-weight:600}.hstat.present span{color:var(--status-available)}.hstat.half span{color:var(--status-partial)}.hstat.absent span{color:var(--status-sold)}.hstat.earnings span{color:var(--accent-blue);font-size:14px}.history-records-list{flex-direction:column;gap:4px;max-height:340px;display:flex;overflow-y:auto}.history-record-row{background:var(--bg-secondary);border:1px solid var(--border-color);border-radius:8px;align-items:center;gap:12px;padding:10px 14px;font-size:13px;display:flex}.hr-date{color:var(--text-secondary);flex:1;font-weight:600}.hr-badge{border-radius:20px;padding:3px 10px;font-size:11px;font-weight:700}.badge-present{color:var(--status-available);background:#10b9811a}.badge-half_day{color:var(--status-partial);background:#f59e0b1a}.badge-absent{color:var(--status-sold);background:#ef44441a}.hr-remarks{color:var(--text-muted);font-size:11px;font-style:italic}.payment-wages-summary{background:var(--bg-primary);border:1px solid var(--border-color);border-radius:var(--radius-sm);flex-direction:column;gap:6px;margin-bottom:20px;padding:14px 16px;display:flex}.pws-row{color:var(--text-secondary);justify-content:space-between;font-size:13px;font-weight:500;display:flex}.pws-row.deduct{color:var(--status-sold)}.pws-row.add{color:var(--status-available)}.pws-row.net{border-top:1px solid var(--border-color);color:var(--text-primary);margin-top:4px;padding-top:8px;font-size:14px;font-weight:700}.payment-fields{grid-template-columns:1fr;gap:14px;margin-bottom:20px;display:grid}@media (min-width:420px){.payment-fields{grid-template-columns:repeat(2,1fr)}}.weekly-module{flex-direction:column;gap:20px;display:flex}.weekly-info-bar{border-radius:var(--radius-md);color:var(--text-muted);border:1px solid var(--border-color);background:var(--bg-secondary);align-items:center;gap:10px;padding:12px 18px;font-size:13px;display:flex}.weekly-info-bar strong{color:var(--text-primary)}.wpc-week-nav{background:var(--bg-tertiary);border-radius:10px;align-items:center;gap:8px;padding:6px 10px;display:flex}.wpc-week-info{text-align:center;flex-direction:column;flex:1;gap:1px;display:flex}.wpc-week-day{text-transform:uppercase;letter-spacing:.05em;color:var(--accent-blue);font-size:10px;font-weight:700}.wpc-week-dates{color:var(--text-secondary);font-size:11px;font-weight:600}.wpc-nav-btn{background:var(--bg-secondary);border:1px solid var(--border-color);width:26px;height:26px;color:var(--text-muted);cursor:pointer;transition:all var(--transition-fast);border-radius:7px;flex-shrink:0;justify-content:center;align-items:center;display:flex}.wpc-nav-btn:hover:not(:disabled){background:var(--bg-primary);color:var(--text-primary)}.wpc-nav-btn:disabled{opacity:.35;cursor:not-allowed}.weekly-pay-grid{grid-template-columns:1fr;gap:16px;display:grid}@media (min-width:640px){.weekly-pay-grid{grid-template-columns:repeat(2,1fr)}}@media (min-width:1024px){.weekly-pay-grid{grid-template-columns:repeat(3,1fr)}}.weekly-pay-card{border-radius:var(--radius-md);background:var(--bg-secondary);transition:all var(--transition-fast);flex-direction:column;gap:12px;padding:20px;display:flex}.weekly-pay-card:hover{transform:translateY(-2px)}.weekly-pay-card.is-paid{background:#10b98105;border-color:#10b9814d}.wpc-header{justify-content:space-between;align-items:flex-start;display:flex}.wpc-name{color:var(--text-primary);font-size:16px;font-weight:700}.paid-badge{color:var(--status-available);background:#10b9811a;border-radius:20px;align-items:center;gap:4px;padding:3px 10px;font-size:11px;font-weight:700;display:inline-flex}.unpaid-badge{color:var(--status-partial);background:#f59e0b1a;border-radius:20px;align-items:center;gap:4px;padding:3px 10px;font-size:11px;font-weight:700;display:inline-flex}.wpc-attendance-summary{flex-wrap:wrap;gap:6px;display:flex}.att-chip{border-radius:20px;padding:3px 10px;font-size:11px;font-weight:600}.att-chip.present{color:var(--status-available);background:#10b9811a}.att-chip.half{color:var(--status-partial);background:#f59e0b1a}.att-chip.days{background:var(--bg-primary);border:1px solid var(--border-color);color:var(--text-secondary)}.wpc-ledger{background:var(--bg-primary);border:1px solid var(--border-color);border-radius:8px;flex-direction:column;gap:5px;padding:10px 12px;font-size:12px;display:flex}.wpc-row{color:var(--text-secondary);justify-content:space-between;align-items:center;font-weight:500;display:flex}.wpc-row span{align-items:center;gap:4px;display:flex}.wpc-row.deduct{color:var(--status-sold)}.wpc-row.add{color:var(--status-available)}.wpc-row.net-row{border-top:1px solid var(--border-color);color:var(--text-primary);margin-top:2px;padding-top:6px;font-size:13px;font-weight:700}.wpc-notes{color:var(--text-muted);border-top:1px solid var(--border-color);margin-top:2px;padding-top:4px;font-size:11px;font-style:italic}.wpc-action-btn{justify-content:center;align-items:center;gap:6px;width:100%;padding:10px;font-size:13px;font-weight:600;display:flex}.weekly-total-bar{border-radius:var(--radius-md);background:var(--border-color);grid-template-columns:repeat(2,1fr);gap:1px;padding:0;display:grid;overflow:hidden}@media (min-width:640px){.weekly-total-bar{grid-template-columns:repeat(5,1fr)}}.wtb-item{background:var(--bg-secondary);flex-direction:column;align-items:center;gap:2px;padding:14px 16px;display:flex}.wtb-item span{text-transform:uppercase;color:var(--text-muted);font-size:11px;font-weight:600}.wtb-item strong{color:var(--text-primary);font-size:16px;font-weight:800}.empty-state{text-align:center;flex-direction:column;align-items:center;gap:16px;margin-top:20px;padding:60px 24px;display:flex}.empty-icon{color:var(--text-muted)}.empty-state h3{color:var(--text-primary);font-size:20px;font-weight:700}.empty-state p{color:var(--text-muted);max-width:320px;margin-bottom:8px;font-size:14px}@media (max-width:640px){.tab-navigation{white-space:nowrap;-webkit-overflow-scrolling:touch;scrollbar-width:none;gap:4px;width:100%;margin-bottom:16px;padding:4px;display:flex;overflow-x:auto}.tab-navigation::-webkit-scrollbar{display:none}.tab-btn{white-space:nowrap;flex:1;justify-content:center;padding:8px 12px;font-size:13px}.week-strip-wrapper{padding:12px}.week-strip-navigator{gap:4px}.nav-arrow-btn{border-radius:6px;width:28px;height:28px}.week-days-container{gap:4px}.week-day-pill{aspect-ratio:.8;min-width:32px;padding:6px 2px}.pill-day{font-size:8px}.pill-date{font-size:11px}.pill-dot{width:4px;height:4px;margin-top:2px}.dashboard-metrics-grid{grid-template-columns:repeat(3,1fr);gap:6px}.dash-metric{padding:6px 2px}.dash-metric .dm-lbl{font-size:8px}.dash-metric .dm-val{font-size:13px}.dash-metric.total-wages{grid-column:span 2}.bulk-actions-bar{flex-direction:column;align-items:stretch;gap:8px;padding:12px}.bulk-title{text-align:center;margin-bottom:2px}.bulk-buttons{grid-template-columns:1fr;gap:8px;width:100%;display:grid}.bulk-action-btn{justify-content:center;width:100%;padding:8px 14px;font-size:13px}.bulk-select-wrapper{width:100%}.bulk-select{width:100%;height:36px;padding-left:32px;font-size:13px}.modal-container{max-height:calc(100vh - 40px);margin:10px}.weekly-total-bar{grid-template-columns:repeat(2,1fr)}.wtb-item:nth-child(5){grid-column:span 2}.wtb-item{padding:10px 12px}.wtb-item strong{font-size:14px}}
