:root{--color-brand: #14636f;--color-brand-strong: #0e4954;--color-brand-weak: #4a97a6;--color-header-bg: #cfe8f3;--color-footer-bg: #cfe8f3;--color-body-bg: #ffffff;--color-surface: #ffffff;--color-surface-muted: #f2f7fa;--color-text: #1c2b30;--color-text-muted: #566a70;--color-text-on-brand: #ffffff;--color-text-on-header: #0e4954;--color-link: #10606d;--color-link-hover: #0e4954;--color-link-visited: #6a4a8f;--color-danger: #c0392b;--color-danger-bg: #fdecea;--color-success: #2e7d5b;--color-success-bg: #e5f4ec;--color-warning: #8a5d00;--color-warning-bg: #fdf1db;--color-warning-border: #e0ad3d;--color-focus-ring: #1f9bb3;--color-border: #cfd9dd;--color-border-strong: #9fb4bb;--color-row-odd: #ffffff;--color-row-even: #eef5f8;--color-row-hover: #dcecf2;--color-disabled-bg: #e3e8ea;--color-disabled-text: #9aa7ac;--color-disabled-border: #d0d7da;--font-family-base: -apple-system, BlinkMacSystemFont, "Hiragino Kaku Gothic ProN", "Hiragino Sans", "Noto Sans JP", "Yu Gothic", Meiryo, sans-serif;--font-size-xs: 12px;--font-size-sm: 14px;--font-size-md: 16px;--font-size-lg: 18px;--font-size-xl: 22px;--font-size-2xl: 28px;--line-height-tight: 1.3;--line-height-base: 1.6;--font-weight-normal: 400;--font-weight-medium: 600;--font-weight-bold: 700;--space-2: 2px;--space-4: 4px;--space-8: 8px;--space-12: 12px;--space-16: 16px;--space-20: 20px;--space-24: 24px;--space-32: 32px;--space-40: 40px;--page-padding-x: 16px;--radius-sm: 4px;--radius-md: 8px;--radius-lg: 12px;--radius-pill: 999px;--shadow-sm: 0 1px 2px rgba(20, 45, 50, .08);--shadow-md: 0 2px 8px rgba(20, 45, 50, .12);--shadow-header: 0 1px 3px rgba(20, 45, 50, .12);--header-height: 52px;--footer-min-height: 44px;--logo-height: 30px;--tap-target-min: 44px;--content-max-width: 480px;--content-max-width-admin: 1120px;--content-max-width-admin-form: 720px;--focus-ring-width: 2px;--transition-fast: .12s ease;--z-header: 100;--z-footer: 100}*,*:before,*:after{box-sizing:border-box}html,body,#root{margin:0;padding:0;width:100%}html{-webkit-text-size-adjust:100%;text-size-adjust:100%}body{min-height:100vh;min-height:100dvh;background:var(--color-body-bg);color:var(--color-text);font-family:var(--font-family-base);font-size:var(--font-size-md);line-height:var(--line-height-base);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}h1,h2,h3,h4,h5,h6,p,figure,blockquote,dl,dd,ul,ol{margin:0}ul,ol{padding:0;list-style:none}img,svg,video{display:block;max-width:100%}button{font-family:inherit;font-size:inherit}body{overflow-x:hidden}:focus-visible{outline:var(--focus-ring-width) solid var(--color-focus-ring);outline-offset:2px}.app-shell{display:flex;flex-direction:column;min-height:100vh;min-height:100dvh;width:100%}.app-main{flex:1 0 auto;display:flex;flex-direction:column;width:100%;background:var(--color-body-bg)}.page-container{width:100%;max-width:var(--content-max-width);margin-inline:auto;padding:var(--space-24) var(--page-padding-x);display:flex;flex-direction:column;flex:1 0 auto}.full-bleed{width:100%;max-width:none;padding-left:0;padding-right:0;margin-inline:0}.app-header{position:relative;display:flex;align-items:center;justify-content:space-between;gap:var(--space-12);width:100%;min-height:var(--header-height);padding:var(--space-8) var(--page-padding-x);background:var(--color-header-bg);color:var(--color-text-on-header);box-shadow:var(--shadow-header)}.app-header__screen-id{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);font-size:var(--font-size-sm);font-weight:var(--font-weight-bold);color:var(--color-text-on-header);opacity:.7;white-space:nowrap;pointer-events:none}.app-header__logo{display:inline-flex;align-items:center}.app-header__logo svg,.app-logo{height:var(--logo-height);width:auto}.app-header__actions{display:inline-flex;align-items:center;gap:var(--space-8)}.app-footer{flex-shrink:0;width:100%;min-height:var(--footer-min-height);padding:var(--space-12) var(--page-padding-x);background:var(--color-footer-bg);color:var(--color-text-on-header);text-align:center}.app-footer__copyright{font-size:var(--font-size-xs);color:var(--color-text-on-header)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-8);width:auto;min-height:var(--tap-target-min);padding:var(--space-12) var(--space-20);white-space:normal;text-align:center;line-height:var(--line-height-tight);font-size:var(--font-size-md);font-weight:var(--font-weight-bold);border:1px solid transparent;border-radius:var(--radius-md);cursor:pointer;-webkit-user-select:none;user-select:none;transition:background-color var(--transition-fast),border-color var(--transition-fast),box-shadow var(--transition-fast),transform var(--transition-fast);-webkit-tap-highlight-color:transparent}.btn--block{display:flex;width:100%}.btn--primary{background:var(--color-brand);color:var(--color-text-on-brand);border-color:var(--color-brand)}.btn--primary:active,.btn--primary.is-pressed{background:var(--color-brand-strong);border-color:var(--color-brand-strong);transform:translateY(1px);box-shadow:none}@media (hover: hover){.btn--primary:hover{background:var(--color-brand-strong);border-color:var(--color-brand-strong)}}.btn--secondary{background:var(--color-surface);color:var(--color-brand);border-color:var(--color-brand)}.btn--secondary:active,.btn--secondary.is-pressed{background:var(--color-surface-muted);border-color:var(--color-brand-strong);color:var(--color-brand-strong);transform:translateY(1px)}@media (hover: hover){.btn--secondary:hover{background:var(--color-surface-muted)}}.btn--danger{background:var(--color-surface);color:var(--color-danger);border-color:var(--color-danger)}.btn--danger:active,.btn--danger.is-pressed{background:var(--color-danger-bg);border-color:var(--color-danger);color:var(--color-danger);transform:translateY(1px)}@media (hover: hover){.btn--danger:hover{background:var(--color-danger-bg)}}.btn:disabled,.btn.is-disabled{background:var(--color-disabled-bg);color:var(--color-disabled-text);border-color:var(--color-disabled-border);cursor:not-allowed;transform:none;box-shadow:none;pointer-events:none}.action-group{display:flex;flex-direction:column;gap:var(--space-12);margin-top:auto;padding-top:var(--space-32)}.link,a.link{color:var(--color-link);text-decoration:underline;text-underline-offset:2px;cursor:pointer;border-radius:var(--radius-sm)}.link:visited{color:var(--color-link-visited)}.link:active,.link.is-pressed{color:var(--color-brand-strong)}@media (hover: hover){.link:hover{color:var(--color-link-hover)}}.link--tappable{display:inline-flex;align-items:center;min-height:var(--tap-target-min)}.data-table{width:100%;border-collapse:collapse;font-size:var(--font-size-sm);background:var(--color-surface)}.data-table th,.data-table td{padding:var(--space-12) var(--space-12);text-align:left;vertical-align:middle;border-bottom:1px solid var(--color-border);word-break:break-word}.data-table thead th{background:var(--color-header-bg);color:var(--color-text-on-header);font-weight:var(--font-weight-bold);position:sticky;top:0;z-index:1}.data-table tbody tr:nth-child(odd){background:var(--color-row-odd)}.data-table tbody tr:nth-child(2n){background:var(--color-row-even)}.data-table tbody tr.is-clickable{cursor:pointer}@media (hover: hover){.data-table tbody tr.is-clickable:hover{background:var(--color-row-hover)}}.table-scroll{width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.data-table--wide{min-width:760px}.data-table--wide thead th{position:static}.field{display:flex;flex-direction:column;gap:var(--space-4);margin-bottom:var(--space-16)}.field__label{font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);color:var(--color-text)}.field__required{color:var(--color-danger);margin-left:var(--space-4);font-size:var(--font-size-sm)}.field__control,.input{width:100%;min-height:var(--tap-target-min);padding:var(--space-12) var(--space-12);font-size:var(--font-size-md);color:var(--color-text);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);transition:border-color var(--transition-fast),box-shadow var(--transition-fast);-webkit-appearance:none;-moz-appearance:none;appearance:none}.input::placeholder{color:var(--color-text-muted)}.input:focus{border-color:var(--color-focus-ring);outline:none;box-shadow:0 0 0 var(--focus-ring-width) var(--color-focus-ring)}.input:disabled{background:var(--color-disabled-bg);color:var(--color-disabled-text);border-color:var(--color-disabled-border);cursor:not-allowed}.input.is-error,.field.has-error .input{border-color:var(--color-danger)}.input.is-error:focus,.field.has-error .input:focus{box-shadow:0 0 0 var(--focus-ring-width) var(--color-danger)}.select{width:100%;min-height:var(--tap-target-min);padding:var(--space-12) var(--space-40) var(--space-12) var(--space-12);font-size:var(--font-size-md);color:var(--color-text);background-color:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);transition:border-color var(--transition-fast),box-shadow var(--transition-fast);-webkit-appearance:none;-moz-appearance:none;appearance:none;cursor:pointer;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath fill='none' stroke='%23566a70' stroke-width='1.5' d='M1 1.5 6 6.5 11 1.5'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right var(--space-12) center}.select:focus{border-color:var(--color-focus-ring);outline:none;box-shadow:0 0 0 var(--focus-ring-width) var(--color-focus-ring)}.select:disabled{background-color:var(--color-disabled-bg);color:var(--color-disabled-text);border-color:var(--color-disabled-border);cursor:not-allowed}.select.is-error,.field.has-error .select{border-color:var(--color-danger)}.select.is-error:focus,.field.has-error .select:focus{box-shadow:0 0 0 var(--focus-ring-width) var(--color-danger)}.select.is-placeholder{color:var(--color-text-muted)}.field__hint{font-size:var(--font-size-xs);color:var(--color-text-muted)}.checkbox-group{display:flex;flex-wrap:wrap;gap:var(--space-12)}.checkbox-item{display:inline-flex;align-items:center;gap:var(--space-8);min-height:var(--tap-target-min);cursor:pointer;-webkit-user-select:none;user-select:none}.checkbox-item__input{width:20px;height:20px;flex-shrink:0;accent-color:var(--color-brand);cursor:pointer}.checkbox-item.is-disabled{color:var(--color-disabled-text);cursor:not-allowed}.checkbox-item__input:disabled{cursor:not-allowed}.textarea{min-height:96px;resize:vertical}.field-error{display:block;font-size:var(--font-size-xs);line-height:var(--line-height-tight);color:var(--color-danger)}.field-error:before{content:"⚠";margin-right:var(--space-4)}.form-error{padding:var(--space-12);margin-bottom:var(--space-16);font-size:var(--font-size-sm);color:var(--color-danger);background:var(--color-danger-bg);border:1px solid var(--color-danger);border-radius:var(--radius-md)}.catchcopy{font-size:var(--font-size-2xl);line-height:var(--line-height-tight);font-weight:var(--font-weight-bold);color:var(--color-brand);text-align:center}.catchcopy__sub{margin-top:var(--space-8);margin-bottom:var(--space-20);font-size:var(--font-size-md);font-weight:var(--font-weight-normal);color:var(--color-text-muted);text-align:center}.section-title{font-size:var(--font-size-lg);font-weight:var(--font-weight-bold);color:var(--color-text);margin-bottom:var(--space-12)}.data-table--nowrap th,.data-table--nowrap td{white-space:nowrap}.data-table__th--sortable{padding:0}.data-table__sort-btn{display:flex;align-items:center;gap:var(--space-4);width:100%;min-height:var(--tap-target-min);padding:var(--space-12) var(--space-12);background:transparent;border:none;color:inherit;font:inherit;font-weight:var(--font-weight-bold);text-align:left;cursor:pointer;-webkit-tap-highlight-color:transparent}.data-table__sort-btn:active,.data-table__sort-btn.is-pressed{background:var(--color-row-hover)}@media (hover: hover){.data-table__sort-btn:hover{background:var(--color-row-hover)}}.data-table__sort-icon{font-size:var(--font-size-xs);line-height:1;opacity:.5}.data-table__sort-icon--active{opacity:1}.pagination{display:flex;align-items:center;justify-content:space-between;gap:var(--space-8);flex-wrap:wrap;margin-bottom:var(--space-12);font-size:var(--font-size-sm);color:var(--color-text)}.pagination__status{font-weight:var(--font-weight-medium);white-space:nowrap}.pagination__nav{display:inline-flex;align-items:center;gap:var(--space-4)}.pagination__btn{display:inline-flex;align-items:center;justify-content:center;min-width:var(--tap-target-min);min-height:var(--tap-target-min);padding:0 var(--space-8);font-size:var(--font-size-md);font-weight:var(--font-weight-bold);color:var(--color-brand);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);cursor:pointer;transition:background-color var(--transition-fast),border-color var(--transition-fast),transform var(--transition-fast);-webkit-tap-highlight-color:transparent}.pagination__btn:active,.pagination__btn.is-pressed{background:var(--color-surface-muted);transform:translateY(1px)}@media (hover: hover){.pagination__btn:hover:not(:disabled){background:var(--color-surface-muted)}}.pagination__btn:disabled,.pagination__btn.is-disabled{background:var(--color-disabled-bg);color:var(--color-disabled-text);border-color:var(--color-disabled-border);cursor:not-allowed;pointer-events:none}.page-container--admin{max-width:var(--content-max-width-admin);padding:var(--space-32) var(--space-24)}.page-container--admin-form{max-width:var(--content-max-width-admin-form);padding:var(--space-32) var(--space-24)}.page-container--center{justify-content:center;align-items:center}@media (max-width: 680px){.page-container--admin,.page-container--admin-form{padding:var(--space-24) var(--page-padding-x)}}.card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);padding:var(--space-24)}.card--auth{width:100%;max-width:400px}.badge{display:inline-flex;align-items:center;padding:var(--space-2) var(--space-8);font-size:var(--font-size-xs);font-weight:var(--font-weight-bold);line-height:var(--line-height-tight);border-radius:var(--radius-pill);border:1px solid transparent;white-space:nowrap}.badge--success{color:var(--color-success);background:var(--color-success-bg);border-color:var(--color-success)}.badge--muted{color:var(--color-disabled-text);background:var(--color-disabled-bg);border-color:var(--color-disabled-border)}.badge--admin{color:var(--color-brand);background:var(--color-header-bg);border-color:var(--color-brand-weak)}.section-subtitle{margin-bottom:var(--space-16);font-size:var(--font-size-sm);color:var(--color-text-muted)}.table-actions{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-12)}.data-table--admin{min-width:900px}.batch-panel{margin-bottom:var(--space-32)}.batch-panel__grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-16)}@media (max-width: 680px){.batch-panel__grid{grid-template-columns:1fr}}.batch-card{display:flex;flex-direction:column;gap:var(--space-8)}.batch-card__title{font-size:var(--font-size-md);font-weight:var(--font-weight-bold);color:var(--color-text)}.batch-card__desc{font-size:var(--font-size-sm);color:var(--color-text-muted)}.batch-card__button{align-self:flex-start;min-width:180px}.batch-result{margin-top:var(--space-8);padding:var(--space-12);font-size:var(--font-size-sm);border-radius:var(--radius-md);border:1px solid var(--color-border);background:var(--color-surface-muted);color:var(--color-text-muted)}.batch-result--running{color:var(--color-text);border-color:var(--color-border-strong);background:var(--color-surface)}.batch-result--success{color:var(--color-success);background:var(--color-success-bg);border-color:var(--color-success)}.batch-result--partial-failure{color:var(--color-warning);background:var(--color-warning-bg);border-color:var(--color-warning-border)}.admin-form__grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));column-gap:var(--space-24)}.field--span2{grid-column:1 / -1}@media (max-width: 680px){.admin-form__grid{grid-template-columns:1fr}.field--span2{grid-column:auto}}.field--admin-only{padding:var(--space-16);background:var(--color-surface-muted);border:1px solid var(--color-border-strong);border-radius:var(--radius-md)}.action-group--admin{flex-direction:row;flex-wrap:wrap;justify-content:flex-end;margin-top:var(--space-32);padding-top:0}.action-group--admin .btn{width:auto;min-width:140px}.legal-frame{width:100%;margin-bottom:var(--space-12);border:1px solid var(--color-border);border-radius:var(--radius-md);overflow:hidden}.legal-frame__iframe{display:block;width:100%;height:320px;border:none;background:var(--color-surface)}
