:root{--color-bg: #f5f5f7;--color-surface: #ffffff;--color-surface-alt: #fafafa;--color-surface-hover: #f4f5f7;--color-border: #e4e6ea;--color-border-strong: #d1d5db;--color-text: #111827;--color-text-muted: #6b7280;--color-text-faint: #9ca3af;--color-primary: #2563eb;--color-primary-hover: #1d4ed8;--color-primary-bg: #eff6ff;--color-primary-ring: rgba(37, 99, 235, .15);--color-status-default: #dc2626;--color-status-absent: #d97706;--color-status-contacted: #2563eb;--color-status-quoting: #7c3aed;--color-status-closed: #059669;--color-status-rejected: #6b7280;--font-family: "Inter", "Noto Sans JP", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--font-family-mono: ui-monospace, SFMono-Regular, Menlo, monospace;--font-size-xs: .6875rem;--font-size-sm: .8125rem;--font-size-base: .875rem;--font-size-md: 1rem;--font-size-lg: 1.125rem;--font-size-xl: 1.375rem;--font-size-2xl: 1.75rem;--spacing-xs: .25rem;--spacing-sm: .5rem;--spacing-md: .75rem;--spacing-lg: 1rem;--spacing-xl: 1.5rem;--bp-mobile: 640px;--bp-tablet: 1024px;--transition-fast: .12s ease;--transition-base: .18s ease;--shadow-sm: 0 1px 2px rgba(15, 23, 42, .04);--shadow-md: 0 2px 8px rgba(15, 23, 42, .06);--shadow-lg: 0 12px 32px rgba(15, 23, 42, .12);--radius-sm: 4px;--radius-md: 6px;--radius-lg: 8px}*,*:before,*:after{box-sizing:border-box}html,body{margin:0;padding:0;min-height:100%}body{font-family:var(--font-family);font-size:var(--font-size-base);color:var(--color-text);background:var(--color-bg);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;line-height:1.5}a{color:var(--color-primary);text-decoration:none;transition:color var(--transition-fast)}a:hover{color:var(--color-primary-hover);text-decoration:underline}button{font-family:inherit;cursor:pointer;border:none;background:none;color:inherit}button:disabled{cursor:not-allowed;opacity:.5}input,select,textarea{font-family:inherit;font-size:var(--font-size-base);color:var(--color-text)}table{border-collapse:collapse;width:100%}h1,h2,h3,h4{margin:0;font-weight:600;color:var(--color-text)}.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}.hidden,[hidden]{display:none!important}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:#d1d5db;border-radius:6px;border:2px solid var(--color-bg);background-clip:padding-box}::-webkit-scrollbar-thumb:hover{background:#9ca3af;background-clip:padding-box}.card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:var(--spacing-md)}.stat-card{cursor:pointer;display:flex;flex-direction:column;gap:.15rem;padding:.85rem var(--spacing-lg);min-width:0;-webkit-user-select:none;user-select:none;transition:border-color var(--transition-fast),background var(--transition-fast)}.stat-card:hover{border-color:var(--color-border-strong);background:var(--color-surface-alt)}.stat-card__label{color:var(--color-text-muted);font-size:var(--font-size-xs);font-weight:500;letter-spacing:.02em}.stat-card__value{font-size:var(--font-size-2xl);font-weight:700;color:var(--color-text);font-feature-settings:"tnum";letter-spacing:-.02em;line-height:1.2}.stat-card--active{border-color:var(--color-primary);background:var(--color-primary-bg);box-shadow:0 0 0 3px var(--color-primary-ring)}.stat-card--active .stat-card__value,.stat-card--active .stat-card__label{color:var(--color-primary)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:.35rem;padding:.4rem .85rem;border-radius:var(--radius-md);font-size:var(--font-size-sm);font-weight:500;transition:background var(--transition-fast),border-color var(--transition-fast),color var(--transition-fast);white-space:nowrap;border:1px solid transparent;line-height:1.4}.btn--primary{background:var(--color-primary);color:#fff}.btn--primary:hover:not(:disabled){background:var(--color-primary-hover)}.btn--primary:focus-visible{outline:3px solid var(--color-primary-ring);outline-offset:1px}.btn--ghost{background:var(--color-surface);border-color:var(--color-border);color:var(--color-text)}.btn--ghost:hover:not(:disabled){background:var(--color-surface-alt);border-color:var(--color-border-strong)}.btn--danger{background:var(--color-surface);border-color:#fca5a5;color:#dc2626}.btn--danger:hover:not(:disabled){background:#fef2f2}.btn--sm{padding:.25rem .6rem;font-size:var(--font-size-xs)}.form-field{display:flex;flex-direction:column;gap:.3rem}.form-field__label{font-size:var(--font-size-xs);color:var(--color-text-muted);font-weight:500;letter-spacing:.02em}.form-input,.form-select,.form-textarea{width:100%;padding:.45rem .7rem;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);color:var(--color-text);font-size:var(--font-size-sm);transition:border-color var(--transition-fast),box-shadow var(--transition-fast)}.form-input:hover,.form-select:hover,.form-textarea:hover{border-color:var(--color-border-strong)}.form-input:focus,.form-select:focus,.form-textarea:focus{outline:none;border-color:var(--color-primary);box-shadow:0 0 0 3px var(--color-primary-ring)}.form-textarea{resize:vertical;min-height:5.5rem;font-family:inherit;line-height:1.5}.form-select{appearance:none;-webkit-appearance:none;background-image:url("data:image/svg+xml;charset=UTF-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='10' viewBox='0 0 24 24' fill='none' stroke='%236b7280' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'%3E%3C/polyline%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right .55rem center;padding-right:1.75rem;cursor:pointer}.badge{display:inline-flex;align-items:center;gap:.3rem;padding:.1rem .5rem;border-radius:4px;font-size:var(--font-size-xs);font-weight:500;background:#f3f4f6;color:var(--color-text);white-space:nowrap;line-height:1.6}.badge__dot{width:6px;height:6px;border-radius:50%;background:currentColor;flex-shrink:0}.badge--genre{background:#f1f5f9;color:#475569;border:0;font-weight:500}.salon-table{width:100%;border-collapse:separate;border-spacing:0;font-size:var(--font-size-sm)}.salon-table thead th{position:sticky;top:0;z-index:2;padding:.5rem .75rem;background:#f9fafb;color:var(--color-text-muted);font-weight:600;font-size:var(--font-size-xs);letter-spacing:.02em;text-align:left;border-bottom:1px solid var(--color-border);white-space:nowrap;text-transform:none}.salon-table tbody td{padding:.5rem .75rem;border-bottom:1px solid #f1f3f5;vertical-align:middle;color:var(--color-text)}.salon-table tbody tr{cursor:pointer;transition:background var(--transition-fast)}.salon-table tbody tr:hover{background:var(--color-surface-alt)}.salon-table tbody tr:last-child td{border-bottom:none}.salon-table__name{font-weight:600;color:var(--color-text)}.salon-table__address{color:var(--color-text-muted);max-width:22rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.salon-table__tel{color:var(--color-primary);font-feature-settings:"tnum"}.salon-table__tel:hover{text-decoration:underline}.salon-table__genre-cell{display:flex;flex-wrap:wrap;gap:.2rem;max-width:12rem}.chart-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:var(--spacing-md) var(--spacing-lg);display:flex;flex-direction:column;gap:var(--spacing-sm)}.chart-header{display:flex;align-items:baseline;justify-content:space-between;gap:var(--spacing-md)}.chart-title{font-size:var(--font-size-sm);font-weight:600;color:var(--color-text);letter-spacing:-.01em}.chart-meta{color:var(--color-text-muted);font-size:var(--font-size-xs);font-feature-settings:"tnum"}.chart-body{width:100%;overflow:hidden}.chart-body--loading,.chart-body--empty{padding:var(--spacing-xl) 0;text-align:center;color:var(--color-text-muted);font-size:var(--font-size-sm)}.chart-svg{display:block;width:100%;font-family:var(--font-family)}.chart-baseline{stroke:var(--color-border);stroke-width:1}.chart-bar{fill:var(--color-primary);transition:fill var(--transition-fast)}.chart-bar-group:hover .chart-bar{fill:var(--color-primary-hover)}.chart-bar-value{font-size:11px;font-weight:600;fill:var(--color-text);font-feature-settings:"tnum"}.chart-bar-value--inside{fill:#fff}.chart-label{font-size:10px;fill:var(--color-text-muted)}.pagination{display:flex;align-items:center;justify-content:space-between;padding:.55rem var(--spacing-md);gap:var(--spacing-md);border-top:1px solid var(--color-border);background:var(--color-surface-alt)}.pagination__info{color:var(--color-text-muted);font-size:var(--font-size-xs)}.pagination__controls{display:flex;gap:var(--spacing-sm)}.modal{position:fixed;inset:0;display:flex;align-items:center;justify-content:center;padding:var(--spacing-md);background:#0f172a66;z-index:100;animation:fadeIn var(--transition-base)}.modal__panel{width:min(640px,100%);max-height:90vh;overflow:auto;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);animation:slideUp var(--transition-base)}.modal__header{display:flex;justify-content:space-between;align-items:flex-start;padding:var(--spacing-lg);border-bottom:1px solid var(--color-border)}.modal__title{font-size:var(--font-size-lg);font-weight:600;color:var(--color-text);letter-spacing:-.01em}.modal__close{color:var(--color-text-muted);font-size:1.25rem;padding:0 .35rem;line-height:1;border-radius:var(--radius-sm)}.modal__close:hover{color:var(--color-text);background:var(--color-surface-alt)}.modal__section{padding:var(--spacing-lg);border-bottom:1px solid var(--color-border)}.modal__section:last-child{border-bottom:none}.modal__section-title{color:var(--color-text-muted);font-size:var(--font-size-xs);letter-spacing:.05em;font-weight:600;text-transform:uppercase;margin-bottom:var(--spacing-md)}.history-list{display:flex;flex-direction:column;gap:var(--spacing-sm)}.history-item{padding:var(--spacing-sm) var(--spacing-md);background:var(--color-surface-alt);border-radius:var(--radius-md);border:1px solid var(--color-border)}.history-item__meta{display:flex;gap:var(--spacing-sm);flex-wrap:wrap;align-items:center;color:var(--color-text-muted);font-size:var(--font-size-xs);margin-bottom:.3rem}.history-item__memo{color:var(--color-text);font-size:var(--font-size-sm);white-space:pre-wrap;word-break:break-word}.salon-info{display:flex;flex-direction:column;gap:var(--spacing-sm)}.salon-info__name{font-size:var(--font-size-xl);font-weight:600;color:var(--color-text);letter-spacing:-.01em}.salon-info__genres{display:flex;gap:.25rem;flex-wrap:wrap}.salon-info__meta{display:grid;grid-template-columns:auto 1fr;gap:.35rem var(--spacing-md);color:var(--color-text-muted);font-size:var(--font-size-sm)}.salon-info__meta dt{font-weight:500}.salon-info__meta dd{margin:0;color:var(--color-text)}.salon-info__tel-link{display:inline-flex;align-items:center;gap:.35rem;color:var(--color-primary);font-weight:500;font-feature-settings:"tnum"}.salon-info__tel-link:hover{text-decoration:underline}.error-message{padding:var(--spacing-sm) var(--spacing-md);background:#fef2f2;border:1px solid #fecaca;color:#b91c1c;border-radius:var(--radius-md);font-size:var(--font-size-sm)}.empty-state,.loading{padding:var(--spacing-xl);text-align:center;color:var(--color-text-muted);font-size:var(--font-size-sm)}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes slideUp{0%{transform:translateY(6px);opacity:0}to{transform:translateY(0);opacity:1}}.failure-banner{display:flex;align-items:center;gap:var(--spacing-sm);padding:var(--spacing-sm) var(--spacing-md);margin-bottom:var(--spacing-md);border:1px solid var(--color-danger, #dc2626);border-radius:var(--radius-md, 6px);background:color-mix(in srgb,var(--color-danger, #dc2626) 8%,transparent);color:var(--color-danger, #dc2626);font-size:.875rem}.failure-banner__spacer{flex:1}.salon-table tr[data-saving="1"]{opacity:.55}.catalog-panel{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:var(--spacing-xl);margin-bottom:var(--spacing-md)}.catalog-panel__empty{text-align:center;padding:var(--spacing-xl) var(--spacing-md)}.catalog-panel__title{font-size:var(--font-size-lg);font-weight:700;color:var(--color-text);margin:0 0 var(--spacing-sm)}.catalog-panel__text{color:var(--color-text-muted);font-size:var(--font-size-sm);margin:0 0 var(--spacing-lg)}.catalog-panel__failed{margin:var(--spacing-md) 0 0;color:var(--color-status-default);font-size:var(--font-size-sm)}.catalog-panel__done{color:var(--color-status-closed);font-size:var(--font-size-sm);font-weight:500}.catalog-form{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:var(--spacing-sm)}.catalog-form__file{font-size:var(--font-size-sm);color:var(--color-text-muted)}.catalog-form__error{flex-basis:100%;margin:var(--spacing-xs) 0 0;color:var(--color-status-default);font-size:var(--font-size-sm)}.catalog-progress__head{display:flex;justify-content:space-between;align-items:baseline;gap:var(--spacing-sm);margin-bottom:var(--spacing-sm)}.catalog-progress__label{font-weight:600;font-size:var(--font-size-base)}.catalog-progress__count{color:var(--color-text-muted);font-size:var(--font-size-sm);font-feature-settings:"tnum"}.catalog-progress__bar{height:6px;border-radius:999px;background:var(--color-surface-hover);overflow:hidden;margin-bottom:var(--spacing-sm)}.catalog-progress__fill{height:100%;background:var(--color-primary);transition:width var(--transition-base)}.app-header__catalog{margin-right:var(--spacing-lg)}.team-invite__result{margin-top:var(--spacing-lg);padding:var(--spacing-md);border:1px solid var(--color-primary);border-radius:var(--radius-md);background:var(--color-primary-bg)}.team-invite__link{display:flex;gap:var(--spacing-sm);align-items:center}.team-invite__link .form-input{flex:1;font-family:var(--font-family-mono);font-size:var(--font-size-xs)}.team-history__title{margin:var(--spacing-xl) 0 var(--spacing-sm);font-size:var(--font-size-base);font-weight:600}.app-shell{display:flex;flex-direction:column;min-height:100vh}.app-header{display:flex;align-items:center;justify-content:space-between;padding:.65rem var(--spacing-lg);background:var(--color-surface);border-bottom:1px solid var(--color-border);position:sticky;top:0;z-index:20}.app-header__brand{display:flex;align-items:center;gap:.55rem;font-size:var(--font-size-md);font-weight:600;color:var(--color-text);letter-spacing:-.01em}.app-header__brand:before{content:"";display:inline-block;width:3px;height:18px;background:var(--color-primary);border-radius:2px}.app-header__user{display:flex;align-items:center;gap:var(--spacing-md);color:var(--color-text-muted);font-size:var(--font-size-sm)}.app-header__user-name{color:var(--color-text);font-weight:500}.app-main{flex:1;padding:var(--spacing-lg);display:flex;flex-direction:column;gap:var(--spacing-lg);max-width:1600px;width:100%;margin:0 auto}.stats-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:var(--spacing-md)}.filter-bar{display:grid;grid-template-columns:repeat(6,minmax(0,1fr)) auto;gap:var(--spacing-md);padding:var(--spacing-md);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);align-items:end}.table-container{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);overflow:hidden}.table-scroll{max-height:calc(100vh - 17rem);overflow:auto}@media(max-width:1024px){.stats-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.filter-bar{grid-template-columns:repeat(2,minmax(0,1fr))}.salon-table__address{max-width:12rem}}@media(max-width:640px){.app-header{padding:.5rem var(--spacing-md);flex-wrap:wrap;gap:var(--spacing-sm)}.app-main{padding:var(--spacing-md);gap:var(--spacing-md)}.stats-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.stat-card--closed{grid-column:span 2}.stat-card__value{font-size:var(--font-size-xl)}.filter-bar{grid-template-columns:1fr;padding:var(--spacing-sm)}.salon-table thead{display:none}.salon-table,.salon-table tbody,.salon-table tr,.salon-table td{display:block;width:100%}.salon-table tbody tr{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);padding:var(--spacing-md);margin-bottom:var(--spacing-sm)}.salon-table tbody td{border:none;padding:.25rem 0}.salon-table tbody td:before{content:attr(data-label) " ";color:var(--color-text-muted);font-size:var(--font-size-xs);margin-right:.5rem;font-weight:500}.salon-table__address{max-width:none;white-space:normal}.table-scroll{max-height:none}}.login-page{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:var(--spacing-md);background:var(--color-bg)}.login-card{width:min(380px,100%);padding:var(--spacing-xl);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-md);display:flex;flex-direction:column;gap:var(--spacing-lg)}.login-card__brand{display:flex;align-items:center;gap:.55rem;font-size:var(--font-size-lg);font-weight:600;color:var(--color-text);letter-spacing:-.01em;margin:0}.login-card__brand:before{content:"";display:inline-block;width:3px;height:20px;background:var(--color-primary);border-radius:2px}.login-card__subtitle{color:var(--color-text-muted);font-size:var(--font-size-sm);margin:calc(-1 * var(--spacing-sm)) 0 0 0}.login-form{display:flex;flex-direction:column;gap:var(--spacing-md)}.console-boot{max-width:32rem;margin:4rem auto;padding:0 var(--spacing-lg);text-align:center}.console-boot .failure-banner{justify-content:center}.tenant-form{display:grid;grid-template-columns:repeat(auto-fit,minmax(14rem,1fr));gap:var(--spacing-md);align-items:end}.form-field--wide{grid-column:1 / -1}.tenant-form__actions{grid-column:1 / -1;display:flex;gap:var(--spacing-sm);align-items:center;flex-wrap:wrap}.issue-dialog{background:var(--color-surface);border:1px solid var(--color-primary);border-radius:var(--radius-lg);padding:var(--spacing-xl);margin-bottom:var(--spacing-md)}.issue-dialog__log{margin-top:var(--spacing-lg);font-size:var(--font-size-sm);color:var(--color-text-muted)}.issue-dialog__log pre{max-height:20rem;overflow:auto;background:var(--color-surface-alt);border:1px solid var(--color-border);border-radius:var(--radius-md);padding:var(--spacing-md);font-family:var(--font-family-mono);font-size:var(--font-size-xs);white-space:pre-wrap}.tenant-row__actions{display:flex;gap:var(--spacing-xs)}.btn--danger{background:var(--color-status-default);border-color:var(--color-status-default);color:#fff}.btn--danger:hover{filter:brightness(.92)}.ledger-note{color:var(--color-text-faint);font-size:var(--font-size-xs)}
