:root{--ink: #1a1a1a;--ink-light: #4a4a4a;--ink-lighter: #7a7a7a;--ink-faint: #b0b0b0;--bg: #fffff8;--bg-warm: #fafaf2;--surface: #fffff8;--rule: #e0ddd4;--rule-strong: #c8c4b8;--sidebar-bg: #f5f4ee;--accent: #8b0000;--accent-muted: #b85450;--weekend-bg: #f4f3ef;--pass-text: #4a6a4a;--pass-bg: #e8f0e8;--state-md: #5a7a9a;--state-va: #6a8a5a;--state-ct: #8a7a5a;--font-body: "Crimson Pro", Georgia, serif;--font-ui: "Source Sans 3", system-ui, sans-serif;--font-mono: "JetBrains Mono", monospace;--shadow-sm: 0 1px 2px rgba(26,26,26,.06)}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}body{font-family:var(--font-ui);background:var(--bg);color:var(--ink);line-height:1.5;-webkit-font-smoothing:antialiased}.fc{--fc-border-color: var(--rule);--fc-today-bg-color: var(--bg-warm);--fc-page-bg-color: var(--surface);--fc-neutral-bg-color: var(--bg);--fc-event-border-color: transparent;font-family:var(--font-ui)}.fc .fc-toolbar-title{font-family:var(--font-body);font-size:1.4rem;font-weight:300;color:var(--ink);letter-spacing:-.3px}.fc .fc-col-header-cell-cushion{font-family:var(--font-ui);font-size:.7rem;font-weight:600;letter-spacing:1.5px;text-transform:uppercase;color:var(--ink-lighter);padding:.6em 0}.fc .fc-button{font-family:var(--font-ui);font-size:.75rem;font-weight:600;letter-spacing:.8px;text-transform:uppercase;border-radius:0;padding:.4em .9em;border:1px solid var(--rule-strong);background:var(--surface);color:var(--ink-light)}.fc .fc-button:hover{background:var(--bg-warm);color:var(--ink)}.fc .fc-button-primary:not(:disabled).fc-button-active,.fc .fc-button-primary:not(:disabled):active{background:var(--ink);border-color:var(--ink);color:var(--bg)}.fc .fc-event{border-radius:0;border-left:3px solid;font-size:.78rem;padding:2px 6px;cursor:pointer;background:var(--bg-warm);color:var(--ink)}.fc .fc-timegrid-event .fc-event-title{font-family:var(--font-ui);font-weight:600;font-size:.78rem}.fc .fc-timegrid-event .fc-event-time{font-family:var(--font-mono);font-size:.7rem;font-weight:400;color:var(--ink-lighter)}.fc .fc-daygrid-event{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.fc .fc-timegrid-slot-label-cushion{font-family:var(--font-mono);font-size:.7rem;color:var(--ink-faint)}.fc .fc-daygrid-day-number{font-family:var(--font-mono);font-size:.75rem;color:var(--ink-lighter);padding:4px 8px}.fc .fc-day-today .fc-daygrid-day-number{color:var(--accent);font-weight:500}.fc .fc-scrollgrid{border:none}.fc .fc-day-sat,.fc .fc-day-sun{background:var(--weekend-bg)}.fc .fc-day-today.fc-day-sat,.fc .fc-day-today.fc-day-sun{background:var(--bg-warm)}.fc .fc-col-header-cell.fc-day-sat .fc-col-header-cell-cushion,.fc .fc-col-header-cell.fc-day-sun .fc-col-header-cell-cushion{color:var(--ink-faint)}.fc .fc-scrollgrid td{border-color:var(--rule)}.fc .fc-timegrid-now-indicator-line{border-color:var(--accent);border-width:1px 0 0 0;left:0!important;right:0!important}.fc .fc-timegrid-now-indicator-arrow{border-color:var(--accent);left:0}.app{display:flex;flex-direction:column;min-height:100vh}.header{display:flex;align-items:baseline;justify-content:space-between;padding:.9rem 1.5rem .7rem;border-bottom:1px solid var(--rule)}.header-left{display:flex;align-items:baseline;gap:1rem}.header h1{font-family:var(--font-ui);font-size:.65rem;font-weight:600;letter-spacing:2.8px;text-transform:uppercase;color:var(--ink-light)}.header .subtitle{font-family:var(--font-body);font-size:.95rem;font-weight:400;font-style:italic;color:var(--ink-lighter)}.header .subtitle-secondary{color:var(--ink-faint)}.header-right{display:flex;align-items:center;gap:1rem}.sync-badge{display:flex;align-items:center;gap:.4rem;font-family:var(--font-mono);font-size:.7rem;color:var(--ink-faint)}.sync-dot{width:6px;height:6px;border-radius:50%;background:var(--pass-text)}.sync-dot.stale{background:var(--state-ct)}.sync-dot.error{background:var(--accent)}.main-content{display:flex;flex:1;overflow:hidden}.calendar-container{flex:1;padding:1rem 1.5rem;overflow-y:auto}.pill-bar{display:flex;align-items:flex-end;gap:1.25rem;padding:.5rem 1.5rem;border-bottom:1px solid var(--rule)}.pill-group{display:flex;flex-direction:column;gap:.15rem}.pill-label{font-family:var(--font-ui);font-size:.45rem;font-weight:600;letter-spacing:1.2px;text-transform:uppercase;color:var(--ink-faint)}.pill{font-family:var(--font-ui);font-size:.55rem;font-weight:600;letter-spacing:.4px;text-transform:uppercase;padding:.15rem .4rem;border-radius:2px;background:var(--bg);white-space:nowrap}.pill--request{color:#5a7a9a;border:1px solid #5a7a9a}.pill--cert{color:#8a5a5a;border:1px solid #8a5a5a}.pill--timing{color:#6a8a5a;border:1px solid #6a8a5a}.pill--method{color:#8a7a5a;border:1px solid #8a7a5a}.pill--purpose{color:#7a6a8a;border:1px solid #7a6a8a}.pill--visit{color:#5a8a8a;border:1px solid #5a8a8a}.detail-panel{width:340px;background:var(--surface);border-left:1px solid var(--rule);padding:1.25rem;overflow-y:auto}.detail-panel h2{font-family:var(--font-ui);font-size:.65rem;font-weight:600;letter-spacing:2px;text-transform:uppercase;color:var(--ink-light);margin-bottom:1rem;padding-bottom:.5rem;border-bottom:1px solid var(--rule)}.detail-field{margin-bottom:.75rem}.detail-field label{display:block;font-family:var(--font-ui);font-size:.6rem;font-weight:600;letter-spacing:1.5px;text-transform:uppercase;color:var(--ink-faint);margin-bottom:.1rem}.detail-field .value{font-family:var(--font-body);font-size:.95rem;line-height:1.4;color:var(--ink)}.detail-field .value-mono{font-family:var(--font-mono);font-size:.82rem;color:var(--ink-light)}.detail-field a{color:var(--ink-light);text-decoration:underline;text-decoration-color:var(--rule-strong);text-underline-offset:2px}.detail-field a:hover{color:var(--ink);text-decoration-color:var(--ink)}.maps-link{display:inline-flex;align-items:center;gap:.3rem;font-family:var(--font-ui);font-size:.75rem;font-weight:600;color:var(--ink-light);text-decoration:none;border-bottom:1px solid var(--rule-strong);padding-bottom:1px;margin-top:.25rem}.maps-link:hover{color:var(--ink);border-bottom-color:var(--ink)}.detail-actions{display:flex;gap:.5rem;margin-top:1.25rem;padding-top:1rem;border-top:1px solid var(--rule)}.btn{font-family:var(--font-ui);font-size:.72rem;font-weight:600;letter-spacing:.8px;text-transform:uppercase;padding:.5rem 1rem;border:1px solid var(--rule-strong);border-radius:0;background:var(--surface);color:var(--ink-light);cursor:pointer}.btn:hover{background:var(--bg-warm);color:var(--ink)}.btn-primary{background:var(--ink);border-color:var(--ink);color:var(--bg)}.btn-primary:hover{background:var(--ink-light)}.btn-muted{color:var(--ink-faint);border-color:var(--rule);cursor:not-allowed;opacity:.6}.btn-muted:hover{background:var(--surface);color:var(--ink-faint)}.btn-danger{color:var(--accent);border-color:var(--accent-muted)}.btn-danger:hover{background:#faf5f5}.close-btn{float:right;background:none;border:none;font-size:1.1rem;cursor:pointer;color:var(--ink-faint);padding:0;line-height:1}.close-btn:hover{color:var(--ink)}.modal-overlay{position:fixed;inset:0;background:#1a1a1a59;display:flex;align-items:center;justify-content:center;z-index:1000}.modal{background:var(--surface);border:1px solid var(--rule);padding:1.5rem;width:420px;max-width:95vw;max-height:80vh;overflow-y:auto}.modal h2{font-family:var(--font-ui);font-size:.65rem;font-weight:600;letter-spacing:2px;text-transform:uppercase;color:var(--ink-light);margin-bottom:1.25rem;padding-bottom:.5rem;border-bottom:1px solid var(--rule)}.form-group{margin-bottom:1rem}.form-group label{display:block;font-family:var(--font-ui);font-size:.65rem;font-weight:600;letter-spacing:1px;text-transform:uppercase;color:var(--ink-lighter);margin-bottom:.3rem}.form-group input,.form-group select{width:100%;padding:.5rem .6rem;font-family:var(--font-body);font-size:.95rem;border:1px solid var(--rule);border-radius:0;background:var(--surface);color:var(--ink)}.form-group input:focus,.form-group select:focus{outline:none;border-color:var(--ink-light)}.search-results{max-height:200px;overflow-y:auto;border:1px solid var(--rule);margin-top:.25rem}.search-result{padding:.5rem .75rem;cursor:pointer;border-bottom:1px solid var(--rule);font-size:.85rem}.search-result:last-child{border-bottom:none}.search-result:hover{background:var(--bg-warm)}.search-result .project-id{font-family:var(--font-mono);font-size:.78rem;font-weight:500;color:var(--ink)}.search-result .address{font-family:var(--font-body);font-size:.85rem;color:var(--ink-lighter)}.search-result .jurisdiction{font-family:var(--font-ui);font-size:.7rem;color:var(--ink-faint)}.state-dot{display:inline-block;width:6px;height:6px;border-radius:50%;margin-right:4px}.state-dot.md{background:var(--state-md)}.state-dot.va{background:var(--state-va)}.state-dot.ct{background:var(--state-ct)}.event-md{border-left-color:var(--state-md)!important}.event-va{border-left-color:var(--state-va)!important}.event-ct{border-left-color:var(--state-ct)!important}.fc .fc-list-day-cushion{font-family:var(--font-ui);font-size:.7rem;font-weight:600;letter-spacing:1px;text-transform:uppercase;background:var(--sidebar-bg);color:var(--ink-light)}.fc .fc-list-event-time{font-family:var(--font-mono);font-size:.8rem;color:var(--ink-lighter)}.fc .fc-list-event-title{font-family:var(--font-ui);font-size:.85rem}.fc .fc-list-event:hover td{background:var(--bg-warm)}.fc .fc-daygrid-event{font-size:.72rem;padding:1px 4px;border-left:3px solid}.fc .fc-daygrid-event .fc-event-title{font-family:var(--font-ui);font-weight:600;font-size:.72rem}.fc .event-cancelled{opacity:.55}.fc .event-cancelled .fc-event-title{text-decoration:line-through}@media(max-width:768px){.main-content{flex-direction:column}.detail-panel{width:100%;border-left:none;border-top:1px solid var(--rule);max-height:50vh}.header{flex-direction:column;gap:.25rem}}
