.app-shell{display:flex;flex-direction:column;min-height:100vh}.skip-link{position:absolute;left:-9999px;z-index:100;padding:var(--space-2) var(--space-4);background:var(--color-surface);border:2px solid var(--color-primary)}.skip-link:focus{left:var(--space-3);top:var(--space-3)}.app-header{background:var(--color-surface);border-bottom:1px solid var(--color-border);box-shadow:var(--shadow-sm);position:sticky;top:0;z-index:20}.app-header-bar{height:4px;background:linear-gradient(to right,var(--color-primary) 0%,var(--color-primary) 62%,var(--color-accent) 62%,var(--color-accent) 100%)}.app-header-inner{display:flex;align-items:center;justify-content:space-between;gap:var(--space-4);max-width:var(--layout-max-width);margin:0 auto;padding:var(--space-3) var(--space-4)}.app-brand{display:flex;align-items:center;gap:var(--space-3);min-width:0}.app-logo{display:flex;flex-shrink:0}.app-brand-text{display:flex;flex-direction:column;min-width:0}.app-brand-title{font-size:var(--font-size-lg);font-weight:600;color:var(--color-primary-dark);white-space:nowrap}.app-header-actions{display:flex;align-items:center;gap:var(--space-3)}.app-user{display:flex;flex-direction:column;align-items:flex-end;line-height:1.3}.app-user-name{font-size:var(--font-size-sm);font-weight:600}.app-user-meta{font-size:var(--font-size-xs);color:var(--color-text-muted)}.app-menu-toggle{display:none}.app-nav-logout{display:none;padding:var(--space-3) var(--space-4)}.app-nav-logout button{width:100%}.app-nav-user{display:none;padding:var(--space-2) var(--space-4);color:#ffffffe6;font-size:var(--font-size-xs);border-bottom:1px solid rgba(255,255,255,.2)}.app-nav{background:var(--color-primary)}.app-nav-list{display:flex;max-width:var(--layout-max-width);margin:0 auto;padding:0 var(--space-4);list-style:none;gap:2px}.app-nav-link{display:block;padding:var(--space-3) var(--space-4);color:#ffffffeb;font-size:var(--font-size-sm);font-weight:500;text-decoration:none;border-bottom:3px solid transparent;white-space:nowrap}.app-nav-link:hover{color:#fff;background:#ffffff1f}.app-nav-link.is-active{color:#fff;background:#ffffff29;border-bottom-color:var(--color-accent);font-weight:600}.app-main{flex:1;padding:var(--space-5) 0 var(--space-7)}.app-container{max-width:var(--layout-max-width);margin:0 auto;padding:0 var(--space-4)}.app-footer{padding:var(--space-4) 0;background:var(--color-surface);border-top:3px solid var(--color-primary)}.app-footer-inner{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);flex-wrap:wrap}.app-footer-inner p{margin:0}.notification-bell{position:relative}.notification-bell-button{position:relative;display:flex;align-items:center;justify-content:center;width:38px;height:38px;background:transparent;border:1px solid var(--color-border);border-radius:var(--radius-sm);cursor:pointer;color:var(--color-text-muted)}.notification-bell-button:hover{background:var(--color-primary-pale);color:var(--color-primary)}.notification-count{position:absolute;top:-6px;right:-6px;min-width:18px;height:18px;padding:0 4px;font-size:11px;font-weight:700;line-height:18px;text-align:center;color:#fff;background:var(--color-accent-warm);border-radius:9px}.notification-panel{position:absolute;top:calc(100% + var(--space-2));right:0;z-index:30;width:min(380px,calc(100vw - var(--space-6)));max-height:460px;overflow-y:auto;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);box-shadow:var(--shadow-lg)}.notification-panel-header{display:flex;align-items:center;justify-content:space-between;gap:var(--space-2);padding:var(--space-3);border-bottom:1px solid var(--color-border);background:var(--color-surface-alt);position:sticky;top:0}.notification-item{display:block;width:100%;padding:var(--space-3);text-align:left;border:none;border-bottom:1px solid var(--color-border);background:transparent;cursor:pointer;font-family:inherit;font-size:var(--font-size-sm);color:inherit}.notification-item:hover{background:var(--color-primary-pale)}.notification-item.is-unread{border-left:3px solid var(--color-accent);background:var(--color-accent-pale)}.notification-item-subject{font-weight:600;margin-bottom:2px}.notification-item-body{color:var(--color-text-muted);font-size:var(--font-size-xs);white-space:pre-wrap;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.notification-item-time{margin-top:var(--space-1);color:var(--color-text-subtle);font-size:var(--font-size-xs)}@media(max-width:820px){.app-brand-title{font-size:var(--font-size-md)}.app-user{display:none}.app-menu-toggle{display:inline-flex}.button.app-header-logout{display:none}.app-nav-logout,.app-nav-user{display:block}.app-nav{display:none}.app-nav.is-open{display:block}.app-nav-list{flex-direction:column;padding:var(--space-2) var(--space-3);gap:0}.app-nav-link{border-bottom:1px solid rgba(255,255,255,.15);border-left:3px solid transparent}.app-nav-link.is-active{border-bottom-color:#ffffff26;border-left-color:var(--color-accent)}}.calendar-controls{display:flex;align-items:flex-end;justify-content:space-between;gap:var(--space-4);flex-wrap:wrap}.calendar-date-nav{display:flex;align-items:center;gap:var(--space-2)}.input.calendar-date-input{width:170px;flex:0 0 auto}.calendar-filters{display:flex;gap:var(--space-3);flex-wrap:wrap}.calendar-filter{display:flex;flex-direction:column;gap:2px}.calendar-filter .select{min-width:130px}.calendar-legend{display:flex;gap:var(--space-4);flex-wrap:wrap;padding:var(--space-2) var(--space-3);margin-bottom:var(--space-3);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-sm);font-size:var(--font-size-xs)}.calendar-legend-item{display:inline-flex;align-items:center;gap:var(--space-2)}.calendar-legend-swatch{width:22px;height:14px;border-radius:2px;border:1px solid}.calendar-legend-swatch.is-mine{background:var(--status-reserved);border-color:var(--status-reserved-border);box-shadow:inset 3px 0 0 var(--status-mine-marker)}.calendar-title-row{margin-bottom:var(--space-2)}.calendar-scroll{overflow-x:auto;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius)}.calendar-grid{min-width:calc(var(--sidebar-width) + var(--timeline-width))}.calendar-head-facility,.calendar-head-timeline{position:sticky;top:0;z-index:2;height:34px;background:var(--color-primary-pale);border-bottom:2px solid var(--color-primary-border);font-size:var(--font-size-xs);font-weight:600;color:var(--color-primary-dark)}.calendar-head-facility{display:flex;align-items:center;float:left;width:var(--sidebar-width);padding:0 var(--space-3);border-right:1px solid var(--color-border)}.calendar-head-timeline{position:relative;margin-left:var(--sidebar-width);width:var(--timeline-width)}.calendar-hour-label{position:absolute;top:8px;transform:translate(-50%);font-variant-numeric:tabular-nums;white-space:nowrap}.calendar-row-wrap{display:flex;border-bottom:1px solid var(--color-border)}.calendar-row-wrap:last-child{border-bottom:none}.calendar-facility{flex-shrink:0;width:var(--sidebar-width);padding:var(--space-2) var(--space-3);border-right:1px solid var(--color-border);background:var(--color-surface-alt)}.calendar-facility-name{font-size:var(--font-size-sm);font-weight:600;line-height:1.35}.calendar-facility-meta{font-size:var(--font-size-xs);color:var(--color-text-muted)}.calendar-track{position:relative;flex-shrink:0;width:var(--timeline-width);height:52px;background:var(--status-vacant);cursor:cell}.calendar-track:hover{background:#fafcff}.calendar-hour-line{position:absolute;top:0;bottom:0;width:1px;background:var(--color-border)}.calendar-outside{position:absolute;top:0;bottom:0;background:repeating-linear-gradient(135deg,#f4f6f9,#f4f6f9 5px,#e9edf2 5px,#e9edf2 10px)}.calendar-block{position:absolute;top:5px;bottom:5px;display:flex;align-items:center;padding:0 var(--space-2);border:1px solid;border-radius:3px;font-size:var(--font-size-xs);font-family:inherit;text-align:left;overflow:hidden;cursor:pointer}.calendar-block-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.calendar-block.state-pending,.calendar-legend-swatch.state-pending{background:var(--status-pending);border-color:var(--status-pending-border);color:var(--status-pending-text);background-image:repeating-linear-gradient(135deg,transparent,transparent 4px,rgba(224,166,64,.28) 4px,rgba(224,166,64,.28) 8px)}.calendar-block.state-reserved,.calendar-legend-swatch.state-reserved{background:var(--status-reserved);border-color:var(--status-reserved-border);color:var(--status-reserved-text)}.calendar-block.state-in_process,.calendar-legend-swatch.state-in_process{background:var(--status-in-process);border-color:var(--status-in-process-border);color:var(--status-in-process-text)}.calendar-block.state-closed,.calendar-legend-swatch.state-closed{background:var(--status-closed);border-color:var(--status-closed-border);color:var(--status-closed-text);cursor:default}.calendar-legend-swatch.state-vacant{background:var(--status-vacant);border-color:var(--status-vacant-border)}.calendar-block.is-mine{box-shadow:inset 3px 0 0 var(--status-mine-marker);font-weight:600}@media(max-width:640px){.calendar-grid{--sidebar-width: 128px}.calendar-facility-meta{display:none}}.login-page{min-height:100vh;display:flex;flex-direction:column;background:linear-gradient(180deg,var(--color-primary-pale) 0%,var(--color-bg) 42%)}.login-bar{height:4px;background:linear-gradient(to right,var(--color-primary) 0%,var(--color-primary) 62%,var(--color-accent) 62%,var(--color-accent) 100%)}.login-main{flex:1;display:flex;align-items:center;justify-content:center;padding:var(--space-5) var(--space-4) var(--space-7)}.login-card{width:100%;max-width:420px;box-shadow:var(--shadow)}.login-brand{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-5) var(--space-5) var(--space-4);border-bottom:1px solid var(--color-border)}.login-title{font-size:var(--font-size-xl);color:var(--color-primary-dark)}.login-note{margin-top:var(--space-4);padding-top:var(--space-3);border-top:1px solid var(--color-border)}.login-note p:last-child{margin-bottom:0}:root{--color-primary: #0b4c8c;--color-primary-dark: #073a6b;--color-primary-light: #1a6fbf;--color-primary-pale: #eaf2fa;--color-primary-border: #c5daf0;--color-accent: #f2b705;--color-accent-dark: #d19f00;--color-accent-pale: #fdf6e0;--color-accent-warm: #e04f2f;--color-accent-warm-pale: #fdeeea;--color-success: #17734a;--color-success-pale: #e8f5ee;--color-warning: #b06a00;--color-warning-pale: #fdf3e3;--color-danger: #b3261e;--color-danger-pale: #fdecea;--color-info: var(--color-primary);--color-info-pale: var(--color-primary-pale);--status-vacant: #ffffff;--status-vacant-border: #d8dee6;--status-pending: #fdf3e3;--status-pending-border: #e0a640;--status-pending-text: #8a5200;--status-reserved: #eaf2fa;--status-reserved-border: #6fa3d6;--status-reserved-text: #0b4c8c;--status-in-process: #f3eefa;--status-in-process-border: #9b7bc4;--status-in-process-text: #5a3d85;--status-closed: #f0f2f5;--status-closed-border: #c7ced6;--status-closed-text: #6b737d;--status-mine-marker: var(--color-accent);--color-text: #1c2733;--color-text-muted: #5b6672;--color-text-subtle: #7d8794;--color-text-inverse: #ffffff;--color-bg: #f4f6f9;--color-surface: #ffffff;--color-surface-alt: #fafbfc;--color-border: #d8dee6;--color-border-strong: #b6bfca;--font-sans: "Hiragino Kaku Gothic ProN", "Hiragino Sans", "Noto Sans JP", "Yu Gothic Medium", "Yu Gothic", Meiryo, system-ui, sans-serif;--font-size-xs: .75rem;--font-size-sm: .8125rem;--font-size-base: .9375rem;--font-size-md: 1rem;--font-size-lg: 1.125rem;--font-size-xl: 1.375rem;--font-size-2xl: 1.625rem;--line-height-base: 1.7;--line-height-tight: 1.4;--space-1: .25rem;--space-2: .5rem;--space-3: .75rem;--space-4: 1rem;--space-5: 1.5rem;--space-6: 2rem;--space-7: 3rem;--radius-sm: 3px;--radius: 5px;--radius-lg: 8px;--shadow-sm: 0 1px 2px rgba(28, 39, 51, .08);--shadow: 0 2px 6px rgba(28, 39, 51, .1);--shadow-lg: 0 8px 24px rgba(28, 39, 51, .14);--layout-max-width: 1240px;--header-height: 64px;--sidebar-width: 224px;--focus-ring: 0 0 0 3px rgba(11, 76, 140, .35)}*,*:before,*:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{margin:0;font-family:var(--font-sans);font-size:var(--font-size-base);line-height:var(--line-height-base);color:var(--color-text);background:var(--color-bg)}h1,h2,h3,h4{margin:0;line-height:var(--line-height-tight);font-weight:600}p{margin:0 0 var(--space-3)}a{color:var(--color-primary);text-decoration:underline;text-underline-offset:2px}a:hover{color:var(--color-primary-dark)}:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px;box-shadow:var(--focus-ring)}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.page-title{font-size:var(--font-size-xl);padding-left:var(--space-3);border-left:4px solid var(--color-primary);margin-bottom:var(--space-2)}.page-description{color:var(--color-text-muted);font-size:var(--font-size-sm);margin-bottom:var(--space-5)}.section-title{font-size:var(--font-size-md);padding-bottom:var(--space-2);margin-bottom:var(--space-4);border-bottom:2px solid var(--color-primary-border)}.section-title:before{content:"";display:inline-block;width:3px;height:1em;margin-right:var(--space-2);vertical-align:-.1em;background:var(--color-accent)}.card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);box-shadow:var(--shadow-sm)}.card-header{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);padding:var(--space-3) var(--space-4);border-bottom:1px solid var(--color-border);background:var(--color-surface-alt);border-radius:var(--radius) var(--radius) 0 0}.card-header h2,.card-header h3{font-size:var(--font-size-md)}.card-body{padding:var(--space-4)}.card-body>:last-child{margin-bottom:0}.button{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);min-height:38px;padding:0 var(--space-4);font-family:inherit;font-size:var(--font-size-base);font-weight:500;line-height:1;color:var(--color-text);background:var(--color-surface);border:1px solid var(--color-border-strong);border-radius:var(--radius-sm);cursor:pointer;text-decoration:none;white-space:nowrap;transition:background-color .12s ease,border-color .12s ease}.button:hover:not(:disabled){background:var(--color-surface-alt);border-color:var(--color-primary-light)}.button:disabled{opacity:.55;cursor:not-allowed}.button-primary{color:var(--color-text-inverse);background:var(--color-primary);border-color:var(--color-primary)}.button-primary:hover:not(:disabled){background:var(--color-primary-dark);border-color:var(--color-primary-dark)}.button-accent{color:#3d2c00;background:var(--color-accent);border-color:var(--color-accent-dark)}.button-accent:hover:not(:disabled){background:var(--color-accent-dark)}.button-danger{color:var(--color-danger);border-color:var(--color-danger);background:var(--color-surface)}.button-danger:hover:not(:disabled){background:var(--color-danger-pale)}.button-quiet{border-color:transparent;background:transparent;color:var(--color-primary)}.button-quiet:hover:not(:disabled){background:var(--color-primary-pale);border-color:transparent}.button-sm{min-height:30px;padding:0 var(--space-3);font-size:var(--font-size-sm)}.button-block{width:100%}.field{margin-bottom:var(--space-4)}.field-label{display:block;margin-bottom:var(--space-1);font-size:var(--font-size-sm);font-weight:600}.field-required{margin-left:var(--space-1);font-size:var(--font-size-xs);font-weight:500;color:var(--color-accent-warm)}.field-hint{margin-top:var(--space-1);font-size:var(--font-size-xs);color:var(--color-text-muted)}.field-error{margin-top:var(--space-1);font-size:var(--font-size-sm);color:var(--color-danger)}.input,.select,.textarea{width:100%;min-height:38px;padding:var(--space-2) var(--space-3);font-family:inherit;font-size:var(--font-size-base);color:var(--color-text);background:var(--color-surface);border:1px solid var(--color-border-strong);border-radius:var(--radius-sm)}.input:focus,.select:focus,.textarea:focus{border-color:var(--color-primary);outline:none;box-shadow:var(--focus-ring)}.input[aria-invalid=true],.textarea[aria-invalid=true]{border-color:var(--color-danger)}.textarea{min-height:84px;line-height:var(--line-height-base);resize:vertical}.field-row{display:grid;gap:var(--space-4)}@media(min-width:720px){.field-row-2{grid-template-columns:1fr 1fr}.field-row-3{grid-template-columns:repeat(3,1fr)}}.badge{display:inline-flex;align-items:center;gap:var(--space-1);padding:2px var(--space-2);font-size:var(--font-size-xs);font-weight:600;line-height:1.6;border-radius:var(--radius-sm);border:1px solid transparent;white-space:nowrap}.badge-pending{color:var(--status-pending-text);background:var(--status-pending);border-color:var(--status-pending-border)}.badge-confirmed,.badge-checked_in{color:var(--status-reserved-text);background:var(--status-reserved);border-color:var(--status-reserved-border)}.badge-cancel_requested,.badge-change_requested{color:var(--status-in-process-text);background:var(--status-in-process);border-color:var(--status-in-process-border)}.badge-rejected,.badge-cancelled,.badge-no_show{color:var(--status-closed-text);background:var(--status-closed);border-color:var(--status-closed-border)}.badge-warning{color:var(--color-warning);background:var(--color-warning-pale);border-color:var(--color-warning)}.alert{display:flex;gap:var(--space-3);padding:var(--space-3) var(--space-4);margin-bottom:var(--space-4);border-radius:var(--radius-sm);border:1px solid;border-left-width:4px;font-size:var(--font-size-sm)}.alert>div{flex:1}.alert-title{font-weight:600;margin-bottom:var(--space-1)}.alert-info{color:var(--color-text);background:var(--color-info-pale);border-color:var(--color-primary-border);border-left-color:var(--color-primary)}.alert-success{background:var(--color-success-pale);border-color:#b8ddc9;border-left-color:var(--color-success)}.alert-warning{background:var(--color-warning-pale);border-color:#ecd4a6;border-left-color:var(--color-warning)}.alert-danger{background:var(--color-danger-pale);border-color:#f0c4c0;border-left-color:var(--color-danger)}.table-wrap{overflow-x:auto;border:1px solid var(--color-border);border-radius:var(--radius);background:var(--color-surface)}.table{width:100%;border-collapse:collapse;font-size:var(--font-size-sm);white-space:nowrap}.table th,.table td{padding:var(--space-2) var(--space-3);text-align:left;border-bottom:1px solid var(--color-border)}.table thead th{background:var(--color-primary-pale);color:var(--color-primary-dark);font-weight:600;border-bottom:2px solid var(--color-primary-border);position:sticky;top:0}.table tbody tr:hover{background:var(--color-surface-alt)}.table tbody tr:last-child td{border-bottom:none}.table-numeric{text-align:right;font-variant-numeric:tabular-nums}.stack{display:flex;flex-direction:column;gap:var(--space-4)}.stack-sm{gap:var(--space-2)}.row{display:flex;align-items:center;gap:var(--space-3);flex-wrap:wrap}.row-end{justify-content:flex-end}.row-between{justify-content:space-between}.grid-2{display:grid;gap:var(--space-4)}@media(min-width:900px){.grid-2{grid-template-columns:1fr 1fr}}.text-muted{color:var(--color-text-muted)}.text-sm{font-size:var(--font-size-sm)}.text-xs{font-size:var(--font-size-xs)}.text-numeric{font-variant-numeric:tabular-nums}.empty-state{padding:var(--space-6) var(--space-4);text-align:center;color:var(--color-text-muted);font-size:var(--font-size-sm)}.bar-track{flex:1;min-width:80px;height:12px;background:var(--color-bg);border:1px solid var(--color-border);border-radius:6px;overflow:hidden}.bar-fill{display:block;height:100%;background:var(--color-primary-light)}
