:root{--color-primary:#a1b88e;--color-primary-dark:#5a754a;--color-primary-light:#f0f4eb;--color-border:#d2dec8;--color-bg:#f8f9f6;--color-bg-card:#fff;--color-bg-input:#fcfcfb;--color-text:#282d24;--color-text-sub:#555d4f;--color-text-note:#8e9588;--color-text-muted:#b2b8ad;--color-required:#b54a46;--color-error:#b54a56;--color-success:#5a754a;--font-family:"Hiragino Kaku Gothic ProN", "Hiragino Sans", "BIZ UDPGothic", "Yu Gothic", "Meiryo", sans-serif;--radius-sm:6px;--radius-md:10px;--radius-lg:16px;--space-xs:4px;--space-sm:8px;--space-md:16px;--space-lg:24px;--space-xl:40px;--shadow-card:0 2px 12px #5a754a14;--shadow-hover:0 4px 20px #5a754a24;--container-max-width:560px;--transition-base:.2s ease}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html{-webkit-text-size-adjust:100%;font-size:16px}body{font-family:var(--font-family);color:var(--color-text);background-color:var(--color-bg);min-height:100dvh;line-height:1.7}img,svg{max-width:100%;display:block}button{cursor:pointer;font-family:inherit;font-size:inherit;background:0 0;border:none}input,textarea,select{font-family:inherit;font-size:inherit}a{color:inherit;text-decoration:none}ul,ol{list-style:none}h1,h2,h3,h4,h5,h6{font-weight:400;line-height:1.4}#root{flex-direction:column;min-height:100dvh;display:flex}.container{width:100%;max-width:var(--container-max-width);padding:0 var(--space-md);margin:0 auto}.app-header{width:100%;padding:var(--space-lg) var(--space-md) var(--space-md);text-align:center}.app-header__title{letter-spacing:.14em;color:var(--color-primary-dark);font-size:1.15rem;font-weight:500}.app-header__divider{background-color:var(--color-primary);width:32px;height:1px;margin:var(--space-sm) auto}.app-header__brand{letter-spacing:.12em;color:var(--color-primary-dark);font-size:.8rem}.main-content{padding-bottom:var(--space-xl);flex:1}.app-footer{width:100%;padding:var(--space-md);text-align:center;border-top:1px solid var(--color-border);margin-top:var(--space-lg)}.app-footer__copyright{color:var(--color-text-muted);letter-spacing:.04em;font-size:.65rem}.card{background-color:var(--color-bg-card);border-radius:var(--radius-lg);box-shadow:var(--shadow-card);padding:var(--space-lg);margin-top:var(--space-md)}.btn{width:100%;padding:14px var(--space-lg);border-radius:var(--radius-md);letter-spacing:.08em;transition:background-color var(--transition-base), box-shadow var(--transition-base), opacity var(--transition-base);justify-content:center;align-items:center;font-size:1rem;display:inline-flex}.btn--primary{background-color:var(--color-primary-dark);color:#fff}.btn--primary:hover{box-shadow:var(--shadow-hover);background-color:#4e6840}.btn--primary:disabled{opacity:.45;cursor:not-allowed}.btn--secondary{color:var(--color-text-sub);border:1px solid var(--color-border);background-color:#0000}.btn--secondary:hover{background-color:var(--color-primary-light)}.input{width:100%;padding:12px var(--space-md);background-color:var(--color-bg-input);border:1px solid var(--color-border);border-radius:var(--radius-sm);color:var(--color-text);transition:border-color var(--transition-base), box-shadow var(--transition-base);font-size:1rem}.input::placeholder{color:var(--color-text-muted)}.input:focus{border-color:var(--color-primary);outline:none;box-shadow:0 0 0 3px #a1b88e40}.input--error{border-color:var(--color-error)}.form-label{align-items:center;gap:var(--space-xs);color:var(--color-text-sub);margin-bottom:var(--space-xs);font-size:.9rem;display:flex}.badge--required{color:var(--color-required);border-radius:var(--radius-sm);background-color:#fdf0f0;padding:1px 6px;font-size:.7rem}.badge--optional{color:var(--color-text-note);background-color:var(--color-primary-light);border-radius:var(--radius-sm);padding:1px 6px;font-size:.7rem}.error-message{color:var(--color-error);margin-top:var(--space-xs);font-size:.8rem}.note{color:var(--color-text-note);font-size:.82rem;line-height:1.6}.step-indicator{padding:var(--space-md) var(--space-md) var(--space-sm);justify-content:center;align-items:center;display:flex}.step-indicator__item{flex-direction:column;align-items:center;gap:4px;display:flex}.step-indicator__line{background-color:var(--color-border);flex:1;max-width:28px;height:1px;margin-bottom:18px}.step-indicator__circle{border:1.5px solid var(--color-border);background-color:var(--color-bg-card);width:32px;height:32px;color:var(--color-text-note);transition:background-color var(--transition-base), border-color var(--transition-base), color var(--transition-base);border-radius:50%;justify-content:center;align-items:center;font-size:.8rem;display:flex}.step-indicator__label{color:var(--color-text-note);letter-spacing:.04em;transition:color var(--transition-base);font-size:.65rem}.step-indicator__item--active .step-indicator__circle{background-color:var(--color-primary-dark);border-color:var(--color-primary-dark);color:#fff}.step-indicator__item--active .step-indicator__label{color:var(--color-primary-dark);font-weight:700}.step-indicator__item--done .step-indicator__circle{background-color:var(--color-primary);border-color:var(--color-primary);color:#fff}.step-indicator__item--done .step-indicator__label{color:var(--color-text-sub)}.service-card{border:1.5px solid var(--color-border);border-radius:var(--radius-md);padding:var(--space-md);cursor:pointer;transition:border-color var(--transition-base), background-color var(--transition-base), box-shadow var(--transition-base);background-color:var(--color-bg-card)}.service-card:hover{border-color:var(--color-primary);box-shadow:var(--shadow-card)}.service-card--selected{border-color:var(--color-primary-dark);background-color:var(--color-primary-light);box-shadow:var(--shadow-hover)}.service-card__name{color:var(--color-primary-dark);margin-bottom:var(--space-xs);font-size:1rem}.service-card__duration{color:var(--color-text-sub);font-size:.82rem}.service-card__price{color:var(--color-text);margin-top:var(--space-xs);font-size:1.05rem}.calendar{width:100%}.calendar__nav{margin-bottom:var(--space-md);justify-content:space-between;align-items:center;display:flex}.calendar__month{color:var(--color-primary-dark);letter-spacing:.06em;font-size:1rem}.calendar__nav-btn{border:1px solid var(--color-border);background-color:var(--color-bg-card);width:36px;height:36px;color:var(--color-text-sub);transition:background-color var(--transition-base);border-radius:50%;justify-content:center;align-items:center;font-size:1rem;display:flex}.calendar__nav-btn:hover{background-color:var(--color-primary-light)}.calendar__grid{grid-template-columns:repeat(7,1fr);gap:4px;display:grid}.calendar__weekday{text-align:center;color:var(--color-text-note);padding-bottom:var(--space-xs);font-size:.72rem}.calendar__day{aspect-ratio:1;border-radius:var(--radius-sm);cursor:pointer;transition:background-color var(--transition-base);flex-direction:column;justify-content:center;align-items:center;font-size:.82rem;display:flex}.calendar__day--available{color:var(--color-primary-dark);font-weight:700}.calendar__day--available:hover{background-color:var(--color-primary-light)}.calendar__day--unavailable{color:var(--color-text-muted);cursor:not-allowed}.calendar__day--selected{background-color:var(--color-primary-dark);color:#fff;border-radius:var(--radius-sm)}.calendar__day--today{border:1px solid var(--color-primary)}.calendar__mark{font-size:.6rem;line-height:1}.calendar__mark--available{color:var(--color-primary-dark)}.calendar__mark--unavailable{color:var(--color-text-muted)}.calendar__legend{gap:var(--space-md);margin-top:var(--space-md);color:var(--color-text-sub);justify-content:center;font-size:.78rem;display:flex}.slot-grid{gap:var(--space-sm);grid-template-columns:repeat(3,1fr);display:grid}.slot-btn{padding:10px var(--space-xs);border:1.5px solid var(--color-border);border-radius:var(--radius-sm);background-color:var(--color-bg-card);color:var(--color-text);text-align:center;cursor:pointer;transition:border-color var(--transition-base), background-color var(--transition-base);font-size:.82rem}.slot-btn:hover{border-color:var(--color-primary);background-color:var(--color-primary-light)}.slot-btn--selected{border-color:var(--color-primary-dark);background-color:var(--color-primary-dark);color:#fff}.slot-btn--unavailable{color:var(--color-text-muted);border-color:var(--color-border);cursor:not-allowed;opacity:.5}.booking-summary{background-color:var(--color-primary-light);border-radius:var(--radius-md);padding:var(--space-sm) var(--space-md);margin-bottom:var(--space-md);color:var(--color-text-sub);gap:var(--space-xs) var(--space-md);flex-wrap:wrap;font-size:.85rem;display:flex}.booking-summary__item{gap:var(--space-xs);display:flex}.booking-summary__label{color:var(--color-text-note)}.completion__icon{background-color:var(--color-primary-light);border:2px solid var(--color-primary);width:64px;height:64px;margin:0 auto var(--space-md);color:var(--color-primary-dark);border-radius:50%;justify-content:center;align-items:center;font-size:1.8rem;display:flex}.monshin-cta{background-color:var(--color-primary-light);border:1.5px solid var(--color-primary);border-radius:var(--radius-md);padding:var(--space-md);margin:var(--space-md) 0;text-align:center}.monshin-cta__title{color:var(--color-primary-dark);margin-bottom:var(--space-xs);font-size:.95rem}.monshin-cta__text{color:var(--color-text-sub);margin-bottom:var(--space-sm);font-size:.82rem}.section-heading{text-align:center;margin-bottom:var(--space-md)}.section-heading__text{color:var(--color-primary-dark);letter-spacing:.04em;font-size:.95rem;font-weight:500}.section-heading__line{background:var(--color-primary);width:32px;height:1px;margin:var(--space-xs) auto 0}.course-list{gap:var(--space-sm);margin-bottom:var(--space-md);flex-direction:column;display:flex}.course-card{background:var(--color-bg-card);border:1px solid var(--color-border);padding:var(--space-md);cursor:pointer;text-align:left;transition:border-color var(--transition-base), box-shadow var(--transition-base);border-radius:14px;width:100%;position:relative}.course-card:hover{border-color:var(--color-primary);box-shadow:var(--shadow-card)}.course-card--recommended{border:1.5px solid var(--color-primary)}.course-card__ribbon{background:var(--color-primary-dark);color:#fff;letter-spacing:.06em;white-space:nowrap;border-radius:12px;padding:3px 10px;font-size:.68rem;position:absolute;top:-10px;right:12px}.course-card__inner{align-items:flex-start;gap:14px;display:flex}.course-card__icon{background:var(--color-primary-light);border-radius:50%;flex:0 0 48px;justify-content:center;align-items:center;width:48px;height:48px;font-size:1.4rem;display:flex}.course-card__body{flex:1;min-width:0}.course-card__name{color:var(--color-primary-dark);margin-bottom:var(--space-xs);font-size:.95rem;font-weight:500;line-height:1.4}.course-card__price-row{flex-wrap:wrap;align-items:baseline;gap:10px;margin-bottom:6px;display:flex}.course-card__duration{background:var(--color-primary-light);color:var(--color-primary-dark);white-space:nowrap;border-radius:10px;padding:3px 9px;font-size:.72rem}.course-card__price{color:var(--color-primary-dark);font-size:1.15rem;font-weight:500}.course-card__price-note{color:var(--color-text-note);margin-bottom:6px;font-size:.72rem;line-height:1.5}.course-card__badge{background:var(--color-primary-light);color:var(--color-primary-dark);border-radius:4px;margin-bottom:6px;padding:2px 9px;font-size:.7rem;display:inline-block}.course-card__desc{color:var(--color-text-sub);font-size:.78rem;line-height:1.5}.info-card{background:var(--color-primary-light);padding:var(--space-md);margin-top:var(--space-sm);border-radius:12px}.info-card__header{align-items:center;gap:var(--space-xs);margin-bottom:var(--space-xs);display:flex}.info-card__header-icon{font-size:1rem}.info-card__title{color:var(--color-primary-dark);font-size:.85rem;font-weight:500}.info-card__text{color:var(--color-text-sub);margin-bottom:var(--space-sm);font-size:.78rem;line-height:1.6}.info-card__links{gap:var(--space-xs);flex-direction:column;display:flex}.info-card__link-row{gap:var(--space-xs);display:flex}.info-card__link-btn{background:var(--color-bg-card);border:1px solid var(--color-primary);color:var(--color-primary-dark);padding:10px var(--space-sm);transition:background-color var(--transition-base);border-radius:8px;flex:1;justify-content:center;align-items:center;gap:5px;font-size:.78rem;text-decoration:none;display:flex}.info-card__link-btn:hover{background:#e8ede2}.info-card__link-btn--full{flex:none;width:100%}.ext-icon{color:var(--color-primary);font-size:.75rem;font-style:normal}.cal-wrapper{background:var(--color-bg-card);border:1px solid var(--color-border);padding:var(--space-md) var(--space-sm);margin-top:var(--space-sm);border-radius:14px}.cal-nav{margin-bottom:var(--space-md);justify-content:space-between;align-items:center;display:flex}.cal-nav__btn{border:1px solid var(--color-border);background:var(--color-bg-card);width:34px;height:34px;color:var(--color-primary-dark);transition:background-color var(--transition-base);border-radius:50%;justify-content:center;align-items:center;font-size:.9rem;display:flex}.cal-nav__btn:hover{background:var(--color-primary-light)}.cal-nav__month{color:var(--color-primary-dark);letter-spacing:.06em;font-size:.95rem;font-weight:500}.cal-weekdays{grid-template-columns:repeat(7,1fr);gap:3px;margin-bottom:4px;display:grid}.cal-weekday{text-align:center;color:var(--color-text-sub);padding:4px 0;font-size:.68rem}.cal-weekday--sun{color:#b54a46;font-weight:500}.cal-weekday--sat{color:#5b6f8a;font-weight:500}.cal-grid{grid-template-columns:repeat(7,1fr);gap:3px;display:grid}.cal-cell{aspect-ratio:1/1.15;border-radius:6px;flex-direction:column;justify-content:center;align-items:center;display:flex;position:relative}.cal-cell--empty,.cal-cell--out{background:0 0}.cal-cell--out .cal-cell__num{color:#e0e0dc;font-size:.82rem}.cal-cell--available{background:var(--color-bg-card);border:1.5px solid var(--color-primary);cursor:pointer;transition:background-color var(--transition-base)}.cal-cell--available:hover{background:var(--color-primary-light)}.cal-cell--unavailable{opacity:.75;background:#ececea}.cal-cell--today:after{content:"今日";color:var(--color-primary-dark);background:var(--color-primary-light);border-radius:3px;padding:1px 3px;font-size:.5rem;line-height:1.2;position:absolute;top:2px;right:2px}.cal-cell__num{color:var(--color-text);font-size:.88rem;font-weight:500;line-height:1}.cal-cell__num--sun{color:#b54a46}.cal-cell__num--sat{color:#5b6f8a}.cal-cell--unavailable .cal-cell__num{font-weight:400}.cal-cell__mark{margin-top:3px;font-size:.72rem;line-height:1}.cal-cell__mark--ok{color:var(--color-primary-dark)}.cal-cell__mark--ng{color:#8e9588}.cal-legend{justify-content:center;gap:var(--space-sm);margin-top:var(--space-md);padding-top:var(--space-sm);border-top:1px solid var(--color-border);flex-wrap:wrap;display:flex}.cal-legend__item{border-radius:12px;align-items:center;gap:4px;padding:4px 10px;font-size:.72rem;display:flex}.cal-legend__item--available{background:var(--color-bg-card);border:1.5px solid var(--color-primary);color:var(--color-primary-dark)}.cal-legend__item--unavailable{color:var(--color-text-sub);background:#ececea}.cal-legend__item--today{background:var(--color-primary-light);color:var(--color-primary-dark);border:1px solid var(--color-primary)}.cal-legend__mark{font-size:.72rem}.ext-link-btn{justify-content:center;align-items:center;display:flex}.ext-link-btn:before{content:"↗";margin-right:6px;font-size:.8rem}.ext-link-inline{color:var(--color-primary-dark);border-bottom:1px solid var(--color-primary);align-items:center;gap:2px;display:inline-flex}.ext-link-inline:before{content:"↗";color:var(--color-primary);font-size:.65rem}
