:root{--ink:#1a1a1c;--soft:#3a3a3d;--muted:#6e6e72;--hair-light:#e5e5e7;--hair:#c7c7cc;--accent:#4a4a4d;--accent-soft:#8e8e93;--ground:#f5f5f7;--paper:#fff;--chip-bg:#faf7f2;--chip-border:#d8d2c7;--chip-text:#2a2724;--chip-muted:#6e655a;--chip-accent:#9c8a5c;--chip-accent-soft:#bfae83;--grid-line:#efe9dc;--soft-red:#b86a5e;--soft-red-bg:#f4e5e2;--soft-green:#7c8f6a;--soft-green-bg:#eaeedf;--soft-gold:#c9a958;--soft-gold-bg:#f4ecd7;--font-serif:"EB Garamond", "Garamond", "Georgia", serif;--fs-xs:.75rem;--fs-sm:.875rem;--fs-base:1rem;--fs-md:1.125rem;--fs-lg:1.375rem;--fs-xl:1.75rem;--fs-display:2.25rem;--radius-sm:3px;--radius:5px;--radius-lg:8px;--shadow-soft:0 1px 0 #2a27240a;--space-1:.25rem;--space-2:.5rem;--space-3:.75rem;--space-4:1rem;--space-5:1.5rem;--space-6:2rem;--space-7:3rem}*{box-sizing:border-box}html,body,#root{background:var(--ground);color:var(--ink);font-family:var(--font-serif);font-size:var(--fs-base);font-feature-settings:"liga", "kern";-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;margin:0;padding:0;line-height:1.5}button{font-family:inherit;font-size:inherit;color:inherit;border:1px solid var(--hair);border-radius:var(--radius);padding:var(--space-2) var(--space-4);cursor:pointer;background:0 0;transition:background-color .12s,border-color .12s}button:hover:not(:disabled){background:var(--paper);border-color:var(--accent-soft)}button:disabled{opacity:.5;cursor:not-allowed}input,select,textarea{font-family:inherit;font-size:inherit;color:var(--ink);background:var(--paper);border:1px solid var(--hair);border-radius:var(--radius);padding:var(--space-2) var(--space-3)}input:focus,select:focus,textarea:focus{border-color:var(--accent);outline:none}.label{font-variant:small-caps;letter-spacing:.08em;color:var(--muted);font-size:var(--fs-sm);font-weight:500}.display{font-style:italic;font-weight:500;font-size:var(--fs-display);color:var(--ink);letter-spacing:-.01em}.conflict-hard{color:var(--soft-red)}.conflict-soft{color:var(--soft-gold)}.clear{color:var(--soft-green)}@media (width<=800px){html{font-size:15px}}.app{max-width:1400px;padding:var(--space-6) var(--space-6) var(--space-7);margin:0 auto}.tour{pointer-events:none}.tour-backdrop{z-index:9998;pointer-events:auto;cursor:default;background:#2a272452;position:fixed;inset:0}.tour-card{background:var(--paper);border:1px solid var(--hair);border-radius:var(--radius-lg);padding:var(--space-5);z-index:10000;pointer-events:auto;width:calc(100% - 48px);max-width:520px;position:fixed;bottom:32px;left:50%;transform:translate(-50%);box-shadow:0 8px 32px #2a27242e}.tour-card .tour-step-num{font-variant:small-caps;letter-spacing:.1em;color:var(--muted);font-size:var(--fs-xs);margin-bottom:var(--space-2)}.tour-card h3{margin:0 0 var(--space-2);font-style:italic;font-weight:500;font-size:var(--fs-lg);color:var(--ink)}.tour-card p{color:var(--soft);line-height:1.55;font-size:var(--fs-base);margin:0}.tour-actions{margin-top:var(--space-4);justify-content:space-between;align-items:center;display:flex}.tour-nav{gap:var(--space-2);display:flex}.tour-skip{color:var(--muted);font-size:var(--fs-sm);padding:var(--space-1) var(--space-2);border:none;font-style:italic}.tour-next,.tour-card .tour-next:hover,.tour-card .tour-next:focus,.tour-card .tour-next:active{font-weight:500;transition:filter .14s,border-color .14s;background:var(--accent)!important;color:var(--paper)!important;border:1px solid var(--accent)!important}.tour-card .tour-next:hover{background:var(--ink)!important;border-color:var(--ink)!important}.tour-card .tour-next:focus{outline:none}.tour-card .tour-next:focus-visible{outline:2px solid var(--ink);outline-offset:2px}.tour-card .tour-next.just-advanced,.tour-card .tour-next.just-advanced:hover{pointer-events:none;background:var(--accent)!important;border-color:var(--accent)!important}.tour-highlight{z-index:9999;outline:2px solid var(--accent);outline-offset:4px;border-radius:var(--radius);background:var(--paper);position:relative}.conflict-list{margin:-8px 0 var(--space-4)}.conflict-list-toggle{color:var(--muted);font-style:italic;font-size:var(--fs-sm);padding:var(--space-1) 0;cursor:pointer;background:0 0;border:none}.conflict-list-toggle:hover{color:var(--ink);background:0 0}.conflict-list-items{margin-top:var(--space-2);padding:var(--space-3) var(--space-4);background:var(--paper);border:1px solid var(--hair-light);border-radius:var(--radius)}.conflict-group{margin-bottom:var(--space-3)}.conflict-group:last-child{margin-bottom:0}.conflict-group h4{margin:0 0 var(--space-2);font-size:var(--fs-xs);font-variant:small-caps;letter-spacing:.1em;color:var(--muted);font-weight:500}.conflict-list ul{margin:0;padding:0;list-style:none}.conflict-row{align-items:baseline;gap:var(--space-2);padding:var(--space-1) 0;font-size:var(--fs-sm);border-bottom:1px dotted var(--hair-light);display:flex}.conflict-row:last-child{border-bottom:none}.conflict-row.hard{color:var(--soft-red)}.conflict-row.soft{color:var(--soft-gold)}.conflict-row.dismissed{color:var(--muted)}.conflict-row.dismissed .row-message{opacity:.7;text-decoration:line-through}.row-rule{font-variant:small-caps;letter-spacing:.06em;font-size:var(--fs-xs);color:var(--muted);min-width:32px}.row-message{flex:1;font-style:italic}.row-note{color:var(--muted);font-style:italic;font-size:var(--fs-xs)}.row-action{color:var(--muted);font-size:var(--fs-xs);padding:0 var(--space-2);cursor:pointer;text-decoration:underline;-webkit-text-decoration-color:var(--hair-light);text-decoration-color:var(--hair-light);background:0 0;border:none;font-style:italic}.row-action:hover{color:var(--ink);background:0 0}.day-appointments{font-size:var(--fs-xs);font-variant:normal;letter-spacing:0;color:var(--accent);text-transform:none;margin-top:2px;font-style:italic;line-height:1.2;display:block}.week-header{justify-content:space-between;align-items:flex-end;gap:var(--space-5);padding-bottom:var(--space-5);border-bottom:1px solid var(--hair-light);margin-bottom:var(--space-5);display:flex}.week-header .week-title{gap:var(--space-1);flex-direction:column;display:flex}.week-header .week-title .label{letter-spacing:.12em}.week-header h1{font-size:var(--fs-display);color:var(--ink);margin:0;font-style:italic;font-weight:500}.week-header .week-controls{align-items:center;gap:var(--space-3);display:flex}.week-header input[type=date]{font-size:var(--fs-md);color:var(--ink);padding:var(--space-1) var(--space-2);background:0 0;border:1px solid #0000;font-style:italic}.week-header input[type=date]:hover,.week-header input[type=date]:focus{border-color:var(--hair-light);background:var(--paper)}.conflict-summary{align-items:center;gap:var(--space-3);padding:var(--space-2) var(--space-4);border:1px solid var(--hair-light);border-radius:var(--radius);font-style:italic;display:flex}.conflict-summary.clear{border-color:var(--soft-green);background:var(--soft-green-bg);color:var(--soft-green)}.conflict-summary.fading{animation:2.5s forwards conflict-summary-fade}@keyframes conflict-summary-fade{0%{opacity:0;transform:translateY(-4px)}10%{opacity:1;transform:translateY(0)}70%{opacity:1}to{opacity:0;transform:translateY(-2px)}}.conflict-summary.has-issues{border-color:var(--soft-red);background:var(--soft-red-bg);color:var(--soft-red)}.context-strip{gap:var(--space-5);padding:var(--space-3) 0;margin-bottom:var(--space-5);border-bottom:1px dotted var(--hair-light);flex-wrap:wrap;display:flex}.context-strip .field{flex-direction:column;gap:2px;display:flex}.context-strip .label{font-size:var(--fs-xs)}.context-strip .hint{font-size:var(--fs-xs);color:var(--muted);letter-spacing:0;text-transform:none;font-variant:normal;margin-bottom:2px;font-style:italic}.context-strip select,.context-strip input{padding:var(--space-1) var(--space-2);background:0 0;border:1px solid #0000}.context-strip select:hover,.context-strip input:hover{border-color:var(--hair-light);background:var(--paper)}.appointments-field{flex:100%}.appointments-row{grid-template-columns:repeat(7,minmax(0,1fr));gap:4px;margin-top:4px;display:grid}.appt-cell{border:1px dotted var(--grid-line);border-radius:var(--radius-sm);flex-direction:column;align-items:stretch;gap:2px;min-height:48px;padding:4px 6px;display:flex}.appt-cell .appt-day{font-variant:small-caps;letter-spacing:.06em;color:var(--muted);font-size:var(--fs-xs);text-align:center}.appt-cell.empty{background:0 0}.appt-cell.has-appt{background:var(--chip-bg);border-style:solid;border-color:var(--chip-border)}.appt-add{color:var(--muted);cursor:pointer;background:0 0;border:none;border-radius:4px;padding:4px 0;font-size:16px;line-height:1}.appt-cell.empty:hover .appt-add{color:var(--ink);background:var(--grid-line)}.appt-content{flex-direction:column;align-items:stretch;gap:2px;display:flex}.appt-sister,.appt-type{font-size:var(--fs-xs);background:0 0;border:none;width:100%;min-width:0;padding:1px 2px;font-style:italic}.appt-sister:hover,.appt-type:hover{background:var(--paper);border-radius:3px}.appt-type::placeholder{color:var(--muted);font-style:italic}.appt-remove{color:var(--muted);cursor:pointer;background:0 0;border:none;align-self:center;padding:0;font-size:14px;line-height:1}.appt-remove:hover{color:var(--soft-red)}.layout{gap:var(--space-5);grid-template-columns:1fr 240px;align-items:start;display:grid}@media (width<=1100px){.layout{grid-template-columns:1fr}}.grid{background:var(--paper);border:1px solid var(--grid-line);border-radius:var(--radius);grid-template-columns:110px repeat(7,minmax(0,1fr));display:grid;overflow:hidden}.grid .head,.grid .row-label,.grid .cell{border-right:1px solid var(--grid-line);border-bottom:1px solid var(--grid-line);padding:var(--space-2) var(--space-3);min-height:56px;font-size:var(--fs-sm)}.grid .head:last-child,.grid .cell.last,.grid .row-label.last{border-right:none}.grid .head{background:var(--paper);font-variant:small-caps;letter-spacing:.1em;color:var(--chip-text);text-align:center;padding:var(--space-3) var(--space-2);font-weight:500}.grid .head.sunday-divider{border-left:2px solid var(--grid-line)}.grid .row-label{background:var(--paper);font-variant:small-caps;letter-spacing:.1em;color:var(--chip-text);align-items:center;display:flex}.grid .cell{background:var(--paper);cursor:pointer;transition:background-color .1s;position:relative}.grid .cell:hover{background:#fafafc}.grid .cell.sunday-divider{border-left:2px solid var(--grid-line)}.grid .cell.target{background:var(--paper);box-shadow:inset 0 0 0 1px var(--chip-accent-soft)}.grid .cell .chips{flex-wrap:wrap;gap:4px;display:flex}.grid .cell.has-conflict{background:var(--soft-red-bg)}.grid .cell.has-soft{background:var(--soft-gold-bg)}.grid .cell.dimmed{background:repeating-linear-gradient(45deg,#0000,#0000 6px,#b8b0a414 6px 12px)}.grid .cell .conflict{font-size:var(--fs-xs);margin-top:4px;font-style:italic;line-height:1.3;display:block}.grid .cell .conflict.hard{color:var(--soft-red)}.grid .cell .conflict.soft{color:var(--soft-gold)}.grid .cell .conflict.dismissed{opacity:.6;text-decoration:line-through}.grid .cell .cell-note{font-size:var(--fs-xs);color:var(--muted);margin-top:4px;font-style:italic;display:block}.cell-note-clear{color:var(--muted);cursor:pointer;vertical-align:middle;background:0 0;border:none;border-radius:50%;margin-left:4px;padding:0 4px;font-size:14px;font-style:normal;line-height:1}.cell-note-clear:hover{background:var(--grid-line);color:var(--ink)}.chip{background:var(--chip-bg);border:1px solid var(--chip-border);font-size:var(--fs-sm);color:var(--chip-text);cursor:pointer;-webkit-user-select:none;user-select:none;border-radius:999px;align-items:center;gap:4px;padding:2px 8px;font-style:italic;transition:all .1s;display:inline-flex}.chip:hover{border-color:var(--chip-accent)}.chip.assigned-here:hover{background:var(--soft-red-bg);border-color:var(--soft-red)}.chip.manager{border-bottom:2px solid var(--chip-accent)}.chip .count{color:var(--chip-muted);font-variant-numeric:tabular-nums;font-feature-settings:"tnum";font-size:10px;font-style:normal}.chip .marker{color:var(--chip-accent);margin-left:2px;font-size:10px}.chip.dim{opacity:.4}.chip.selected{background:var(--chip-accent);color:var(--paper);border-color:var(--chip-accent)}.chip.selected .count{color:#fffc}.palette{top:var(--space-5);gap:var(--space-3);padding:var(--space-4);background:var(--paper);border:1px solid var(--hair-light);border-radius:var(--radius);flex-direction:column;display:flex;position:sticky}.palette h2{font-size:var(--fs-sm);font-variant:small-caps;letter-spacing:.1em;color:var(--muted);margin:0;font-weight:500}.palette .chips{flex-wrap:wrap;gap:6px;display:flex}.palette .help{font-size:var(--fs-xs);color:var(--muted);font-style:italic;line-height:1.4}.palette .palette-actions{gap:var(--space-2);margin-top:var(--space-2);padding-top:var(--space-3);border-top:1px dotted var(--hair-light);flex-direction:column;display:flex}.palette button{font-size:var(--fs-sm)}.palette .standing-meta{margin:var(--space-2) 0 0;font-size:var(--fs-xs);color:var(--muted);font-style:italic}.palette .standing-backup{font-size:var(--fs-xs);color:var(--muted);margin:4px 0 0}.palette .link-btn{font-size:var(--fs-xs);color:var(--muted);cursor:pointer;background:0 0;border:none;padding:0;font-family:inherit;font-style:italic;text-decoration:underline}.palette .link-btn:hover{color:var(--ink)}.chip-with-job{align-items:center;gap:4px;display:inline-flex}.honey-job{display:inline-block;position:relative}.honey-job-trigger{border:1px dotted var(--hair-light);color:var(--muted);cursor:pointer;background:0 0;border-radius:3px;padding:1px 6px;font-size:10px;font-style:italic;line-height:1.4}.honey-job-trigger.set{color:var(--ink);border-style:solid;font-style:normal}.honey-job-trigger:hover{background:var(--paper)}.honey-job-picker{background:var(--paper);border:1px solid var(--hair);z-index:10;border-radius:6px;flex-direction:column;gap:2px;margin-top:4px;padding:4px;display:flex;position:absolute;top:100%;left:0;box-shadow:0 4px 12px #0000001a}.honey-job-picker button{font-size:var(--fs-xs);text-align:left;cursor:pointer;background:0 0;border:none;border-radius:3px;padding:4px 12px}.honey-job-picker button:hover{background:var(--hair-light)}.honey-job-picker button.selected{background:var(--accent,#d8c89a);font-weight:500}.honey-job-picker button.clear{border-top:1px dotted var(--hair-light);color:var(--muted);margin-top:2px;font-style:italic}.period-toggle{font-variant:small-caps;letter-spacing:.08em;border:1px solid var(--hair-light);color:var(--muted);cursor:pointer;background:0 0;border-radius:3px;align-items:center;margin-top:4px;padding:1px 8px;font-size:10px;font-style:italic;line-height:1.5;display:inline-flex}.period-toggle.am,.period-toggle.pm{color:var(--ink);background:var(--chip-bg);border-color:var(--chip-border);font-style:normal}.period-toggle:hover{border-color:var(--chip-accent);color:var(--ink)}.appt-period{font-size:var(--fs-xs);width:100%;min-width:0;color:var(--muted);background:0 0;border:none;margin-top:2px;padding:1px 2px;font-style:italic}.appt-period:hover{background:var(--paper);color:var(--ink);border-radius:3px}.add-another{border:1px dashed var(--chip-accent-soft);color:var(--chip-accent);font-size:var(--fs-xs);cursor:pointer;background:0 0;border-radius:999px;align-items:center;padding:2px 10px;font-style:italic;line-height:1.4;display:inline-flex}.add-another:hover{background:var(--chip-bg);border-color:var(--chip-accent);color:var(--ink)}.sunday-meal-caption{font-variant:small-caps;letter-spacing:.08em;color:var(--muted);margin-bottom:2px;font-size:10px;line-height:1.2;display:block}.sunday-meal-hint{font-variant:normal;letter-spacing:0;color:var(--muted);text-transform:none;white-space:normal;margin-top:2px;font-size:9px;font-style:italic;line-height:1.2;display:block}.palette .chips .is-guest .chip{background:0 0;border-style:dashed}.palette .chips .is-guest .chip:before{content:"guest · ";font-variant:small-caps;letter-spacing:.08em;color:var(--muted);margin-right:2px;font-size:9px;font-style:normal}.guest-add-btn{border:1px dashed var(--hair-light);color:var(--muted);font-size:var(--fs-xs);cursor:pointer;background:0 0;border-radius:999px;align-items:center;padding:2px 10px;font-style:italic;line-height:1.4;display:inline-flex}.guest-add-btn:hover{border-color:var(--chip-accent);color:var(--ink)}.manage-roster{margin:var(--space-1) 0 0;font-size:var(--fs-xs);align-self:flex-start}.roster-editor{width:min(640px,95%);max-width:640px;max-height:85vh;overflow-y:auto}.roster-editor h3{margin-bottom:var(--space-1)}.roster-rows{gap:var(--space-3);margin-top:var(--space-2);flex-direction:column;display:flex}.roster-row{padding:var(--space-3);border:1px solid var(--hair-light);border-radius:var(--radius);background:var(--paper)}.roster-row-head{align-items:center;gap:var(--space-2);margin-bottom:var(--space-2);display:flex}.roster-name{font-size:var(--fs-md);padding:var(--space-1) var(--space-2);background:0 0;border:1px solid #0000;flex:1;font-style:italic}.roster-name:hover,.roster-name:focus{border-color:var(--hair-light);background:var(--paper)}.roster-remove{font-size:var(--fs-xs);color:var(--muted)}.roster-remove:hover{color:var(--soft-red)}.roster-abilities{gap:4px var(--space-2);margin-bottom:var(--space-2);grid-template-columns:repeat(3,minmax(0,1fr));display:grid}.ability-toggle{font-size:var(--fs-xs);color:var(--soft);cursor:pointer;-webkit-user-select:none;user-select:none;align-items:center;gap:4px;display:flex}.ability-toggle input{margin:0}.roster-restrictions{flex-direction:column;gap:4px;display:flex}.roster-restrictions textarea{resize:vertical;font-family:inherit;font-size:var(--fs-xs);padding:var(--space-1) var(--space-2);border:1px solid var(--hair-light);border-radius:var(--radius-sm);min-height:36px}.roster-add{margin-top:var(--space-2);align-self:flex-start}.roster-editor .actions{margin-top:var(--space-3)}.roster-editor .actions .primary{background:var(--ink);color:var(--paper);border-color:var(--ink)}.empty-week-hint{gap:var(--space-2);padding:var(--space-3) var(--space-4);margin:0 0 var(--space-3);background:var(--chip-bg);border:1px solid var(--chip-border);border-radius:var(--radius);font-size:var(--fs-sm);color:var(--chip-text);flex-wrap:wrap;align-items:baseline;font-style:italic;line-height:1.5;display:flex}.empty-week-hint strong{font-style:normal;font-weight:500}.empty-week-hint em{color:var(--ink);font-style:italic}.selection-toast{bottom:var(--space-5);background:var(--ink);color:var(--paper);padding:var(--space-2) var(--space-5);font-style:italic;font-size:var(--fs-sm);z-index:50;border-radius:999px;position:fixed;left:50%;transform:translate(-50%);box-shadow:0 4px 16px #2a27242e}.selection-toast button{color:var(--paper);margin-left:var(--space-3);font-size:var(--fs-xs);background:0 0;border:1px solid #ffffff4d;padding:2px 10px}.selection-toast button:hover{background:#ffffff1a}.note-prompt{z-index:100;background:#2a272459;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.note-prompt .panel{background:var(--paper);padding:var(--space-5);border-radius:var(--radius-lg);gap:var(--space-3);flex-direction:column;width:90%;max-width:420px;display:flex}.note-prompt h3{font-style:italic;font-weight:500;font-size:var(--fs-md);margin:0}.note-prompt p{color:var(--muted);font-size:var(--fs-sm);margin:0}.note-prompt textarea{resize:vertical;min-height:80px}.note-prompt .actions{justify-content:flex-end;gap:var(--space-2);display:flex}.tip{position:relative}.tip[data-tip]:hover:after{content:attr(data-tip);background:var(--ink);color:var(--paper);border-radius:var(--radius-sm);font-size:var(--fs-xs);white-space:nowrap;z-index:20;pointer-events:none;padding:4px 8px;font-style:normal;position:absolute;bottom:100%;left:50%;transform:translate(-50%)translateY(-4px)}.print-frame{padding:.25in}.print-frame h1{margin:0 0 8pt;font-size:22pt;font-style:italic;font-weight:500}.print-frame .grid{font-size:9pt}.print-frame .grid .row-label,.print-frame .grid .head{font-size:8pt}.print-frame .grid .cell{min-height:38pt;padding:4pt 6pt}.print-frame footer{color:var(--muted);text-align:right;margin-top:8pt;font-size:9pt;font-style:italic}@media print{@page{size:letter landscape;margin:.5in}html,body,#root{color:var(--ink)!important;background:#fff!important}body>#root>.app>:not(.print-frame),.no-print{display:none!important}.print-frame{page-break-inside:avoid;display:block!important}.print-frame .grid{page-break-inside:avoid}.conflict.soft{display:none!important}}.print-frame{display:none}
