@import"https://fonts.googleapis.com/css2?family=Fraunces:opsz,wght@9..144,400;9..144,600;9..144,700&family=Inter:wght@400;500;600&family=IBM+Plex+Mono:wght@400;500;600&display=swap";:root{--ink: #1c2320;--ink-soft: #2a332f;--paper: #f3efe6;--paper-dim: #e8e2d3;--line: #3a453f;--line-on-paper: #d8d2c4;--copper: #b8703f;--copper-bright: #cf8a58;--sage: #6b8068;--plum: #7a5470;--ink-on-paper: #262b27;--muted: #9aa39c;--font-display: "Fraunces", Georgia, serif;--font-body: "Inter", system-ui, sans-serif;--font-mono: "IBM Plex Mono", "SF Mono", monospace;--radius: 3px}*{box-sizing:border-box}body{margin:0;background:var(--ink);color:var(--paper);font-family:var(--font-body);-webkit-font-smoothing:antialiased}#root{min-height:100vh;display:flex;flex-direction:column}.app-header{display:flex;align-items:baseline;justify-content:space-between;padding:28px 40px 20px;border-bottom:1px solid var(--line)}.app-title{font-family:var(--font-display);font-size:28px;font-weight:600;letter-spacing:-.01em;margin:0}.app-title .accent{color:var(--copper-bright)}.app-subtitle{font-size:13px;color:var(--muted);margin-top:4px}.toolbar{display:flex;align-items:center;gap:16px}.select,.input,.button{font-family:var(--font-body);font-size:14px;border-radius:var(--radius);border:1px solid var(--line);background:var(--ink-soft);color:var(--paper);padding:8px 12px}.select:focus,.input:focus,.button:focus-visible{outline:2px solid var(--copper-bright);outline-offset:1px}.button{cursor:pointer;font-weight:500;border-color:var(--copper);background:var(--copper);color:var(--ink);transition:background .15s ease}.button:hover{background:var(--copper-bright)}.button.secondary{background:transparent;border-color:var(--line);color:var(--paper)}.button.secondary:hover{border-color:var(--muted)}.button:disabled{opacity:.5;cursor:not-allowed}.month-nav{display:flex;align-items:center;gap:10px;font-family:var(--font-mono)}.month-nav .label{min-width:140px;text-align:center;font-size:14px}.layout{flex:1;display:grid;grid-template-columns:1fr 320px;gap:32px;padding:28px 40px 40px}.sidebar-stack{display:flex;flex-direction:column;gap:20px}@media (max-width: 900px){.layout{grid-template-columns:1fr}}.calendar{background:var(--paper);color:var(--ink-on-paper);border-radius:var(--radius);padding:20px}.calendar-weekdays{display:grid;grid-template-columns:repeat(7,1fr);font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);padding:0 2px 10px}.calendar-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:6px}.day-cell{position:relative;min-height:92px;background:#fff;border:1px solid var(--line-on-paper);border-left:3px solid var(--line-on-paper);border-radius:2px;padding:8px 10px;cursor:pointer;text-align:left;font-family:var(--font-body);transition:box-shadow .12s ease,transform .12s ease}.day-cell:hover{box-shadow:0 2px 8px #0000001f;transform:translateY(-1px)}.day-cell:focus-visible{outline:2px solid var(--copper);outline-offset:-2px}.day-cell.is-empty{background:transparent;border-color:transparent;cursor:default;pointer-events:none}.day-cell.is-selected{box-shadow:0 0 0 2px var(--copper) inset}.day-cell.type-weekend{border-left-color:var(--plum)}.day-cell.type-holiday{border-left-color:var(--copper)}.day-cell.type-pre_holiday{border-left-color:var(--sage)}.day-cell.type-workday{border-left-color:var(--line-on-paper)}.day-cell.is-closed{background:repeating-linear-gradient(135deg,#fff,#fff 8px,var(--paper-dim) 8px,var(--paper-dim) 16px)}.day-cell .revenue.closed{color:var(--muted);font-weight:500;font-style:italic;font-size:12px}.day-cell .revenue.forecast{color:var(--copper);font-weight:500;font-style:italic}.day-cell .date-num{font-family:var(--font-mono);font-size:13px;color:var(--ink-on-paper)}.day-cell.is-today .date-num{color:var(--copper);font-weight:600}.day-cell .day-type-label{font-size:9px;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);margin-top:2px}.day-cell .revenue{font-family:var(--font-mono);font-size:14px;font-weight:600;margin-top:12px;font-variant-numeric:tabular-nums}.day-cell .revenue.empty{color:var(--muted);font-weight:400;font-size:12px}.day-cell .fot-line{font-family:var(--font-mono);font-size:14px;font-weight:600;color:var(--ink-on-paper);margin-top:2px;font-variant-numeric:tabular-nums}.day-cell .fot-line.forecast{color:var(--copper);font-weight:500;font-style:italic}.day-cell .weather{position:absolute;right:8px;top:8px;font-size:11px;color:var(--muted);font-family:var(--font-mono);text-align:right}.panel{background:var(--ink-soft);border:1px solid var(--line);border-radius:var(--radius);padding:20px;height:fit-content;position:sticky;top:28px}.panel h2{font-family:var(--font-display);font-size:18px;margin:0 0 4px}.panel .panel-date{font-family:var(--font-mono);font-size:13px;color:var(--muted);margin-bottom:18px}.field{margin-bottom:14px}.field label{display:block;font-size:12px;color:var(--muted);margin-bottom:6px}.checkbox-row{display:flex;align-items:center;gap:8px;font-size:13px;cursor:pointer;-webkit-user-select:none;user-select:none}.checkbox-row input[type=checkbox]{width:15px;height:15px;accent-color:var(--copper)}.field .input{width:100%}.form-actions{display:flex;gap:10px;margin-top:4px}.status-line{font-size:12px;margin-top:12px}.status-line.error{color:#e08a6b}.status-line.success{color:var(--sage)}.empty-state{color:var(--muted);font-size:13px;line-height:1.6}.restaurant-setup{max-width:420px;margin:60px auto;padding:28px;background:var(--ink-soft);border:1px solid var(--line);border-radius:var(--radius)}.restaurant-setup h2{font-family:var(--font-display);margin-top:0}.day-detail-trigger{position:absolute;right:6px;bottom:6px;width:18px;height:18px;border-radius:50%;border:1px solid var(--line-on-paper);background:transparent;color:var(--muted);font-family:var(--font-mono);font-size:11px;font-style:italic;line-height:1;cursor:pointer;display:flex;align-items:center;justify-content:center;padding:0}.day-detail-trigger:hover{border-color:var(--copper);color:var(--copper)}.day-detail-trigger:focus-visible{outline:2px solid var(--copper);outline-offset:1px}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0a0c0ba6;display:flex;align-items:center;justify-content:center;padding:20px;z-index:50}.modal-card{position:relative;background:var(--paper);color:var(--ink-on-paper);border-radius:var(--radius);padding:28px;max-width:420px;width:100%;max-height:85vh;overflow-y:auto}.modal-close{position:absolute;top:14px;right:14px;width:28px;height:28px;border-radius:50%;border:none;background:transparent;color:var(--ink-on-paper);font-size:20px;line-height:1;cursor:pointer}.modal-close:hover{background:var(--paper-dim)}.modal-date{font-family:var(--font-display);font-size:20px;font-weight:600;padding-right:24px}.modal-day-type{font-size:12px;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);margin-top:4px}.modal-section{margin-top:18px}.modal-section h3{font-size:13px;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);margin:0 0 12px}.modal-revenue{font-family:var(--font-mono);font-size:26px;font-weight:600;font-variant-numeric:tabular-nums}.modal-top-numbers{display:flex;gap:32px;flex-wrap:wrap}.modal-number-block{flex:1;min-width:140px}.modal-number-label{font-size:11px;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);margin-bottom:4px}.modal-meta{display:flex;gap:12px;font-size:13px;color:var(--muted);margin-top:4px}.modal-revenue.closed{font-size:20px;color:var(--muted);font-style:italic}.modal-revenue.forecast{color:var(--copper)}.modal-divider{height:1px;background:var(--line-on-paper);margin-top:20px}.weather-detail-grid{display:grid;grid-template-columns:auto 1fr;row-gap:10px;column-gap:16px;margin:0}.weather-detail-grid dt{font-size:13px;color:var(--muted)}.weather-detail-grid dd{margin:0;font-family:var(--font-mono);font-size:14px;text-align:right}.runrate-card{background:var(--paper);color:var(--ink-on-paper);border-radius:var(--radius);padding:20px 24px;margin-bottom:20px}.runrate-card h2{font-family:var(--font-display);font-size:16px;margin:0 0 12px}.runrate-total{font-family:var(--font-mono);font-size:30px;font-weight:600;font-variant-numeric:tabular-nums}.runrate-split{font-size:13px;color:var(--muted);margin-top:2px}.runrate-progress{font-size:12px;color:var(--muted);margin-top:8px}.runrate-table{width:100%;border-collapse:collapse;margin-top:16px;font-size:13px}.runrate-table th{text-align:left;font-weight:500;font-size:11px;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);border-bottom:1px solid var(--line-on-paper);padding:6px 8px}.runrate-table td{padding:8px;border-bottom:1px solid var(--line-on-paper);font-family:var(--font-mono)}.runrate-table td:first-child{font-family:var(--font-body)}.runrate-fallback-note{font-family:var(--font-body);color:var(--muted);font-size:11px}.import-panel{background:var(--ink-soft);border:1px solid var(--line);border-radius:var(--radius);padding:16px 20px;margin-bottom:20px}.import-panel-row{display:flex;align-items:center;justify-content:space-between;gap:20px;flex-wrap:wrap}.import-panel-controls{display:flex;align-items:flex-end;gap:12px}.field-inline{margin-bottom:0}.field-inline label{margin-bottom:4px}.import-hint{font-size:12px;color:var(--muted);margin:12px 0 0}.import-hint code{font-family:var(--font-mono);background:var(--ink);padding:1px 5px;border-radius:2px}.import-panel h2{font-family:var(--font-display);font-size:15px;margin:0 0 4px}.import-panel .empty-state{margin:0}.import-summary{margin-top:14px;padding-top:14px;border-top:1px solid var(--line)}.import-summary-line{font-size:13px}.import-summary-line.muted{color:var(--muted);margin-top:4px}.import-summary-line.error{color:#e08a6b;margin-top:4px}.import-errors{margin-top:10px;font-size:12px;color:var(--muted)}.import-errors summary{cursor:pointer;color:var(--copper-bright)}.import-errors ul{margin:8px 0 0;padding-left:18px;max-height:200px;overflow-y:auto}.import-errors li{margin-bottom:4px}.forecast-card{background:var(--paper);color:var(--ink-on-paper);border-radius:var(--radius);padding:20px 24px;margin-bottom:20px}.forecast-card-header{display:flex;align-items:flex-start;justify-content:space-between;gap:20px}.forecast-card h2{font-family:var(--font-display);font-size:16px;margin:0 0 4px}.forecast-card .empty-state{max-width:480px}.forecast-total{font-family:var(--font-mono);font-size:26px;font-weight:600;font-variant-numeric:tabular-nums;margin-top:14px}.forecast-meta{font-size:12px;color:var(--muted);margin-top:2px}.forecast-updated-at{font-size:11px;color:var(--muted);margin-top:6px}.fot-breakdown{display:grid;grid-template-columns:1fr auto;gap:4px 12px;margin-top:14px;padding-top:12px;border-top:1px solid var(--line);font-size:13px}.fot-breakdown dt{color:var(--muted)}.fot-breakdown dd{margin:0;text-align:right;font-family:var(--font-mono);font-variant-numeric:tabular-nums}.fot-breakdown dt.muted,.fot-breakdown dd.muted{color:var(--muted);font-size:12px;font-style:italic}.forecast-generation-summary{margin-top:16px;padding-top:14px;border-top:1px solid var(--line-on-paper)}.top-nav{display:flex;align-items:center;gap:4px;padding:10px 40px 0;background:var(--ink)}.top-nav-user{margin-left:auto;display:flex;align-items:center;gap:12px}.top-nav-user-email{font-size:12px;color:var(--muted)}.top-nav-link{background:transparent;border:none;border-bottom:2px solid transparent;color:var(--muted);font-family:var(--font-body);font-size:13px;font-weight:500;padding:8px 14px;cursor:pointer}.top-nav-link:hover{color:var(--paper)}.top-nav-link.is-active{color:var(--copper-bright);border-bottom-color:var(--copper-bright)}.staff-layout{display:grid;grid-template-columns:1fr 1.2fr 1fr;gap:24px;padding:28px 40px 40px;align-items:start}@media (max-width: 1100px){.staff-layout{grid-template-columns:1fr}}.panel-section{background:var(--ink-soft);border:1px solid var(--line);border-radius:var(--radius);padding:20px}.panel-section h2{font-family:var(--font-display);font-size:17px;margin:0 0 12px}.subsection-title{font-family:var(--font-display);font-size:14px;font-weight:600;margin:20px 0 12px;padding-top:16px;border-top:1px solid var(--line)}.inline-form{display:flex;gap:8px;margin-top:14px}.inline-form .input{flex:1}.role-chips{display:flex;flex-wrap:wrap;gap:6px}.role-chip{font-size:12px;background:var(--ink);border:1px solid var(--line);border-radius:12px;padding:4px 10px;color:var(--paper)}.button.small{padding:5px 10px;font-size:12px}.employee-list{display:flex;flex-direction:column;gap:6px;margin-bottom:10px}.employee-row{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:10px 12px;border-radius:var(--radius);border:1px solid var(--line);cursor:pointer}.employee-row:hover{border-color:var(--muted)}.employee-row.is-selected{border-color:var(--copper);background:#b8703f14}.employee-name{font-size:14px;font-weight:500}.employee-meta{font-size:11px;color:var(--muted);margin-top:2px}.role-select-list{display:flex;flex-direction:column;gap:6px}.role-select-row{display:flex;align-items:center;justify-content:space-between}.star-toggle{background:transparent;border:none;color:var(--muted);font-size:16px;cursor:pointer;line-height:1}.star-toggle.is-primary{color:var(--copper-bright)}.constraint-list{display:flex;flex-direction:column;gap:8px;margin-bottom:10px}.constraint-row{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:8px 10px;border-radius:var(--radius);border:1px solid var(--line);font-size:13px}.constraint-badge{display:inline-block;font-size:10px;text-transform:uppercase;letter-spacing:.04em;padding:2px 6px;border-radius:10px;margin-left:8px}.constraint-badge.hard{background:#b8703f26;color:var(--copper-bright)}.constraint-badge.soft{background:#9aa39c26;color:var(--muted)}.employee-card h2{margin-bottom:4px}.card-subsection{margin-top:18px;padding-top:16px;border-top:1px solid var(--line)}.card-subsection:first-of-type{margin-top:14px}.card-section-title{font-family:var(--font-display);font-size:13px;font-weight:600;margin:0 0 10px;color:var(--muted);text-transform:uppercase;letter-spacing:.04em}.role-chip.is-primary{border-color:var(--copper);color:var(--copper-bright)}.single-panel-layout{padding:28px 40px 40px;max-width:480px}.shift-templates-layout{display:grid;grid-template-columns:repeat(auto-fill,minmax(340px,1fr));gap:24px;padding:28px 40px 40px;align-items:start}.shift-card-header{display:flex;align-items:flex-start;justify-content:space-between;gap:10px}.fot-off-target{color:#e24b4a}.day-cell.is-fot-alert{box-shadow:0 0 0 1px #e24b4a inset}.schedule-table-wrap{background:var(--paper);color:var(--ink-on-paper);border-radius:var(--radius);padding:16px;overflow-x:auto}.field-row{display:grid;grid-template-columns:1fr 1fr;gap:12px}.interval-list{display:flex;flex-direction:column;gap:14px}.interval-block{border:1px solid var(--line);border-radius:var(--radius);padding:12px 14px}.interval-block-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}.interval-time{font-family:var(--font-mono);font-size:13px;color:var(--copper-bright)}.interval-role-form{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin-top:8px}.split-control{display:flex;align-items:center;gap:8px;margin-top:10px;padding-top:10px;border-top:1px dashed var(--line)}.login-page{min-height:100vh;display:flex;align-items:center;justify-content:center;background:var(--ink)}.login-card{background:var(--paper);color:var(--ink-on-paper);border-radius:var(--radius);padding:40px;width:100%;max-width:360px}
