:root{--bg:#1c1c1e;--card:#2c2c2e;--card-2:#242426;--elev-1:#232325;--elev-2:#2a2a2c;--text:#f2f2f7;--text-dim:#aeaeb2;--muted:#8e8e93;--border:#3a3a3c;--primary:#1B5E20;--ring:0 0 0 3px rgba(27,94,32,.30);--primary-contrast:#ffffff;--danger:#ff453a;--ok:#30d158;--evt-guardrail:#16a34a;--evt-fence:#f97316;--evt-attenuator:#ef4444;--evt-temp-fence:#eab308;--evt-handrail:#3b82f6}.cal-shell{max-width:1200px;margin-inline:auto;padding-inline:.5rem}.surface{background:var(--card);color:var(--text);border:1px solid var(--border);border-radius:10px}.muted-sm{color:var(--muted);font-size:.875rem}.country-input{width:4.5rem;padding:.25rem .5rem;border-radius:.375rem;border:1px solid var(--border);background:var(--elev-1);color:var(--text)}.fc{font-size:clamp(12px,1.1vw,14px);color:var(--text)}.fc .fc-toolbar{display:flex;flex-wrap:wrap;gap:.5rem;align-items:center}.fc .fc-toolbar-title{font-size:clamp(16px,1.6vw,20px);color:var(--text);font-weight:700}.fc .fc-button{padding:.3rem .55rem;line-height:1;background:var(--elev-2);border:1px solid var(--border);color:var(--text)}.fc .fc-button-primary{background:var(--primary)!important;border-color:var(--primary)!important;color:var(--primary-contrast)!important}.fc .fc-button-group .fc-button{border-radius:0}.fc .fc-button-group .fc-button:first-child{border-top-left-radius:10px;border-bottom-left-radius:10px}.fc .fc-button-group .fc-button:last-child{border-top-right-radius:10px;border-bottom-right-radius:10px}.fc .fc-button-group .fc-button+.fc-button{margin-left:-1px}.fc .fc-button:hover{filter:brightness(1.1)}.fc .fc-button-primary:not(:disabled).fc-button-active,.fc .fc-button-primary:not(:disabled):active{background:var(--primary);border-color:var(--primary);color:var(--primary-contrast)}.fc-theme-standard .fc-scrollgrid,.fc-theme-standard td,.fc-theme-standard th{border-color:var(--border)}.fc .fc-daygrid-day-top{display:flex;align-items:center;justify-content:space-between;gap:4px;padding:2px 4px}.fc .fc-daygrid-day-number{color:var(--text-dim);font-size:clamp(11px,1vw,13px);position:relative;z-index:1}.fc .fc-daygrid-day.fc-day-other .fc-daygrid-day-number{opacity:.55}.fc .fc-daygrid-day.fc-day-today{background:transparent}.fc .fc-daygrid-day.fc-day-today .fc-daygrid-day-number{background:var(--primary);color:#fff;border-radius:999px;padding:2px 8px}.fc-daygrid-day-events,.fc-daygrid-day-frame{min-height:3.25rem}.fc-more-link{font-size:.75rem;color:var(--text)}.holiday-bg{background:color-mix(in srgb,var(--primary) 12%,transparent)}.fc .fc-event.evt-guardrail{--fc-event-bg-color:var(--evt-guardrail);--fc-event-border-color:var(--evt-guardrail);--fc-event-text-color:#fff}.fc .fc-event.evt-fence{--fc-event-bg-color:var(--evt-fence);--fc-event-border-color:var(--evt-fence);--fc-event-text-color:#fff}.fc .fc-event.evt-attenuator{--fc-event-bg-color:var(--evt-attenuator);--fc-event-border-color:var(--evt-attenuator);--fc-event-text-color:#fff}.fc .fc-event.evt-temp-fence{--fc-event-bg-color:var(--evt-temp-fence);--fc-event-border-color:var(--evt-temp-fence);--fc-event-text-color:#fff}.fc .fc-event.evt-handrail{--fc-event-bg-color:var(--evt-handrail);--fc-event-border-color:var(--evt-handrail);--fc-event-text-color:#fff}.fc .fc-event.evt-attenuator .fc-event-main,.fc .fc-event.evt-fence .fc-event-main,.fc .fc-event.evt-guardrail .fc-event-main,.fc .fc-event.evt-handrail .fc-event-main,.fc .fc-event.evt-temp-fence .fc-event-main{color:inherit}.modal-root{position:fixed;inset:0;background:color-mix(in srgb,#000 45%,transparent);display:grid;place-items:center;padding:1rem;backdrop-filter:saturate(120%) blur(8px)}.modal-card{width:min(720px,96vw);max-height:90vh;overflow:auto;background:linear-gradient(180deg,#2b2b2d,#1f1f21);color:var(--text);border:1px solid var(--border);border-radius:14px;box-shadow:0 12px 30px rgba(0,0,0,.45);padding:1rem 1.25rem}.modal-title{font-size:1.125rem;font-weight:600;margin-bottom:.75rem;color:var(--text)}.form-grid{display:grid;grid-template-columns:1fr;gap:.75rem;align-items:start}.form-grid *{box-sizing:border-box;min-width:0}.form-grid label{display:grid;gap:.25rem}.form-grid .label{font-size:.875rem;color:var(--text-dim)}.form-grid input,.form-grid select,.form-grid textarea{width:100%;border:1px solid var(--border);border-radius:10px;padding:.55rem .65rem;background:var(--card-2);color:var(--text)}.form-grid textarea{min-height:100px;resize:vertical}.inline{display:inline-flex;align-items:center;gap:.5rem}@media (min-width:640px){.form-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.span-2{grid-column:1/-1}}.modal-actions{display:flex;gap:.5rem;justify-content:flex-end}.btn{height:40px;padding:0 24px;display:inline-flex;align-items:center;gap:8px;border-radius:20px;border:none;background:var(--primary);color:var(--primary-contrast);font-size:1rem;font-family:inherit;cursor:pointer;transition:box-shadow .2s ease,background .2s ease}.btn:hover{box-shadow:0 2px 6px rgba(0,0,0,.3)}.btn:focus-visible{outline:none;box-shadow:var(--ring)}.btn:active{box-shadow:none}.btn.primary{background:var(--primary);color:var(--primary-contrast)}.btn.danger{background:var(--danger);color:var(--md-sys-color-on-error)}.btn.ghost{background:transparent;color:var(--primary)}.form-section{font-size:.9rem;font-weight:500;color:var(--text);margin-top:.5rem}.label .ico{width:1rem;height:1rem;margin-right:.25rem}.type-chip{width:12px;height:12px;border-radius:999px;display:inline-block}.shift-toggle{width:100%;border:1px solid var(--border);border-radius:10px;padding:.55rem .65rem;background:var(--card-2);color:var(--text)}.shift-toggle.night{background:var(--elev-2)}.form-grid input,.form-grid select,.form-grid textarea,.shift-toggle{min-height:44px}.fc .day-weather{margin-left:2px;margin-right:0;font-size:.72rem;color:var(--text-dim);text-decoration:none;display:inline-flex;gap:4px;align-items:center;opacity:.95}.fc .day-weather:hover{text-decoration:underline;color:var(--text)}.fc .day-weather .ico{font-size:.9em;line-height:1}.calendar-bleed,.todo-bleed{position:relative;left:50%;right:50%;margin-left:-50vw;margin-right:-50vw;width:100vw}.cal-controls{display:flex;align-items:center;justify-content:flex-start;min-height:56px;padding:0 16px;gap:10px;flex-wrap:wrap;margin-bottom:1rem}.cal-controls input{border:1px solid var(--border);border-radius:10px;padding:.55rem .65rem;background:var(--card-2);color:var(--text);min-height:44px}#quick-add-form,.search-input{width:100%;max-width:36rem}#quick-add-form{display:grid;grid-template-columns:1fr auto;gap:10px;align-items:center}.view-toggle .btn{min-height:44px}.tablet-split{display:flex;gap:1rem}.calendar-pane{flex:1 1 60%}.details-pane{flex:1 1 40%;overflow:auto}mark{background:var(--primary);color:var(--primary-contrast)}.todo-section{margin-top:1rem}.todo-title{font-size:1.125rem;font-weight:600;margin:.25rem 0 .75rem;color:var(--text);text-align:center}.todo-grid{display:grid;gap:.5rem;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));align-items:start}@media (min-width:1536px){.todo-grid{grid-template-columns:repeat(5,minmax(0,1fr))}}.todo-section *{box-sizing:border-box;min-width:0}.todo-col{background:var(--card);border:1px solid var(--border);border-radius:10px;padding:.5rem;min-height:140px;overflow:hidden;flex-direction:column}.todo-col,.todo-col-header{color:var(--text);display:flex}.todo-col-header{align-items:center;justify-content:space-between;font-weight:600;margin-bottom:.5rem;padding-left:6px}.todo-count{font-size:.75rem;background:#1e293b;color:#93c5fd;padding:.1rem .45rem;border-radius:999px;border:1px solid var(--border)}.todo-adder{display:grid;grid-template-columns:1fr auto;gap:.4rem;align-items:center;margin-bottom:.4rem;width:100%}.todo-input{width:100%;border:1px solid var(--border);border-radius:10px;padding:.35rem .5rem;background:var(--card-2);color:var(--text)}.todo-add-btn{white-space:nowrap}.todo-list{display:grid;gap:.4rem;width:100%;flex:1 1 auto;overflow:auto}.todo-card{border:1px solid var(--border);border-radius:10px;padding:.4rem .5rem;background:var(--elev-2);color:var(--text);overflow:visible}.todo-row{display:grid;grid-template-columns:1.1rem 1fr;gap:.5rem;align-items:flex-start}.todo-text{word-break:break-word;white-space:normal;color:var(--text)}.todo-actions{display:flex;justify-content:flex-end;gap:.5rem;align-items:center;margin-top:.35rem}.todo-move{display:none}.todo-del{border:1px solid var(--border);border-radius:8px;padding:0 .55rem;background:var(--card);color:var(--danger)}.fc .fc-daygrid-event.evt-guardrail,.fc .fc-event.evt-guardrail,.fc .fc-h-event.evt-guardrail,.fc .fc-timegrid-event.evt-guardrail{background-color:var(--evt-guardrail)!important;border-color:var(--evt-guardrail)!important;--fc-event-bg-color:var(--evt-guardrail);--fc-event-border-color:var(--evt-guardrail);color:#fff!important}.fc .fc-daygrid-event.evt-fence,.fc .fc-event.evt-fence,.fc .fc-h-event.evt-fence,.fc .fc-timegrid-event.evt-fence{background-color:var(--evt-fence)!important;border-color:var(--evt-fence)!important;--fc-event-bg-color:var(--evt-fence);--fc-event-border-color:var(--evt-fence);color:#fff!important}.fc .fc-daygrid-event.evt-attenuator,.fc .fc-event.evt-attenuator,.fc .fc-h-event.evt-attenuator,.fc .fc-timegrid-event.evt-attenuator{background-color:var(--evt-attenuator)!important;border-color:var(--evt-attenuator)!important;--fc-event-bg-color:var(--evt-attenuator);--fc-event-border-color:var(--evt-attenuator);color:#fff!important}.fc .fc-daygrid-event.evt-temp-fence,.fc .fc-event.evt-temp-fence,.fc .fc-h-event.evt-temp-fence,.fc .fc-timegrid-event.evt-temp-fence{background-color:var(--evt-temp-fence)!important;border-color:var(--evt-temp-fence)!important;--fc-event-bg-color:var(--evt-temp-fence);--fc-event-border-color:var(--evt-temp-fence);color:#fff!important}.fc .fc-daygrid-event.evt-handrail,.fc .fc-event.evt-handrail,.fc .fc-h-event.evt-handrail,.fc .fc-timegrid-event.evt-handrail{background-color:var(--evt-handrail)!important;border-color:var(--evt-handrail)!important;--fc-event-bg-color:var(--evt-handrail);--fc-event-border-color:var(--evt-handrail);color:#fff!important}.fc .fc-event.evt-attenuator .fc-event-main,.fc .fc-event.evt-fence .fc-event-main,.fc .fc-event.evt-guardrail .fc-event-main,.fc .fc-event.evt-handrail .fc-event-main,.fc .fc-event.evt-temp-fence .fc-event-main{color:inherit!important}.fc .event-gmap-link{margin-left:.35rem;font-size:.85em;color:currentColor;opacity:.85;text-decoration:none;flex:0 0 auto}.fc .event-gmap-link:hover{text-decoration:underline;opacity:1}.fc .fc-event .fc-event-main{overflow:hidden}.fc .fc-event .evt-title{display:inline-block;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1 1 auto;min-width:0}.subtasks{margin-top:.25rem}.subtasks .input-row{display:grid;grid-template-columns:1fr auto;gap:.5rem;align-items:center}.subtasks .input-row .subtask-input{width:100%;border:1px solid var(--border);border-radius:10px;padding:.5rem .6rem;background:var(--card-2);color:var(--text)}.subtasks .subtask-list{display:grid;gap:.5rem;margin-top:.5rem}.subtasks .subtask-item{display:grid;grid-template-columns:1.1rem 1fr auto;align-items:center;gap:.5rem}.subtasks .subtask-text{color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.subtasks .subtask-text.muted{color:var(--muted);text-decoration:line-through}.subtasks .subtask-remove{border:1px solid var(--border);border-radius:8px;padding:.2rem .55rem;background:var(--card);color:var(--danger)}