:root{--color-bg: #f6f5f2;--color-surface: #ffffff;--color-text: #26241f;--color-muted: #6f6a60;--color-border: #dcd8cf;--color-accent: #4a6b5d;--color-accent-contrast: #ffffff;--color-danger: #9c3d2e;--color-danger-bg: #f8e9e6;--font-body: system-ui, -apple-system, "Segoe UI", sans-serif;--radius: 8px;--space-1: .25rem;--space-2: .5rem;--space-3: .75rem;--space-4: 1rem;--space-6: 1.5rem;--tab-bar-height: 3.25rem}*{box-sizing:border-box}body{margin:0;background:var(--color-bg);color:var(--color-text);font-family:var(--font-body);line-height:1.5}.button{font:inherit;border-radius:var(--radius);padding:var(--space-2) var(--space-4);border:1px solid var(--color-border);background:var(--color-surface);color:var(--color-text);cursor:pointer}.button-primary{background:var(--color-accent);border-color:var(--color-accent);color:var(--color-accent-contrast)}.button-primary:disabled{opacity:.6;cursor:default}.button-quiet{background:transparent}.boot-screen,.login-page{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:var(--space-4)}.boot-message{color:var(--color-muted)}.error-boundary-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);padding:var(--space-6);max-width:24rem;text-align:center;display:grid;gap:var(--space-3)}.error-boundary-title{margin:0;font-weight:600}.error-boundary-hint{margin:0;color:var(--color-muted)}.login-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);padding:var(--space-6);width:100%;max-width:20rem;display:flex;flex-direction:column;gap:var(--space-3)}.login-title{margin:0;font-size:1.25rem;text-align:center}.login-label{font-size:.875rem;color:var(--color-muted)}.login-input{font:inherit;padding:var(--space-2) var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius)}.login-input:focus,.button:focus-visible,.tab-button:focus-visible{outline:2px solid var(--color-accent);outline-offset:1px}.login-error{margin:0;padding:var(--space-2) var(--space-3);border-radius:var(--radius);background:var(--color-danger-bg);color:var(--color-danger);font-size:.875rem}.app-header{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);padding:var(--space-3) var(--space-4);background:var(--color-surface);border-bottom:1px solid var(--color-border)}.app-brand{font-weight:600}.app-identity{display:flex;align-items:center;gap:var(--space-2)}.identity-badge{background:var(--color-accent);color:var(--color-accent-contrast);border-radius:999px;padding:var(--space-1) var(--space-3);font-size:.875rem}.read-only-badge{border:1px solid var(--color-border);color:var(--color-muted);border-radius:999px;padding:var(--space-1) var(--space-3);font-size:.75rem;text-transform:uppercase;letter-spacing:.04em}.tab-nav{display:flex;gap:var(--space-2);padding:var(--space-2) var(--space-4);background:var(--color-surface);border-bottom:1px solid var(--color-border)}.tab-button{font:inherit;flex:0 0 auto;border:none;background:transparent;color:var(--color-muted);padding:var(--space-2) var(--space-3);border-radius:var(--radius);cursor:pointer}.tab-button-active{background:var(--color-bg);color:var(--color-text);font-weight:600}.app-page{padding:var(--space-4);max-width:60rem;margin:0 auto}.page-title{margin-top:var(--space-2)}.page-placeholder{color:var(--color-muted)}@media(max-width:640px){.tab-nav{position:fixed;bottom:0;left:0;right:0;height:calc(var(--tab-bar-height) + env(safe-area-inset-bottom,0px));padding:0 0 env(safe-area-inset-bottom,0px);border-bottom:none;border-top:1px solid var(--color-border);gap:0}.tab-button{flex:1 1 0;border-radius:0;height:100%}.app-page{padding-bottom:calc(var(--tab-bar-height) + env(safe-area-inset-bottom,0px) + var(--space-4))}}:root{--color-event: var(--color-accent)}.calendar-toolbar{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:var(--space-2);margin-bottom:var(--space-2)}.calendar-month-title{margin:0;font-size:1.125rem}.calendar-nav{display:flex;gap:var(--space-2)}.calendar-error{padding:var(--space-2) var(--space-3);border-radius:var(--radius);background:var(--color-danger-bg);color:var(--color-danger)}.calendar-loading{color:var(--color-muted)}.filter-chips{display:flex;align-items:center;flex-wrap:wrap;gap:var(--space-2);margin-bottom:var(--space-3)}.chip{font:inherit;font-size:.8125rem;border:1px solid var(--color-border);background:var(--color-surface);color:var(--color-muted);border-radius:999px;padding:var(--space-1) var(--space-3);cursor:pointer}.chip-active{border-color:var(--person-color, var(--color-accent));color:var(--color-text);background:var(--color-bg);font-weight:600}.chip-divider{width:1px;height:1.25rem;background:var(--color-border)}.month-grid{display:flex;flex-direction:column;border:1px solid var(--color-border);border-radius:var(--radius);background:var(--color-surface);overflow:hidden}.month-week{display:grid;grid-template-columns:repeat(7,1fr)}.month-week+.month-week{border-top:1px solid var(--color-border)}.month-weekday{padding:var(--space-1) var(--space-2);font-size:.75rem;text-transform:uppercase;letter-spacing:.04em;color:var(--color-muted);text-align:center}.month-day{min-height:5.5rem;padding:var(--space-1);border-left:1px solid var(--color-border);display:flex;flex-direction:column;gap:2px;cursor:pointer}.month-day:first-child{border-left:none}.day-outside{background:var(--color-bg);color:var(--color-muted)}.day-number{font:inherit;font-size:.8125rem;align-self:flex-start;border:none;background:transparent;color:inherit;padding:2px 6px;border-radius:999px;cursor:pointer}.day-today .day-number{background:var(--color-accent);color:var(--color-accent-contrast);font-weight:600}.day-items{display:flex;flex-direction:column;gap:2px;overflow:hidden}.day-item{font-size:.6875rem;line-height:1.3;padding:1px 6px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-height:1.05rem}.event-pill{background:var(--event-color, var(--color-event));color:var(--color-accent-contrast);border-radius:0}.pill-start{border-top-left-radius:999px;border-bottom-left-radius:999px}.pill-end{border-top-right-radius:999px;border-bottom-right-radius:999px}.holiday-entry{border:1.5px solid var(--person-color, var(--color-muted));color:var(--color-text);border-radius:999px;background:transparent}.legend{list-style:none;display:flex;flex-wrap:wrap;gap:var(--space-3);padding:0;margin:var(--space-3) 0 0;font-size:.8125rem;color:var(--color-muted)}.legend-item{display:flex;align-items:center;gap:var(--space-1)}.legend-swatch{width:.875rem;height:.875rem;border-radius:4px;display:inline-block}.swatch-event{background:var(--event-color, var(--color-event))}.legend-swatch-strip{display:inline-flex;overflow:hidden}.legend-swatch-slice{flex:1;background:var(--event-color)}.swatch-holiday{border:2px solid var(--person-color, var(--color-muted));background:transparent}.overlay{position:fixed;inset:0;background:#26241f59;display:flex;align-items:center;justify-content:center;padding:var(--space-4);z-index:10}.day-sheet,.event-form-card,.conflict-dialog{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);padding:var(--space-4);width:100%;max-width:26rem;max-height:80vh;overflow-y:auto}.day-sheet-header{display:flex;align-items:center;justify-content:space-between;gap:var(--space-2)}.day-sheet-title{margin:0}.day-sheet-empty{color:var(--color-muted)}.day-sheet-list{list-style:none;margin:var(--space-3) 0 0;padding:0;display:flex;flex-direction:column;gap:var(--space-2)}.day-sheet-item{display:flex;align-items:center;gap:var(--space-2)}.day-sheet-swatch{flex:0 0 auto;width:.75rem;height:.75rem;border-radius:50%}.day-sheet-swatch.swatch-holiday{border-width:2px}.day-sheet-text{display:flex;flex-direction:column;min-width:0;flex:1 1 auto}.day-sheet-item-title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.day-sheet-item-meta{font-size:.75rem;color:var(--color-muted)}.event-form-title{margin:0 0 var(--space-3)}.form-field{display:flex;flex-direction:column;gap:var(--space-1);margin-bottom:var(--space-3);min-width:0}.form-field label{font-size:.875rem;color:var(--color-muted)}.text-input{font:inherit;padding:var(--space-2) var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius);background:var(--color-surface);color:var(--color-text);max-width:100%}.form-dates{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-3)}.field-error{margin:0;font-size:.8125rem;color:var(--color-danger)}.form-error{margin-bottom:var(--space-3)}.event-form-actions{display:flex;align-items:center;flex-wrap:wrap;gap:var(--space-2)}.event-form-spacer{flex:1 1 auto}.button-danger{background:var(--color-danger);border-color:var(--color-danger);color:var(--color-accent-contrast)}.button-danger-quiet{background:transparent;color:var(--color-danger);border-color:var(--color-danger)}.delete-confirm{display:flex;align-items:center;gap:var(--space-2);font-size:.875rem;color:var(--color-danger)}.overlay-conflict{z-index:20}.conflict-message{margin:0 0 var(--space-3)}.conflict-actions{display:flex;justify-content:flex-end;gap:var(--space-2)}@media(max-width:640px){.calendar-page .button,.calendar-page .chip,.login-card .button{min-height:44px}.month-day{min-height:3.25rem;padding:2px}.day-items{flex-direction:row;flex-wrap:wrap;gap:3px;padding:2px}.day-item{width:8px;height:8px;min-height:0;padding:0;border-radius:50%}.day-item-label{display:none}.event-pill.pill-start,.event-pill.pill-end{border-radius:50%}.holiday-entry{border-width:2px}.overlay{align-items:flex-end;padding:0}.day-sheet,.event-form-card{max-width:none;border-radius:var(--radius) var(--radius) 0 0;border-bottom:none;padding-bottom:calc(var(--space-4) + env(safe-area-inset-bottom,0px))}.overlay-conflict{align-items:center;padding:var(--space-4)}.conflict-dialog{border-radius:var(--radius)}}:root{--color-unlock: #2f6f4f;--color-negative: var(--color-danger);--color-negative-bg: var(--color-danger-bg)}.pto-toolbar{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:var(--space-2);margin-bottom:var(--space-2)}.section-title{margin:0;font-size:1.125rem}.notice-banner{display:flex;align-items:center;justify-content:space-between;gap:var(--space-2);margin:0 0 var(--space-2);padding:var(--space-2) var(--space-3);border-radius:var(--radius);background:var(--color-danger-bg);color:var(--color-danger);border:1px solid var(--color-danger)}.notice-dismiss{color:inherit;border:none;font-size:1rem;line-height:1}.balance-cards{display:grid;grid-template-columns:repeat(2,1fr);gap:var(--space-3);margin-bottom:var(--space-4)}.balance-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);padding:var(--space-3) var(--space-4)}.balance-card-name{margin:0 0 var(--space-1);font-size:1rem}.balance-card-main{margin:0 0 var(--space-1)}.balance-card-amount{font-size:1.375rem;font-weight:600}.balance-card-days,.balance-card-allowance{color:var(--color-muted);font-size:.875rem}.balance-card-allowance{margin:var(--space-1) 0 0}.timeline-section{margin-bottom:var(--space-4)}.timeline-header{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:var(--space-2);margin-bottom:var(--space-2)}.timeline-switcher{display:flex;gap:var(--space-2)}.timeline-scroll{max-height:22rem;overflow-y:auto;border:1px solid var(--color-border);border-radius:var(--radius);background:var(--color-surface)}.timeline-list{list-style:none;margin:0;padding:0}.timeline-row{display:grid;grid-template-columns:7.5rem 1fr auto auto;align-items:baseline;gap:var(--space-3);padding:var(--space-2) var(--space-3);font-size:.875rem}.timeline-row+.timeline-row{border-top:1px solid var(--color-border)}.timeline-date{color:var(--color-muted);white-space:nowrap}.timeline-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.timeline-row-accrual .timeline-amount{color:var(--color-unlock);font-weight:600}.timeline-row-deduction .timeline-amount{color:var(--color-negative)}.timeline-amount,.timeline-balance{font-variant-numeric:tabular-nums;text-align:right;white-space:nowrap}.timeline-balance{font-weight:600}.timeline-row-negative{background:var(--color-negative-bg)}.timeline-row-negative .timeline-balance{color:var(--color-negative)}.deduction-preview{margin:0 0 var(--space-3);padding:var(--space-2) var(--space-3);border-radius:var(--radius);background:var(--color-bg);font-size:.875rem}.field-hint{margin:0;font-size:.8125rem;color:var(--color-muted)}.dip-warning{margin:0 0 var(--space-3);padding:var(--space-2) var(--space-3);border:1px solid var(--color-danger);border-radius:var(--radius);background:var(--color-danger-bg);color:var(--color-danger);font-size:.875rem}.dip-warning-text{margin:0 0 var(--space-2)}.dip-warning-actions{display:flex;justify-content:flex-end;gap:var(--space-2)}.bookings-section{margin-bottom:var(--space-4)}.bookings-list{list-style:none;margin:var(--space-2) 0 0;padding:0;display:flex;flex-direction:column;gap:var(--space-2)}.booking-row{display:flex;align-items:center;flex-wrap:wrap;gap:var(--space-2);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);padding:var(--space-2) var(--space-3)}.booking-person{flex:0 0 auto;font-size:.8125rem;border:1.5px solid var(--person-color, var(--color-muted));border-radius:999px;padding:1px var(--space-2)}.booking-text{display:flex;flex-direction:column;min-width:0;flex:1 1 auto}.booking-title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.booking-notes{font-size:.8125rem;color:var(--color-muted)}.booking-actions{display:flex;gap:var(--space-2)}.bookings-empty{color:var(--color-muted)}@media(max-width:640px){.balance-cards{grid-template-columns:1fr}.pto-page .button,.pto-page .chip{min-height:44px}.timeline-row{grid-template-columns:6rem 1fr auto}.timeline-label{grid-column:1 / -1;grid-row:2;color:var(--color-muted);font-size:.8125rem}.booking-actions{flex:1 1 100%;justify-content:flex-end}}.settings-person{margin-bottom:var(--space-6)}.settings-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(16rem,1fr));gap:var(--space-4);margin-top:var(--space-3)}.settings-card{border:1px solid var(--color-border);border-radius:var(--radius);padding:var(--space-4);background:var(--color-surface);min-width:0}.settings-card-title{margin:0 0 var(--space-2);font-size:.9375rem}.settings-current{margin:0 0 var(--space-3);font-size:.8125rem;color:var(--color-muted)}.settings-duration{display:flex;gap:var(--space-3)}.settings-duration .form-field{flex:1}.settings-timing{margin:var(--space-2) 0;font-size:.8125rem;color:var(--color-muted)}.settings-actions{display:flex;justify-content:flex-end;margin-top:var(--space-2)}.holiday-list{list-style:none;margin:0 0 var(--space-3);padding:0;display:grid;gap:var(--space-2)}.holiday-row{display:flex;align-items:center;gap:var(--space-3);border-bottom:1px solid var(--color-border);padding-bottom:var(--space-2)}.holiday-date{font-variant-numeric:tabular-nums;white-space:nowrap}.holiday-label{flex:1;color:var(--color-muted);min-width:0;overflow-wrap:anywhere}.holidays-empty{color:var(--color-muted)}@media(max-width:640px){.settings-cards{grid-template-columns:1fr}.settings-page .button{min-height:44px}}.nikkah-theme{--color-bg: #0b1f19;--color-surface: #113026;--color-text: #f3ead7;--color-muted: #b8ab8d;--color-border: #2c5245;--color-accent: #c9a227;--color-accent-contrast: #211a06;--color-danger: #e6937d;--color-danger-bg: #35201a;--color-event: #3f7d67;--color-unlock: #d8bd63;--color-negative: #e6937d;--color-negative-bg: #35201a;--nikkah-gold: #c9a227;--nikkah-ivory: #f3ead7;--nikkah-night: #081712;background:var(--color-bg);color:var(--color-text);border-radius:var(--radius);padding:var(--space-4);margin:0 calc(-1 * var(--space-2))}.nikkah-intro{position:fixed;inset:0;z-index:30;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--space-3);cursor:pointer;background:linear-gradient(160deg,#081712,#0b241c 55%,#123329);color:var(--nikkah-ivory, #f3ead7)}.intro-scene{width:min(80vw,26rem);height:auto}.intro-title{margin:0;font-size:1.5rem;letter-spacing:.06em;color:var(--nikkah-ivory, #f3ead7)}.intro-skip-hint{margin:0;font-size:.8125rem;color:#f3ead7b3}.nikkah-intro-animated{animation:nikkah-fade-in calc(var(--intro-duration, 2.5s) * .16) ease-out both}.nikkah-intro-animated .intro-pattern{opacity:.22;animation:nikkah-pattern-reveal calc(var(--intro-duration, 2.5s) * .44) ease-out both}.nikkah-intro-animated .intro-crescent{transform-origin:200px 130px;animation:nikkah-crescent-in calc(var(--intro-duration, 2.5s) * .4) calc(var(--intro-duration, 2.5s) * .2) cubic-bezier(.2,.7,.3,1.05) both}.nikkah-intro-animated .intro-star{opacity:0;animation:nikkah-twinkle calc(var(--intro-duration, 2.5s) * .52) calc(var(--intro-duration, 2.5s) * var(--star-delay, 0) * .4) ease-in-out both}.nikkah-intro-animated .intro-title{animation:nikkah-title-rise calc(var(--intro-duration, 2.5s) * .36) calc(var(--intro-duration, 2.5s) * .4) ease-out both}@keyframes nikkah-fade-in{0%{opacity:0}to{opacity:1}}@keyframes nikkah-pattern-reveal{0%{clip-path:circle(0% at 50% 45%)}to{clip-path:circle(75% at 50% 45%)}}@keyframes nikkah-crescent-in{0%{opacity:0;transform:scale(.6) rotate(-8deg)}to{opacity:1;transform:scale(1) rotate(0)}}@keyframes nikkah-twinkle{0%{opacity:0;transform:scale(.6)}60%{opacity:1;transform:scale(1.1)}to{opacity:.85;transform:scale(1)}}@keyframes nikkah-title-rise{0%{opacity:0;transform:translateY(14px)}to{opacity:1;transform:translateY(0)}}.nikkah-intro-static{animation:nikkah-fade-in calc(var(--intro-duration, 2.5s) * .2) ease-out both}.nikkah-intro-static .intro-pattern{opacity:.22}@media(prefers-reduced-motion:reduce){.nikkah-intro .intro-pattern,.nikkah-intro .intro-crescent,.nikkah-intro .intro-star,.nikkah-intro .intro-title{animation:none}.nikkah-intro .intro-pattern{opacity:.22}.nikkah-intro .intro-star{opacity:.85}}.plan-banner{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:var(--space-2);border:1px solid var(--color-border);border-radius:var(--radius);background:var(--color-surface);padding:var(--space-3) var(--space-4);margin-bottom:var(--space-4)}.plan-banner-set{border-color:var(--nikkah-gold, var(--color-accent))}.plan-banner-text{margin:0;font-weight:600}.plan-banner-actions{display:flex;gap:var(--space-2)}.friday-picker{margin-bottom:var(--space-6)}.friday-list{list-style:none;margin:var(--space-2) 0 var(--space-3);padding:0;display:grid;gap:var(--space-2)}.friday-card{border:1px solid var(--color-border);border-radius:var(--radius);background:var(--color-surface);padding:var(--space-3) var(--space-4)}.friday-card-planned{border-color:var(--nikkah-gold, var(--color-accent));box-shadow:inset 3px 0 0 var(--nikkah-gold, var(--color-accent))}.friday-card-header{display:flex;align-items:center;justify-content:space-between;gap:var(--space-2)}.friday-date{font-weight:600}.friday-planned-badge{border:1px solid var(--nikkah-gold, var(--color-accent));color:var(--nikkah-gold, var(--color-accent));border-radius:999px;padding:1px var(--space-2);font-size:.75rem;text-transform:uppercase;letter-spacing:.04em}.friday-balances{margin:var(--space-1) 0 0;font-size:.875rem;color:var(--color-muted);font-variant-numeric:tabular-nums}.friday-badges{list-style:none;margin:var(--space-2) 0 0;padding:0;display:flex;flex-wrap:wrap;gap:var(--space-1)}.friday-badge{font-size:.75rem;border-radius:999px;padding:1px var(--space-2)}.friday-badge-conflict{border:1px solid var(--color-danger);color:var(--color-danger);background:var(--color-danger-bg)}.friday-badge-holiday{border:1px solid var(--color-unlock);color:var(--color-unlock)}.nikkah-confirm-line{margin:0 0 var(--space-2)}.checklist-section{margin-bottom:var(--space-4)}.checklist{list-style:none;margin:var(--space-2) 0 var(--space-3);padding:0;display:grid;gap:var(--space-2)}.checklist-row{display:flex;align-items:center;gap:var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius);background:var(--color-surface);padding:var(--space-2) var(--space-3)}.checklist-done{width:1.125rem;height:1.125rem;accent-color:var(--color-accent);flex:0 0 auto}.checklist-text{display:flex;flex-direction:column;min-width:0;flex:1 1 auto}.checklist-title-line{display:flex;align-items:center;flex-wrap:wrap;gap:var(--space-2);min-width:0}.checklist-owner-badge{font-size:.75rem;border:1px solid var(--person-color, var(--color-border));color:var(--person-color, var(--color-muted));border-radius:999px;padding:1px var(--space-2);flex:0 0 auto}.checklist-owner-select{font:inherit;font-size:.8125rem;padding:var(--space-1) var(--space-2);border:1px solid var(--color-border);border-radius:var(--radius);background:var(--color-surface);color:var(--color-text);flex:0 0 auto}.checklist-title-done{text-decoration:line-through;color:var(--color-muted)}.checklist-decision{font-size:.8125rem;color:var(--color-muted);overflow-wrap:anywhere}.checklist-actions,.checklist-edit-actions{display:flex;gap:var(--space-2)}.checklist-edit-form{gap:var(--space-2)}.checklist-add{display:grid;grid-template-columns:1fr 1fr auto;align-items:end;gap:var(--space-3)}.booking-pill{background:var(--person-color, var(--color-muted));color:var(--color-accent-contrast);border-radius:0}.nikkah-day-entry{border:1.5px solid var(--nikkah-gold, #c9a227);color:var(--color-text);background:#c9a22724;border-radius:999px}.day-nikkah-highlight{background:#c9a2271f}.day-sheet-swatch.swatch-booking{background:var(--person-color, var(--color-muted))}.day-sheet-swatch.swatch-nikkah{background:transparent;border:2px solid var(--nikkah-gold, #c9a227)}.nikkah-sheet-title{color:var(--nikkah-gold, #7a6212)}@media(max-width:640px){.checklist-add{grid-template-columns:1fr;align-items:stretch}.checklist-row{flex-wrap:wrap}.checklist-row>.checklist-text{flex:1 1 0}.checklist-actions{flex-basis:100%;justify-content:flex-end;flex-wrap:wrap}.nikkah-page .button,.nikkah-page .checklist-done,.nikkah-page .checklist-owner-select{min-height:44px}.checklist-done{min-width:24px}.friday-card-header{flex-wrap:wrap}}
