:root{--c-bg: #f4f1ea;--c-bg-soft: #ede9df;--c-bg-dark: #0a0a0a;--c-card: #ffffff;--c-text: #0e0e0e;--c-text-2: #2a2a2a;--c-text-sub: #6b6b66;--c-border: rgba(26, 26, 26, .08);--c-border-strong: rgba(26, 26, 26, .14);--c-primary: #d4ff3f;--c-primary-dark: #a6cc26;--c-primary-soft: #ecffb8;--c-on-primary: #0e0e0e;--c-warn: #f59e0b;--c-danger: #ff5a36;--c-success: #2d9b6e;--c-info: #0ea5e9;--radius: 12px;--radius-sm: 8px;--radius-lg: 20px;--shadow: 0 1px 2px rgba(15, 23, 42, .06), 0 4px 12px rgba(15, 23, 42, .04);--shadow-lg: 0 10px 30px rgba(15, 23, 42, .18);--tap: 44px;--header-h: 56px;--tabbar-h: 64px;--font-sans: -apple-system, BlinkMacSystemFont, "Hiragino Kaku Gothic ProN", "Noto Sans JP", "Segoe UI", system-ui, sans-serif;--fs-xs: 12px;--fs-sm: 13px;--fs-md: 15px;--fs-base: 16px;--fs-lg: 18px;--fs-xl: 22px;--fs-2xl: 24px;--fs-3xl: 32px;--app-max: 480px}@keyframes fade-in-up{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@keyframes soft-pulse{0%,to{opacity:1}50%{opacity:.55}}@keyframes check-pop{0%{opacity:0;transform:scale(0)}60%{opacity:1;transform:scale(1.12)}to{opacity:1;transform:scale(1)}}@keyframes fade-in{0%{opacity:0}to{opacity:1}}*{box-sizing:border-box}[hidden]{display:none!important}html,body{margin:0;padding:0}body{background:var(--c-bg);color:var(--c-text);font-family:var(--font-sans);line-height:1.5;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}img{max-width:100%;display:block}a{color:inherit;text-decoration:none}button{font:inherit;color:inherit;background:none;border:none;cursor:pointer}ul{list-style:none;margin:0;padding:0}:focus-visible{outline:2px solid var(--c-primary-dark);outline-offset:2px;border-radius:4px}button:focus-visible,a:focus-visible{outline-offset:3px}.app{max-width:var(--app-max);margin:0 auto;min-height:100dvh;background:var(--c-bg);padding-bottom:calc(var(--tabbar-h) + env(safe-area-inset-bottom));position:relative}@media (min-width: 768px){body{background:var(--c-bg-soft)}.app{background:var(--c-bg);border-left:1px solid var(--c-border);border-right:1px solid var(--c-border)}}.view-pc{display:none}@media (min-width: 768px){.view-mobile{display:none}.view-pc{display:block}.app--wide{max-width:min(1100px,calc(100vw - 32px))}}.day-scroll__viewport{display:flex;overflow-x:auto;scroll-snap-type:x mandatory;scroll-behavior:smooth;-webkit-overflow-scrolling:touch;scrollbar-width:none;margin-inline:-12px}.day-scroll__viewport::-webkit-scrollbar{display:none}.day-scroll__day{flex:0 0 100%;scroll-snap-align:start;padding:12px;box-sizing:border-box}.day-scroll__list{display:flex;flex-direction:column;gap:8px}.day-scroll__empty{text-align:center;color:var(--c-text-sub);padding:48px 24px;background:var(--c-card);border-radius:var(--radius);border:1px solid var(--c-border)}.day-scroll__empty p{margin:0;font-size:var(--fs-md)}.day-scroll__list>.card,.week-cal__lessons>.week-cal__card{animation:fade-in-up .4s cubic-bezier(.2,.8,.2,1) both}.day-scroll__list>.card:nth-child(1),.week-cal__lessons>.week-cal__card:nth-child(1){animation-delay:.02s}.day-scroll__list>.card:nth-child(2),.week-cal__lessons>.week-cal__card:nth-child(2){animation-delay:.06s}.day-scroll__list>.card:nth-child(3),.week-cal__lessons>.week-cal__card:nth-child(3){animation-delay:.1s}.day-scroll__list>.card:nth-child(4),.week-cal__lessons>.week-cal__card:nth-child(4){animation-delay:.14s}.day-scroll__list>.card:nth-child(5),.week-cal__lessons>.week-cal__card:nth-child(5){animation-delay:.18s}.day-scroll__list>.card:nth-child(6),.week-cal__lessons>.week-cal__card:nth-child(6){animation-delay:.22s}.day-scroll__list>.card:nth-child(n+7),.week-cal__lessons>.week-cal__card:nth-child(n+7){animation-delay:.26s}.badge--few{animation:soft-pulse 2s ease-in-out infinite}.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}.stack{display:flex;flex-direction:column;gap:12px}.row{display:flex;align-items:center;gap:8px}.muted{color:var(--c-text-sub)}.small{font-size:var(--fs-xs)}.cta{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:var(--tap);padding:10px 18px;border-radius:999px;background:var(--c-text);color:#fff;font-weight:700;font-size:var(--fs-md);transition:transform .14s cubic-bezier(.2,.8,.2,1),background .18s ease,box-shadow .18s ease,opacity .15s ease}.cta:active{transform:scale(.97)}.cta[disabled]{opacity:.5;cursor:not-allowed}.cta--primary{background:var(--c-primary);color:var(--c-on-primary)}@media (hover: hover){.cta--primary:hover{box-shadow:0 4px 16px color-mix(in srgb,var(--c-primary) 55%,transparent)}.cta:not(.cta--primary):not(.cta--ghost):not(.cta--danger):hover{background:#000}}.cta--ghost{background:transparent;color:var(--c-text);border:1.5px solid var(--c-border-strong)}.cta--danger{background:transparent;color:var(--c-danger);border:1.5px solid var(--c-danger)}.cta--block{width:100%}.toast{position:fixed;left:50%;bottom:calc(var(--tabbar-h) + 16px);transform:translate(-50%) translateY(20px);background:var(--c-text);color:#fff;padding:10px 18px;border-radius:999px;font-size:var(--fs-sm);font-weight:600;opacity:0;pointer-events:none;transition:opacity .2s,transform .2s,background .15s;z-index:100;max-width:calc(var(--app-max) - 32px);box-shadow:var(--shadow-lg)}.toast.is-show{opacity:1;transform:translate(-50%) translateY(0)}.toast--success{background:var(--c-success)}.toast--error{background:var(--c-danger)}.toast--warn{background:var(--c-warn)}.toast--info{background:var(--c-text)}.badge{display:inline-flex;align-items:center;gap:4px;font-size:var(--fs-xs);font-weight:700;padding:3px 10px;border-radius:999px;line-height:1.4;white-space:nowrap}.badge--open{background:var(--c-primary-soft);color:var(--c-primary-dark)}.badge--few{background:#fef3c7;color:#b45309;box-shadow:0 0 #f59e0b66;animation:badge-few-pulse 2s ease-in-out infinite}.badge--full{background:#e5e7eb;color:#4b5563}.badge--booked{background:#dcfce7;color:var(--c-success)}@keyframes badge-few-pulse{0%,to{box-shadow:0 0 #f59e0b59;opacity:1}50%{box-shadow:0 0 0 5px #f59e0b00;opacity:.92}}.fade-in-up{animation:fade-in-up .35s cubic-bezier(.2,.8,.2,1) both;animation-delay:var(--anim-delay, 0ms)}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important;scroll-behavior:auto!important}}
