:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--bg:#f3f6ef;--panel:#fff;--line:#d7dfd0;--text:#1c2818;--subtle:#61725c;--brand:#2f6b3f;--brand-dark:#214c2c;--danger:#c73333;--warning:#a66a00;--success:#1d7a49;--font-base:16px}*{box-sizing:border-box}html,body{-moz-text-size-adjust:100%;text-size-adjust:100%;background:radial-gradient(circle at top right, #84b57f33, transparent 35%), linear-gradient(180deg, #f8fbf5 0%, var(--bg) 100%);color:var(--text);font-family:Hiragino Sans,Noto Sans JP,sans-serif;font-size:var(--font-base);margin:0;padding:0}a{color:inherit;text-decoration:none}button,input,select{font:inherit}body{min-height:100vh}h1,h2,h3{margin:0;font-weight:700;line-height:1.3}h1{font-size:1.5rem}h2{font-size:1.25rem}h3{font-size:1.125rem}.auth-page,.app-shell{min-height:100vh}.auth-page{place-items:center;padding:24px 16px 40px;display:grid}.auth-card,.panel,.card,.sheet,.calendar-day{background:#fffffff0;border:1px solid #d7dfd0e6;box-shadow:0 10px 28px #17261712}.auth-card{border-radius:24px;width:min(100%,420px);padding:24px}.login-header{text-align:center}.login-badge-wrap{justify-content:center;margin-bottom:12px;display:flex}.login-title{justify-items:center;gap:2px;margin:0 0 12px;font-size:clamp(1.7rem,4vw,2.1rem);line-height:1.2;display:grid}.eyebrow{color:var(--brand);margin:0 0 6px;font-size:1rem;font-weight:700}.subtitle{color:var(--subtle);margin:6px 0 0;font-size:1rem}.brand-badge{object-fit:contain}.form-card,.panel{border-radius:20px;padding:16px}.form-card{gap:12px;display:grid}label{gap:8px;font-weight:600;display:grid}input,select{border:1px solid var(--line);background:#fff;border-radius:14px;width:100%;min-height:48px;padding:0 14px}.primary-button,.secondary-button,.ghost-button{cursor:pointer;white-space:nowrap;border:0;border-radius:14px;flex-shrink:0;justify-content:center;align-items:center;min-height:48px;padding:0 16px;font-weight:700;display:inline-flex}.primary-button{background:var(--brand);color:#fff}.secondary-button{color:var(--brand-dark);background:#edf5ed}.ghost-button{border:1px solid var(--line);color:var(--text);background:0 0}.logout-button{border-radius:12px;min-height:38px;padding:0 12px;font-size:1rem}.message{border-radius:12px;margin:0;padding:10px 12px;font-size:1rem}.message.error{color:var(--danger);background:#fff0f0}.message.warning{color:var(--warning);background:#fff7e7}.message.success{color:var(--success);background:#edf9f1}.topbar{z-index:20;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:#f3f6eff0;border-bottom:1px solid #d7dfd0cc;padding:16px;position:sticky;top:0}.topbar-brand{justify-content:center;display:flex}.topbar-brand-copy{gap:6px;width:min(100%,1080px);display:grid}.topbar .eyebrow{font-size:1.3rem}.topbar-brand h1{margin:0;font-size:1.95rem}.topbar-title-row{justify-content:space-between;align-items:center;gap:12px;display:flex}.topbar-title-main{align-items:center;gap:8px;min-width:0;display:flex}.topbar-badge{flex-shrink:0;margin:0}.topbar .logout-button{font-size:1.3rem}.page-container{-webkit-overflow-scrolling:touch;gap:16px;padding:16px 16px 90px;display:grid;overflow-x:auto}.calendar-page{gap:12px;display:grid}.bottom-nav{width:min(100%,720px);padding:10px 12px calc(10px + env(safe-area-inset-bottom));-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#fffffff5;border-top:1px solid #d7dfd0f2;grid-template-columns:repeat(3,minmax(0,1fr));align-items:stretch;gap:8px;margin:0 auto;display:grid;position:fixed;bottom:0;left:0;right:0}.bottom-nav a{width:100%;min-height:48px;color:var(--subtle);text-align:center;border-radius:14px;place-items:center;font-size:1rem;font-weight:700;display:grid}.bottom-nav a:hover,.bottom-nav a:focus-visible{color:var(--brand-dark);background:#edf5ed}.month-header,.admin-grid,.summary-grid{gap:12px;display:grid}.month-actions{-webkit-overflow-scrolling:touch;gap:10px;display:flex;overflow-x:auto}.month-actions-inline{flex-wrap:nowrap;justify-content:space-between;align-items:center;padding-inline:clamp(48px,12vw,120px)}.month-actions-inline h2{text-align:center;white-space:nowrap;flex:auto;margin:0}.month-actions-inline .secondary-button{font-size:1.25rem}.item-switcher{padding-top:12px;padding-bottom:12px}.theme-boat{--calendar-accent:#f5f159;--calendar-accent-soft:#f9f692;--calendar-accent-panel:#fdfbba;--calendar-accent-cell:#fffdd8;--calendar-accent-border:#dbd656;--calendar-accent-empty:#f5f15973;--calendar-text-soft:#6d6812}.theme-engine{--calendar-accent:#5f6872;--calendar-accent-soft:#e4e7eb;--calendar-accent-panel:#f2f4f7;--calendar-accent-cell:#fafbfc;--calendar-accent-border:#c8cfd6;--calendar-accent-empty:#e7ebf0bf;--calendar-text-soft:#4d5560}.item-switcher.theme-boat,.item-switcher.theme-engine{background:var(--calendar-accent-panel);border-color:var(--calendar-accent-border)}.item-toggle-group{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;display:grid}.item-toggle{border:1px solid var(--line);min-height:48px;color:var(--subtle);cursor:pointer;background:#ffffffb3;border-radius:14px;font-weight:700}.theme-boat .item-toggle,.theme-engine .item-toggle{border-color:var(--calendar-accent-border)}.theme-boat .item-toggle.active,.theme-engine .item-toggle.active{background:var(--calendar-accent);border-color:var(--calendar-accent);color:#fff}.theme-boat .item-toggle.active{color:#544f0a}.calendar-board{border-radius:22px;gap:10px;padding:14px;display:grid}.calendar-board.theme-boat,.calendar-board.theme-engine{background:linear-gradient(180deg, #ffffff85 0%, #ffffff1f 100%), var(--calendar-accent-panel);border:1px solid var(--calendar-accent-border)}.calendar-weekdays,.calendar-week{grid-template-columns:repeat(7,minmax(132px,1fr));gap:8px;display:grid}.calendar-weeks{-webkit-overflow-scrolling:touch;gap:8px;padding-bottom:4px;display:grid;overflow-x:auto}.calendar-weekdays{padding-bottom:2px;overflow-x:auto}.calendar-weekday{text-align:center;min-width:132px;color:var(--calendar-text-soft,var(--subtle));padding:6px 0;font-weight:700}.calendar-day{text-align:left;background:var(--calendar-accent-cell);border:1px solid var(--calendar-accent-border);border-radius:18px;min-width:132px;min-height:168px;padding:12px;box-shadow:0 8px 20px #1726170d}.calendar-day.holiday-cell{background:#fff2f2;border-color:#efc5c5}.calendar-day.empty-slot{background:var(--calendar-accent-empty);box-shadow:none;border-style:dashed}.calendar-day-head{align-items:baseline;gap:10px;display:flex}.calendar-day-head strong{color:#1d4ed8;font-size:1rem}.calendar-day.holiday-cell .calendar-day-head strong{color:#d14343}.mini-summary{color:var(--subtle);gap:6px;font-size:1rem;display:grid}.role-summary{gap:8px;margin-top:8px;display:grid}.role-summary-row{align-content:start;gap:2px;display:grid}.role-summary-label{color:var(--calendar-text-soft,var(--subtle));font-size:1.05rem;font-weight:700;line-height:1.3}.role-summary-value{min-width:0;font-size:1.05rem;font-weight:600;line-height:1.3}.role-summary-value-full,.role-summary-value-compact{display:block}.role-summary-value-compact{display:none}.role-summary-value-full{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.role-summary-value.muted{color:var(--subtle);font-weight:500}.sheet-backdrop{z-index:40;background:#1118106b;justify-content:center;align-items:flex-end;padding:16px 16px 90px;display:flex;position:fixed;inset:0}.sheet{border-radius:24px 24px 18px 18px;width:min(100%,720px);max-height:min(82vh,760px);padding:18px;overflow:auto}.sheet-header{justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:12px;display:flex}.item-card{border:1px solid var(--line);background:#f9fbf8;border-radius:18px;margin-top:14px;padding:14px}.role-grid{gap:12px;display:grid}.table-panel,.table-scroll{-webkit-overflow-scrolling:touch;overflow-x:auto}table{border-collapse:collapse;width:100%;min-width:640px;font-size:1rem}th,td{border-bottom:1px solid var(--line);text-align:left;padding:12px 10px}th{white-space:nowrap;color:var(--subtle)}.summary-grid{grid-template-columns:repeat(auto-fit,minmax(220px,1fr))}.summary-card{border-radius:18px;padding:16px}.download-actions{-webkit-overflow-scrolling:touch;gap:10px;margin-top:14px;display:flex;overflow-x:auto}@media (min-width:840px){.page-container{max-width:1080px;margin:0 auto;padding-left:24px;padding-right:24px}.admin-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width:839px){:root{--font-base:14px}.topbar{padding:10px 12px}.topbar-brand-copy{gap:2px}.topbar-title-row{align-items:center;gap:6px}.topbar-title-main{gap:6px;min-width:0}.topbar-brand h1{font-size:1.43rem}.topbar .eyebrow,.topbar .subtitle,.topbar .logout-button{font-size:1.014rem}.logout-button{min-height:32px;padding:0 10px}.page-container{gap:10px;padding:10px 10px 82px}.calendar-page{gap:8px}.panel,.form-card{border-radius:16px;padding:10px}.month-header{gap:8px}.month-header h2{font-size:1.05rem}.month-actions{gap:6px}.month-actions-inline h2{font-size:1.05rem}.month-actions-inline{padding-inline:40px}.month-actions-inline .secondary-button{font-size:1.05rem}.month-actions .secondary-button{border-radius:10px;min-height:34px;padding:0 10px;font-size:1.05rem}.item-switcher{padding-top:8px;padding-bottom:8px}.item-toggle-group{gap:6px}.item-toggle{border-radius:10px;min-height:36px;font-size:.82rem}.calendar-board{border-radius:16px;gap:6px;padding:8px}.calendar-weeks{gap:4px;padding-bottom:0;overflow-x:visible}.calendar-week{grid-template-columns:repeat(7,minmax(0,1fr));gap:4px}.calendar-day{min-width:0;min-height:68px;box-shadow:none;border-radius:10px;padding:4px}.calendar-day-head{justify-content:space-between;gap:3px}.calendar-day-head strong{font-size:.82rem;line-height:1}.calendar-day-head span{color:var(--calendar-text-soft,var(--subtle));font-size:.58rem;line-height:1}.role-summary{gap:3px;margin-top:4px}.role-summary-row{gap:1px}.role-summary-label{white-space:nowrap;font-size:.66rem;line-height:1}.role-summary-value{font-size:.66rem;line-height:1;overflow:hidden}.role-summary-value-full{display:none}.role-summary-value-compact{white-space:nowrap;text-overflow:ellipsis;display:block;overflow:hidden}.role-summary-empty{min-height:1.6rem}.bottom-nav{padding:6px 8px calc(6px + env(safe-area-inset-bottom));gap:4px}.bottom-nav a{border-radius:10px;min-height:40px;font-size:.92rem}}
