:root{--accent-color: #d4a574;--accent-color-light: #e5c4a1;--accent-dark: #a97f4f;--accent-soft: #f6ecdf;--accent-hover: #c08f57;--accent-text: #87632f;--black: #000000;--white: #ffffff;--gray: #8e8e93;--dark-gray: #3a3a3c;--light-black: #1c1c1e;--bg-gray: #f2f2f7;--bg-light-gray: #e5e5ea;--red: #ff3b30;--surface: #ffffff;--surface-sunken: #f2f2f7;--surface-muted: #f7f7fa;--page-bg: #f2f2f7;--text-primary: #1c1c1e;--text-secondary: #5f5f66;--text-tertiary: #6b6b72;--text-on-accent: #3d2a14;--border: #e5e5ea;--border-strong: #d6d6db;--success: #34a853;--success-bg: #e8f5ec;--success-text: #1e7e34;--warning: #f59e0b;--warning-bg: #fef3e2;--warning-text: #a35c06;--danger: #e53935;--danger-bg: #fdecea;--danger-text: #c62828;--info: #2196f3;--info-bg: #e7f2fd;--info-text: #1668c4;--status-pending: #ffc107;--status-active: #2196f3;--status-completed: #4caf50;--available: #4caf50;--preferred: #2196f3;--unavailable: #f44336;--sick: #ff9800;--vacation: #9c27b0;--scheduled: #ff6b6b;--scheduled-bg: #ffe9e9;--closed: #d9d9de;--sp-1: 4px;--sp-2: 8px;--sp-3: 12px;--sp-4: 16px;--sp-5: 20px;--sp-6: 24px;--sp-8: 32px;--sp-10: 40px;--gutter: clamp(14px, 4vw, 24px);--card-pad: clamp(14px, 3.6vw, 20px);--section-gap: clamp(14px, 3.6vw, 24px);--font-sans: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--fs-2xs: 11px;--fs-xs: 11px;--fs-sm: 12px;--fs-base: 14px;--fs-md: 15px;--fs-lg: clamp(16px, 4.2vw, 18px);--fs-xl: clamp(18px, 5vw, 22px);--fs-2xl: clamp(22px, 6.4vw, 28px);--fs-3xl: clamp(26px, 8vw, 34px);--lh-tight: 1.2;--lh-normal: 1.45;--r-sm: 8px;--r-md: 12px;--r-lg: 16px;--r-xl: 20px;--r-pill: 999px;--shadow-sm: 0 1px 2px rgba(16, 16, 20, .06);--shadow-md: 0 2px 10px rgba(16, 16, 20, .07);--shadow-lg: 0 8px 28px rgba(16, 16, 20, .12);--shadow-up: 0 -6px 24px rgba(16, 16, 20, .14);--tap: 44px;--safe-top: env(safe-area-inset-top, 0px);--safe-bottom: env(safe-area-inset-bottom, 0px);--safe-left: env(safe-area-inset-left, 0px);--safe-right: env(safe-area-inset-right, 0px);--content-max: 1100px;--header-h: 56px;--transition: .16s ease}*,*:before,*:after{box-sizing:border-box}*{margin:0;padding:0}html{-webkit-text-size-adjust:100%;text-size-adjust:100%;scroll-behavior:smooth;-webkit-overflow-scrolling:touch}body{font-family:var(--font-sans);font-size:var(--fs-base);line-height:var(--lh-normal);color:var(--text-primary);background-color:var(--page-bg);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;overflow-x:hidden}#app{min-height:100vh;min-height:100dvh;overflow-x:clip}button,.btn,.chip,.tab,.calendar-day,.legend-item,.legend-entry{-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent}img,svg,video,canvas{display:block;max-width:100%;height:auto}h1,h2,h3,h4,p,span,td,th,li,label,a{overflow-wrap:break-word;word-break:normal;-webkit-hyphens:auto;hyphens:auto}h1{font-size:var(--fs-xl);line-height:var(--lh-tight);font-weight:650;letter-spacing:-.01em}h2{font-size:var(--fs-lg);line-height:var(--lh-tight);font-weight:620}h3{font-size:var(--fs-md);line-height:var(--lh-tight);font-weight:600}a{color:var(--accent-text);text-decoration:none}:focus-visible{outline:2px solid var(--accent-text);outline-offset:2px;border-radius:var(--r-sm)}.app-shell,.availability-view,.view-root{min-height:100vh;min-height:100dvh;background:var(--page-bg);display:flex;flex-direction:column}.app-header,.header{position:sticky;top:0;z-index:30;background:var(--surface);border-bottom:1px solid var(--border);padding:calc(var(--sp-2) + var(--safe-top)) var(--gutter) var(--sp-2);padding-left:calc(var(--gutter) + var(--safe-left));padding-right:calc(var(--gutter) + var(--safe-right))}.header-content{max-width:var(--content-max);margin-inline:auto;min-height:var(--header-h);display:flex;align-items:center;gap:var(--sp-3);flex-wrap:wrap}.header-content h1{flex:1 1 auto;min-width:0}.main-content{flex:1;width:100%;max-width:var(--content-max);margin-inline:auto;padding:var(--section-gap) var(--gutter) calc(var(--sp-8) + var(--safe-bottom));padding-left:calc(var(--gutter) + var(--safe-left));padding-right:calc(var(--gutter) + var(--safe-right));display:flex;flex-direction:column;gap:var(--section-gap);min-width:0}.main-content.has-sheet{padding-bottom:calc(var(--sp-10) * 4 + var(--safe-bottom))}.card,.summary-card,.stat-card,.link-card,.action-card,.info-card,.calendar-section,.month-selector,.status-legend,.selection-panel,section.panel{background:var(--surface);border-radius:var(--r-lg);box-shadow:var(--shadow-sm);min-width:0}.card,.calendar-section,section.panel{padding:var(--card-pad)}.section-header{display:flex;align-items:center;gap:var(--sp-2);margin-bottom:var(--sp-3);min-width:0}.section-title{font-size:var(--fs-md);font-weight:620;color:var(--text-primary);min-width:0}.section-icon{font-size:18px;line-height:1;flex:none}.stats-grid,.summary-grid,.actions-grid,.links-grid,.auto-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:var(--sp-3);min-width:0}.stats-grid.dense,.summary-grid.dense{grid-template-columns:repeat(auto-fit,minmax(116px,1fr));gap:var(--sp-2)}.stat-card,.summary-card,.stat-box{padding:var(--sp-3);display:flex;flex-direction:column;gap:2px;min-width:0}.stat-value,.summary-value,.summary-num{font-size:var(--fs-xl);font-weight:680;line-height:var(--lh-tight);color:var(--text-primary);font-variant-numeric:tabular-nums}.stat-label,.summary-label,.summary-lbl{font-size:var(--fs-xs);font-weight:500;color:var(--text-tertiary);line-height:1.3;-webkit-hyphens:auto;hyphens:auto}button,.btn{font-family:inherit;font-size:var(--fs-base);font-weight:560;color:var(--text-primary);background:var(--surface-sunken);border:none;border-radius:var(--r-md);padding:0 var(--sp-4);min-height:var(--tap);display:inline-flex;align-items:center;justify-content:center;gap:var(--sp-2);cursor:pointer;transition:background var(--transition),transform var(--transition),opacity var(--transition)}button:active:not(:disabled),.btn:active:not(:disabled){transform:scale(.97)}button:disabled,.btn:disabled{opacity:.5;cursor:not-allowed}.btn-primary,.btn-submit{background:var(--accent-color);color:var(--text-on-accent);font-weight:620}.btn-primary:hover:not(:disabled),.btn-submit:hover:not(:disabled){background:var(--accent-hover)}.btn-danger{background:var(--danger-bg);color:var(--danger-text)}.btn-ghost{background:transparent}.btn-back,.btn-logout,.btn-icon{flex:none;padding:0 var(--sp-3);font-size:var(--fs-base);min-width:var(--tap)}.btn-block,.btn-submit,.btn-checkin,.btn-checkout{width:100%}.action-buttons{display:flex;flex-direction:column;gap:var(--sp-3)}.month-selector{display:grid;grid-template-columns:var(--tap) minmax(0,1fr) var(--tap);align-items:center;gap:var(--sp-2);padding:var(--sp-2)}.btn-nav{width:var(--tap);min-width:var(--tap);padding:0;font-size:var(--fs-lg);font-weight:600}.month-label{text-align:center;font-size:var(--fs-lg);font-weight:620;color:var(--text-primary);min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.chips,.tab-bar,.filter-row{display:flex;gap:var(--sp-2);overflow-x:auto;scrollbar-width:none;-webkit-overflow-scrolling:touch;scroll-snap-type:x proximity;padding-bottom:2px;margin-inline:calc(var(--gutter) * -1);padding-inline:var(--gutter)}.chips::-webkit-scrollbar,.tab-bar::-webkit-scrollbar,.filter-row::-webkit-scrollbar,.scroll-x::-webkit-scrollbar{display:none}.chip,.tab{flex:none;scroll-snap-align:start;min-height:var(--tap);padding:0 var(--sp-3);border-radius:var(--r-pill);background:var(--surface);border:1px solid var(--border-strong);font-size:var(--fs-sm);font-weight:560;white-space:nowrap;display:inline-flex;align-items:center;gap:var(--sp-1)}.chip.active,.tab.active{background:var(--accent-color);border-color:var(--accent-dark);color:var(--text-on-accent)}.segmented{display:grid;grid-auto-flow:column;grid-auto-columns:1fr;gap:2px;padding:3px;background:var(--surface-sunken);border-radius:var(--r-md)}.segmented>button{min-height:calc(var(--tap) - 6px);border-radius:calc(var(--r-md) - 3px);background:transparent;font-size:var(--fs-sm)}.segmented>button.active{background:var(--surface);box-shadow:var(--shadow-sm)}.form-group{display:flex;flex-direction:column;gap:var(--sp-2);min-width:0}.form-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:var(--sp-3)}label{font-size:var(--fs-sm);font-weight:560;color:var(--text-secondary)}input,select,textarea{font-family:inherit;font-size:16px;color:var(--text-primary);background:var(--surface);border:1px solid var(--border-strong);border-radius:var(--r-md);padding:var(--sp-3);min-height:var(--tap);width:100%;max-width:100%;-webkit-user-select:text;user-select:text;transition:border-color var(--transition),box-shadow var(--transition)}textarea{resize:vertical;min-height:88px;line-height:var(--lh-normal)}input:focus,select:focus,textarea:focus{outline:none;border-color:var(--accent-color);box-shadow:0 0 0 3px #d4a57438}input[type=checkbox],input[type=radio]{width:22px;height:22px;min-height:0;accent-color:var(--accent-color);flex:none}.calendar-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:clamp(3px,1vw,8px);min-width:0}.calendar-header,.weekday{min-width:0;text-align:center;padding:var(--sp-1) 0;font-size:var(--fs-xs);font-weight:620;color:var(--text-tertiary);text-transform:uppercase;letter-spacing:.02em;overflow:hidden}.calendar-day{aspect-ratio:1 / 1.18;min-width:0;min-height:0;padding:3px;background:var(--surface-sunken);border:1px solid transparent;border-radius:var(--r-sm);cursor:pointer;position:relative;display:flex;flex-direction:column;align-items:center;gap:2px;overflow:hidden;transition:background var(--transition),border-color var(--transition),transform var(--transition)}.calendar-day:active:not(.empty):not(.past):not(.closed):not(.scheduled){transform:scale(.94)}.day-number{font-size:var(--fs-xs);font-weight:600;line-height:1;align-self:stretch;text-align:center;font-variant-numeric:tabular-nums}.calendar-day.empty{background:transparent;border-color:transparent;cursor:default;pointer-events:none}.calendar-day.today{border-color:var(--accent-color);background:var(--accent-soft)}.calendar-day.selected{background:var(--accent-color);border-color:var(--accent-dark);color:var(--text-on-accent)}.calendar-day.past{opacity:.62;cursor:not-allowed}.calendar-day.closed{background:var(--closed);color:var(--text-secondary);cursor:not-allowed}.calendar-day.scheduled{background:var(--scheduled-bg);border-color:var(--scheduled);cursor:not-allowed}.calendar-day.closed:after,.calendar-day.scheduled:after{position:absolute;top:1px;right:2px;font-size:8px;line-height:1;opacity:.85}.calendar-day.closed:after{content:"🔒"}.calendar-day.scheduled:after{content:"👤"}.day-status{display:flex;flex-direction:column;align-items:center;gap:2px;width:100%;min-width:0;margin-top:auto}.status-dot{width:7px;height:7px;border-radius:50%;flex:none}.status-dot.available{background:var(--available)}.status-dot.preferred{background:var(--preferred)}.status-dot.unavailable{background:var(--unavailable)}.status-dot.sick{background:var(--sick)}.status-dot.vacation{background:var(--vacation)}.status-dot.scheduled{background:var(--scheduled)}.own-badge,.scheduled-by,.day-chip{max-width:100%;padding:0 3px;border-radius:4px;background:#0000000f;font-size:var(--fs-2xs);line-height:1.5;font-weight:560;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.own-badge{background:var(--accent-color);color:var(--text-on-accent)}@media (max-width: 359px){.own-badge,.scheduled-by,.day-chip{display:none}.calendar-day{aspect-ratio:1}}@media (min-width: 768px){.calendar-day{aspect-ratio:1;padding:var(--sp-2);gap:var(--sp-1)}.day-number{font-size:var(--fs-base);text-align:left}.status-dot{width:10px;height:10px}.own-badge,.scheduled-by,.day-chip{font-size:var(--fs-xs)}.calendar-header,.weekday{font-size:var(--fs-sm);padding:var(--sp-2) 0}}.scroll-x,.matrix-container,.detail-table,.table-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-width:thin;overscroll-behavior-x:contain}.scroll-x.bleed,.matrix-container.bleed{margin-inline:calc(var(--gutter) * -1);padding-inline:var(--gutter)}.scroll-x>table,.matrix-container>table{min-width:max-content}.sticky-col{position:sticky;left:0;z-index:2;background:var(--surface);box-shadow:1px 0 0 var(--border)}.list-item,.schedule-item,.shift-item,.entry-row{display:flex;flex-direction:column;gap:var(--sp-2);padding:var(--sp-3);background:var(--surface);border-radius:var(--r-md);min-width:0}.list-item+.list-item{margin-top:var(--sp-2)}.detail-row,.info-row,.lohn-row,.amount-row{display:flex;align-items:baseline;justify-content:space-between;gap:var(--sp-3);padding:var(--sp-2) 0;min-width:0}.detail-row+.detail-row,.lohn-row+.lohn-row,.amount-row+.amount-row{border-top:1px solid var(--border)}.detail-row>:first-child,.lohn-label{color:var(--text-secondary);font-size:var(--fs-sm);min-width:0}.detail-row>:last-child,.lohn-val,.value,.amount{font-weight:600;text-align:right;white-space:nowrap;font-variant-numeric:tabular-nums;flex:none}@media (min-width: 640px){.list-item,.schedule-item,.shift-item,.entry-row{flex-direction:row;align-items:center;justify-content:space-between;gap:var(--sp-4)}}.status-badge,.badge{display:inline-flex;align-items:center;gap:var(--sp-1);padding:3px var(--sp-2);border-radius:var(--r-pill);font-size:var(--fs-xs);font-weight:620;white-space:nowrap;background:var(--surface-sunken);color:var(--text-secondary);flex:none}.status-badge.success,.status-badge.paid,.status-badge.approved{background:var(--success-bg);color:var(--success-text)}.status-badge.warning,.status-badge.pending,.status-badge.unpaid{background:var(--warning-bg);color:var(--warning-text)}.status-badge.danger,.status-badge.rejected{background:var(--danger-bg);color:var(--danger-text)}.status-badge.info,.status-badge.active{background:var(--info-bg);color:var(--info-text)}.status-legend{display:grid;grid-template-columns:repeat(auto-fit,minmax(128px,1fr));gap:var(--sp-2) var(--sp-3);padding:var(--sp-3)}.legend-item,.legend-entry{display:flex;align-items:center;gap:var(--sp-2);font-size:var(--fs-sm);color:var(--text-secondary);min-width:0}.legend-item>span:last-child,.legend-entry>span:last-child{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.legend-dot,.legend-dot-inline{width:10px;height:10px;border-radius:50%;flex:none}.legend-dot.available{background:var(--available)}.legend-dot.preferred{background:var(--preferred)}.legend-dot.unavailable{background:var(--unavailable)}.legend-dot.sick{background:var(--sick)}.legend-dot.vacation{background:var(--vacation)}.legend-dot.scheduled-legend{background:var(--scheduled-bg);border:2px solid var(--scheduled)}.legend-dot.closed-legend{background:var(--closed);border:1px solid var(--border-strong)}.avatar{width:40px;height:40px;border-radius:50%;object-fit:cover;background:var(--surface-sunken);flex:none}.avatar.sm{width:28px;height:28px}.loading,.empty-state,.error-message{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--sp-3);text-align:center;padding:var(--sp-8) var(--sp-4);color:var(--text-secondary);font-size:var(--fs-base)}.empty-state .icon,.error-icon,.loading .icon{font-size:40px;line-height:1}.error-message{background:var(--danger-bg);color:var(--danger-text);border-radius:var(--r-md);padding:var(--sp-3) var(--sp-4);flex-direction:row;justify-content:flex-start;text-align:left;font-size:var(--fs-sm)}.message.success{background:var(--success-bg);color:var(--success-text);border-radius:var(--r-md);padding:var(--sp-3) var(--sp-4);font-size:var(--fs-sm)}.message.error{background:var(--danger-bg);color:var(--danger-text);border-radius:var(--r-md);padding:var(--sp-3) var(--sp-4);font-size:var(--fs-sm)}.spinner{width:28px;height:28px;border:3px solid var(--border);border-top-color:var(--accent-color);border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.selection-panel,.sheet{position:fixed;left:0;right:0;bottom:0;z-index:60;background:var(--surface);border-radius:var(--r-xl) var(--r-xl) 0 0;box-shadow:var(--shadow-up);padding:var(--sp-4) var(--gutter) calc(var(--sp-4) + var(--safe-bottom));padding-left:calc(var(--gutter) + var(--safe-left));padding-right:calc(var(--gutter) + var(--safe-right));max-height:min(78dvh,640px);overflow-y:auto;overscroll-behavior:contain;display:flex;flex-direction:column;gap:var(--sp-3);animation:sheet-up .22s cubic-bezier(.22,1,.36,1)}@keyframes sheet-up{0%{transform:translateY(100%)}to{transform:translateY(0)}}.sheet:before,.selection-panel:before{content:"";width:36px;height:4px;border-radius:var(--r-pill);background:var(--border-strong);margin:0 auto var(--sp-1);flex:none}.selection-info{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-3);font-weight:600}.status-buttons{display:grid;grid-template-columns:repeat(auto-fit,minmax(128px,1fr));gap:var(--sp-2)}.status-btn{width:100%}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:50;background:#0006;display:flex;align-items:flex-end;justify-content:center;padding:0}@media (min-width: 640px){.selection-panel,.sheet{position:sticky;bottom:var(--sp-4);border-radius:var(--r-lg);max-width:var(--content-max);margin-inline:auto;animation:none}.sheet:before,.selection-panel:before{display:none}.modal-overlay{align-items:center;padding:var(--sp-4)}}.stack{display:flex;flex-direction:column;gap:var(--sp-3);min-width:0}.row{display:flex;align-items:center;gap:var(--sp-2);min-width:0}.row-between{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-3);min-width:0}.wrap{flex-wrap:wrap}.grow{flex:1 1 auto;min-width:0}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}.clamp-2{display:-webkit-box;-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.nums{font-variant-numeric:tabular-nums}.break-all{overflow-wrap:anywhere;-webkit-hyphens:none;hyphens:none}.muted{color:var(--text-secondary)}.subtle{color:var(--text-tertiary);font-size:var(--fs-sm)}.visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}@media print{.app-header,.header,.selection-panel,.sheet,.btn-back,.chips{display:none!important}.main-content{padding:0}}
