@import url("https://fonts.googleapis.com/css2?family=Hanken+Grotesk:ital,wght@0,400;0,500;0,600;0,700;1,400&family=JetBrains+Mono:wght@400;500&family=Zen+Kaku+Gothic+New:wght@400;500;700&display=swap");:root{--sand-50:#fbf9f4;--sand-100:#f6f3ec;--sand-200:#efeae0;--sand-300:#e4ddd0;--sand-400:#cfc5b4;--sand-500:#ada292;--sand-600:#847a6b;--sand-700:#5e564a;--sand-800:#3a342b;--sand-900:#221e18;--clay-50:#faf1ec;--clay-100:#f2dcd1;--clay-200:#e6bda9;--clay-300:#dba184;--clay-400:#cb7956;--clay-500:#b85c38;--clay-600:#a04e2e;--clay-700:#823f25;--moss-100:#e5eadd;--moss-500:#5a7a52;--moss-600:#496440;--amber-100:#f4e7c8;--amber-500:#c0922f;--amber-600:#9e7722;--rust-100:#f2d8cf;--rust-500:#c0492f;--rust-600:#9e3a24;--slate-100:#dce3e8;--slate-500:#51708a;--slate-600:#3f5a72;--white:#fff;--black:#000;--surface-canvas:var(--sand-100);--surface-card:var(--white);--surface-sunken:var(--sand-200);--surface-subtle:var(--sand-50);--surface-inverse:var(--sand-900);--text-strong:var(--sand-900);--text-body:var(--sand-800);--text-secondary:var(--sand-600);--text-muted:var(--sand-500);--text-inverse:var(--sand-50);--text-accent:var(--clay-600);--text-link:var(--slate-600);--border-subtle:var(--sand-300);--border-default:var(--sand-400);--border-strong:var(--sand-600);--border-accent:var(--clay-500);--accent:var(--clay-500);--accent-hover:var(--clay-600);--accent-press:var(--clay-700);--accent-soft:var(--clay-50);--accent-soft-bd:var(--clay-100);--accent-contrast:var(--white);--focus-ring:color-mix(in oklch,var(--clay-500) 40%,transparent);--success:var(--moss-500);--success-soft:var(--moss-100);--warning:var(--amber-500);--warning-soft:var(--amber-100);--danger:var(--rust-500);--danger-hover:var(--rust-600);--danger-soft:var(--rust-100);--info:var(--slate-500);--info-soft:var(--slate-100);--font-sans:"Hanken Grotesk","Zen Kaku Gothic New",system-ui,-apple-system,"Segoe UI",sans-serif;--font-jp:"Zen Kaku Gothic New","Hanken Grotesk",system-ui,sans-serif;--font-mono:"JetBrains Mono",ui-monospace,"SF Mono",Menlo,monospace;--weight-regular:400;--weight-medium:500;--weight-semibold:600;--weight-bold:700;--text-display:3rem;--text-h1:2.125rem;--text-h2:1.625rem;--text-h3:1.25rem;--text-h4:1.0625rem;--text-base:1rem;--text-sm:0.875rem;--text-xs:0.75rem;--leading-tight:1.15;--leading-snug:1.3;--leading-normal:1.55;--leading-relaxed:1.75;--tracking-tight:-0.02em;--tracking-normal:0;--tracking-wide:0.04em;--tracking-caps:0.08em;--font-display:var(--weight-bold) var(--text-display)/var(--leading-tight) var(--font-sans);--font-heading:var(--font-sans);--font-body:var(--font-sans);--space-0:0;--space-1:0.25rem;--space-2:0.5rem;--space-3:0.75rem;--space-4:1rem;--space-5:1.25rem;--space-6:1.5rem;--space-8:2rem;--space-10:2.5rem;--space-12:3rem;--space-16:4rem;--space-20:5rem;--space-24:6rem;--radius-xs:4px;--radius-sm:6px;--radius-md:10px;--radius-lg:14px;--radius-xl:20px;--radius-2xl:28px;--radius-full:999px;--container-sm:640px;--container-md:880px;--container-lg:1120px;--container-xl:1320px;--topbar-h:60px;--sidebar-w:248px;--border-w:1px;--border-w-thick:1.5px;--shadow-xs:0 1px 1px rgba(34,30,24,.04);--shadow-sm:0 1px 2px rgba(34,30,24,.06),0 1px 1px rgba(34,30,24,.04);--shadow-md:0 2px 6px rgba(34,30,24,.07),0 1px 2px rgba(34,30,24,.05);--shadow-lg:0 8px 24px rgba(34,30,24,.1),0 2px 6px rgba(34,30,24,.06);--shadow-xl:0 16px 48px rgba(34,30,24,.14),0 4px 12px rgba(34,30,24,.08);--shadow-inset:inset 0 1px 2px rgba(34,30,24,.06);--ring:0 0 0 3px var(--focus-ring);--ease-out:cubic-bezier(0.22,0.61,0.36,1);--ease-in-out:cubic-bezier(0.45,0,0.2,1);--ease-standard:cubic-bezier(0.2,0,0,1);--dur-fast:120ms;--dur-base:180ms;--dur-slow:260ms;--dur-slower:380ms;--transition-colors:color var(--dur-base) var(--ease-out),background-color var(--dur-base) var(--ease-out),border-color var(--dur-base) var(--ease-out);--transition-transform:transform var(--dur-base) var(--ease-out);--transition-base:all var(--dur-base) var(--ease-out)}@media (prefers-reduced-motion:reduce){:root{--dur-fast:0ms;--dur-base:0ms;--dur-slow:0ms;--dur-slower:0ms}}*,:after,:before{box-sizing:border-box}*{margin:0}html{text-size-adjust:100%}body{font-family:var(--font-sans);font-size:var(--text-base);line-height:var(--leading-normal);font-weight:var(--weight-regular);color:var(--text-body);background-color:var(--surface-canvas);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility;font-feature-settings:"palt" 1}:lang(ja),[lang=ja]{line-height:var(--leading-relaxed)}h1,h2,h3,h4,h5,h6{font-family:var(--font-heading);color:var(--text-strong);line-height:var(--leading-tight);font-weight:var(--weight-bold);letter-spacing:var(--tracking-tight);text-wrap:balance}h1{font-size:var(--text-h1)}h2{font-size:var(--text-h2)}h3{font-size:var(--text-h3)}h3,h4{font-weight:var(--weight-semibold)}h4{font-size:var(--text-h4);letter-spacing:var(--tracking-normal)}p{text-wrap:pretty}a{color:var(--text-link);text-decoration:none;text-underline-offset:2px;transition:var(--transition-colors)}a:hover{text-decoration:underline}code,kbd,pre,samp{font-family:var(--font-mono);font-size:.92em}img,svg,video{display:block;max-width:100%}button,input,select,textarea{font:inherit;color:inherit}:focus-visible{outline:none;box-shadow:var(--ring);border-radius:var(--radius-sm)}::selection{background:var(--clay-100);color:var(--sand-900)}hr{border:none;border-top:var(--border-w) solid var(--border-subtle)}.ts-eyebrow{font-weight:var(--weight-semibold);letter-spacing:var(--tracking-caps);text-transform:uppercase;color:var(--text-muted)}.ts-eyebrow,.ts-mono{font-size:var(--text-xs)}.ts-mono{font-family:var(--font-mono);letter-spacing:0;color:var(--text-secondary);font-feature-settings:"tnum" 1}.ts-btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);height:40px;padding:0 var(--space-4);font-family:var(--font-sans);font-size:var(--text-sm);font-weight:var(--weight-semibold);line-height:1;white-space:nowrap;border:var(--border-w) solid transparent;border-radius:var(--radius-md);cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;transition:var(--transition-base)}.ts-btn:active{transform:translateY(.5px)}.ts-btn:disabled,.ts-btn[aria-disabled=true]{opacity:.45;cursor:not-allowed;transform:none}.ts-btn--sm{height:32px;padding:0 var(--space-3);font-size:var(--text-xs);border-radius:var(--radius-sm)}.ts-btn--lg{height:48px;padding:0 var(--space-6);font-size:var(--text-base)}.ts-btn--block{display:flex;width:100%}.ts-btn--icon{padding:0;width:40px}.ts-btn--icon.ts-btn--sm{width:32px}.ts-btn--icon.ts-btn--lg{width:48px}.ts-btn--primary{background:var(--accent);color:var(--accent-contrast);box-shadow:var(--shadow-xs)}.ts-btn--primary:hover:not(:disabled){background:var(--accent-hover)}.ts-btn--primary:active:not(:disabled){background:var(--accent-press)}.ts-btn--secondary{background:var(--surface-card);color:var(--text-strong);border-color:var(--border-default);box-shadow:var(--shadow-xs)}.ts-btn--secondary:hover:not(:disabled){background:var(--surface-subtle);border-color:var(--border-strong)}.ts-btn--secondary:active:not(:disabled){background:var(--sand-200)}.ts-btn--ghost{background:transparent;color:var(--text-body)}.ts-btn--ghost:hover:not(:disabled){background:var(--sand-200)}.ts-btn--ghost:active:not(:disabled){background:var(--sand-300)}.ts-btn--danger{background:var(--danger);color:var(--white)}.ts-btn--danger:hover:not(:disabled){background:var(--danger-hover)}.ts-iconbtn{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;padding:0;color:var(--text-secondary);background:transparent;border:var(--border-w) solid transparent;border-radius:var(--radius-md);cursor:pointer;transition:var(--transition-base)}.ts-iconbtn:hover:not(:disabled){background:var(--sand-200);color:var(--text-strong)}.ts-iconbtn:active:not(:disabled){background:var(--sand-300)}.ts-iconbtn:disabled{opacity:.4;cursor:not-allowed}.ts-iconbtn--sm{width:30px;height:30px;border-radius:var(--radius-sm)}.ts-iconbtn--solid{background:var(--surface-card);border-color:var(--border-default);box-shadow:var(--shadow-xs)}.ts-iconbtn--solid:hover:not(:disabled){background:var(--surface-subtle)}.ts-card{background:var(--surface-card);border:var(--border-w) solid var(--border-subtle);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);overflow:clip}.ts-card--flat{box-shadow:none}.ts-card--pad{padding:var(--space-6)}.ts-card--interactive{cursor:pointer;transition:var(--transition-base)}.ts-card--interactive:hover{box-shadow:var(--shadow-md);border-color:var(--border-default);transform:translateY(-2px)}.ts-badge{display:inline-flex;align-items:center;gap:var(--space-1);height:22px;padding:0 var(--space-2);font-size:var(--text-xs);font-weight:var(--weight-semibold);line-height:1;border-radius:var(--radius-sm);white-space:nowrap}.ts-badge--soft{background:var(--sand-200);color:var(--text-secondary)}.ts-badge--accent{background:var(--accent-soft);color:var(--text-accent)}.ts-badge--success{background:var(--success-soft);color:var(--moss-600)}.ts-badge--warning{background:var(--warning-soft);color:var(--amber-600)}.ts-badge--danger{background:var(--danger-soft);color:var(--danger-hover)}.ts-badge--info{background:var(--info-soft);color:var(--slate-600)}.ts-badge--solid{background:var(--accent);color:var(--white)}.ts-badge--dot:before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor}.ts-tag{display:inline-flex;align-items:center;gap:var(--space-2);height:28px;padding:0 var(--space-3);font-size:var(--text-sm);font-weight:var(--weight-medium);color:var(--text-body);background:var(--surface-card);border:var(--border-w) solid var(--border-subtle);border-radius:var(--radius-full)}.ts-tag--active{background:var(--accent-soft);border-color:var(--accent-soft-bd);color:var(--text-accent)}.ts-tag__x{display:inline-flex;cursor:pointer;color:var(--text-muted);border-radius:var(--radius-full)}.ts-tag__x:hover{color:var(--text-strong)}.ts-avatar{display:inline-flex;align-items:center;justify-content:center;width:40px;height:40px;flex:none;border-radius:var(--radius-full);overflow:clip;background:var(--clay-100);color:var(--clay-700);font-size:var(--text-sm);font-weight:var(--weight-semibold);-webkit-user-select:none;-moz-user-select:none;user-select:none}.ts-avatar img{width:100%;height:100%;object-fit:cover}.ts-avatar--xs{width:24px;height:24px;font-size:10px}.ts-avatar--sm{width:32px;height:32px;font-size:var(--text-xs)}.ts-avatar--lg{width:56px;height:56px;font-size:var(--text-h4)}.ts-avatar--xl{width:80px;height:80px;font-size:var(--text-h3)}.ts-avatar--square{border-radius:var(--radius-md)}.ts-field{display:flex;flex-direction:column;gap:var(--space-2)}.ts-field__label{font-size:var(--text-sm);font-weight:var(--weight-semibold);color:var(--text-strong)}.ts-field__label .ts-req{color:var(--danger);-webkit-margin-start:2px;margin-inline-start:2px}.ts-field__hint{font-size:var(--text-xs);color:var(--text-muted)}.ts-field__error{font-size:var(--text-xs);color:var(--danger-hover)}.ts-input,.ts-select,.ts-textarea{width:100%;font-family:var(--font-sans);font-size:var(--text-sm);color:var(--text-strong);background:var(--surface-card);border:var(--border-w) solid var(--border-default);border-radius:var(--radius-md);transition:var(--transition-base)}.ts-input{height:40px;padding:0 var(--space-3)}.ts-textarea{padding:var(--space-3);min-height:96px;resize:vertical;line-height:var(--leading-normal)}.ts-input::placeholder,.ts-textarea::placeholder{color:var(--text-muted)}.ts-input:hover,.ts-select:hover,.ts-textarea:hover{border-color:var(--border-strong)}.ts-input:focus,.ts-select:focus,.ts-textarea:focus{outline:none;border-color:var(--accent);box-shadow:var(--ring)}.ts-input:disabled,.ts-select:disabled,.ts-textarea:disabled{background:var(--surface-sunken);color:var(--text-muted);cursor:not-allowed}.ts-input--invalid,.ts-textarea--invalid{border-color:var(--danger)}.ts-input--invalid:focus{box-shadow:0 0 0 3px var(--danger-soft)}.ts-input-wrap{position:relative;display:flex;align-items:center}.ts-input-wrap .ts-input{-webkit-padding-start:38px;padding-inline-start:38px}.ts-input-wrap__icon{position:absolute;inset-inline-start:12px;color:var(--text-muted);pointer-events:none;display:inline-flex}.ts-select-wrap{position:relative;display:block}.ts-select{height:40px;padding:0 36px 0 var(--space-3);-webkit-appearance:none;-moz-appearance:none;appearance:none;cursor:pointer}.ts-select-wrap__chev{position:absolute;inset-inline-end:12px;top:50%;transform:translateY(-50%);color:var(--text-muted);pointer-events:none}.ts-checkbox{display:inline-flex;align-items:center;gap:var(--space-2);cursor:pointer;font-size:var(--text-sm);color:var(--text-body);-webkit-user-select:none;-moz-user-select:none;user-select:none}.ts-checkbox input{position:absolute;opacity:0;width:0;height:0}.ts-checkbox__box{width:18px;height:18px;flex:none;display:inline-flex;align-items:center;justify-content:center;border:var(--border-w-thick) solid var(--border-strong);border-radius:var(--radius-xs);background:var(--surface-card);color:var(--white);transition:var(--transition-base)}.ts-checkbox__box svg{opacity:0;transform:scale(.6);transition:var(--transition-base)}.ts-checkbox input:checked+.ts-checkbox__box{background:var(--accent);border-color:var(--accent)}.ts-checkbox input:checked+.ts-checkbox__box svg{opacity:1;transform:scale(1)}.ts-checkbox input:focus-visible+.ts-checkbox__box{box-shadow:var(--ring)}.ts-checkbox--radio .ts-checkbox__box{border-radius:var(--radius-full)}.ts-checkbox input:disabled~*{opacity:.45}.ts-switch{display:inline-flex;align-items:center;gap:var(--space-3);cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none}.ts-switch input{position:absolute;opacity:0;width:0;height:0}.ts-switch__track{width:40px;height:24px;flex:none;border-radius:var(--radius-full);background:var(--sand-400);padding:2px;transition:var(--transition-base)}.ts-switch__thumb{width:20px;height:20px;border-radius:var(--radius-full);background:var(--white);box-shadow:var(--shadow-sm);transition:var(--transition-transform)}.ts-switch input:checked+.ts-switch__track{background:var(--accent)}.ts-switch input:checked+.ts-switch__track .ts-switch__thumb{transform:translateX(16px)}.ts-switch input:focus-visible+.ts-switch__track{box-shadow:var(--ring)}.ts-switch input:disabled+.ts-switch__track{opacity:.45}.ts-tabs{display:flex;gap:var(--space-1);border-bottom:var(--border-w) solid var(--border-subtle)}.ts-tab{position:relative;padding:var(--space-3) var(--space-3);margin-bottom:-1px;font-size:var(--text-sm);font-weight:var(--weight-medium);color:var(--text-secondary);background:none;border:none;cursor:pointer;transition:var(--transition-colors)}.ts-tab:hover{color:var(--text-strong)}.ts-tab--active{color:var(--text-accent);font-weight:var(--weight-semibold)}.ts-tab--active:after{content:"";position:absolute;inset-inline:0;bottom:0;height:2px;background:var(--accent);border-radius:2px 2px 0 0}.ts-tooltip-wrap{position:relative;display:inline-flex}.ts-tooltip{z-index:50;bottom:calc(100% + 8px);background:var(--surface-inverse);color:var(--text-inverse);font-size:var(--text-xs);font-weight:var(--weight-medium);line-height:1.3;padding:var(--space-2) var(--space-3);border-radius:var(--radius-sm);white-space:nowrap;box-shadow:var(--shadow-lg);opacity:0;pointer-events:none;transition:opacity var(--dur-fast) var(--ease-out)}.ts-tooltip,.ts-tooltip:after{position:absolute;left:50%;transform:translateX(-50%)}.ts-tooltip:after{content:"";top:100%;border:5px solid transparent;border-top:5px solid var(--surface-inverse)}.ts-tooltip-wrap:focus-within .ts-tooltip,.ts-tooltip-wrap:hover .ts-tooltip{opacity:1}.ts-dialog__overlay{position:fixed;inset:0;z-index:100;display:flex;align-items:center;justify-content:center;padding:var(--space-6);background:rgba(34,30,24,.38);-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);animation:ts-fade var(--dur-base) var(--ease-out)}.ts-dialog{width:100%;max-width:480px;background:var(--surface-card);border-radius:var(--radius-xl);box-shadow:var(--shadow-xl);animation:ts-pop var(--dur-slow) var(--ease-out)}.ts-dialog__head{padding:var(--space-6) var(--space-6) 0;display:flex;align-items:flex-start;justify-content:space-between;gap:var(--space-4)}.ts-dialog__title{font-size:var(--text-h3);font-weight:var(--weight-bold);color:var(--text-strong)}.ts-dialog__body{padding:var(--space-3) var(--space-6) 0;color:var(--text-secondary);font-size:var(--text-sm);line-height:var(--leading-normal)}.ts-dialog__foot{padding:var(--space-6);justify-content:flex-end}.ts-dialog__foot,.ts-toast{display:flex;gap:var(--space-3)}.ts-toast{align-items:flex-start;min-width:280px;max-width:400px;padding:var(--space-3) var(--space-4);background:var(--surface-inverse);color:var(--text-inverse);border-radius:var(--radius-md);box-shadow:var(--shadow-lg);animation:ts-slide-in var(--dur-slow) var(--ease-out)}.ts-toast__icon{flex:none;margin-top:1px;display:inline-flex}.ts-toast__icon--success{color:var(--moss-500)}.ts-toast__icon--danger{color:var(--rust-500)}.ts-toast__title{font-size:var(--text-sm);font-weight:var(--weight-semibold)}.ts-toast__msg{font-size:var(--text-xs);color:color-mix(in oklch,var(--text-inverse) 75%,transparent);margin-top:1px}@keyframes ts-fade{0%{opacity:0}}@keyframes ts-pop{0%{opacity:0;transform:translateY(8px) scale(.98)}}@keyframes ts-slide-in{0%{opacity:0;transform:translateY(10px)}}