:root{--font-display:"Hiragino Mincho ProN","Yu Mincho",YuMincho,"Noto Serif JP",serif;--font-body:"Hiragino Kaku Gothic ProN","Hiragino Sans","Noto Sans JP","BIZ UDPGothic","Yu Gothic","Meiryo",system-ui,sans-serif;--radius-sm:10px;--radius-control:12px;--radius-card:18px;--radius-lg:24px;--shadow-card:0 1px 2px rgba(16,24,40,0.04),0 12px 32px -20px rgba(16,24,40,0.24);--shadow-soft:0 1px 2px rgba(16,24,40,0.04);--shadow-lift:0 2px 4px rgba(16,24,40,0.05),0 18px 40px -22px rgba(16,24,40,0.3);--color-surface:#ffffff;--color-bg:var(--color-paper);--color-border:var(--rule-hair);--color-danger:#9d2f28;--frame-width:42rem;--frame-pad-x:1.125rem;--frame-pad-y:1.75rem;--text-xs:0.75rem;--text-sm:0.875rem;--text-base:1rem;--text-lg:1.125rem;--text-xl:1.25rem;--text-2xl:1.5rem;--text-3xl:1.875rem;--text-4xl:2.5rem;--rule-hair:#d9d5cd;--color-paper:#f2efe9;--color-text:#2a2622;--color-muted:#6b645c;--color-brand:#b0432c;--color-brand-strong:#8d3422;--color-brand-soft:#f6e7e2;--state-live:#2f6b4a;--state-live-soft:#e5efe8;--state-shell:#8a6414;--state-shell-soft:#f5ecda;--state-none:#9d2f28;--state-none-soft:#f5e5e3;--state-na:#7c766e;--state-na-soft:#ebe8e2}*,:after,:before{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body,html{margin:0;background:var(--color-bg);color:var(--color-text);font-family:var(--font-body);font-size:18px;line-height:1.75;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}body{overflow-x:hidden;overflow-wrap:anywhere;word-break:normal}h1,h2,h3{font-family:var(--font-body);font-weight:700;letter-spacing:-.01em;line-height:1.45}h1{font-size:var(--text-2xl)}.tabular,table{font-feature-settings:"tnum";font-variant-numeric:tabular-nums}a,button,input,select,textarea{font:inherit;transition:background-color .18s ease,border-color .18s ease,opacity .18s ease}a.btn,a[role=button],button{min-height:44px}input,select,textarea{font-size:max(16px,1rem);max-width:100%;border-radius:var(--radius-control)}@media (max-width:600px){input,select,textarea{font-size:16px!important}}:focus-visible{outline:none;box-shadow:0 0 0 2px var(--color-surface),0 0 0 3px var(--color-brand);border-radius:2px}::selection{background:var(--color-brand-soft)}canvas,img,svg,video{max-width:100%;height:auto}pre,table{max-width:100%}pre{white-space:pre-wrap;overflow-wrap:anywhere;word-break:break-word}:where(div,section,article,main,aside,header,footer,nav,ul,ol,li,p,form,label,fieldset){min-width:0}:where(.wrap-row){flex-wrap:wrap}:where(.frame-nav,nav) a,:where(.frame-nav,nav) a>span:last-child{min-width:0}:where(button,a.btn){height:auto}:where(.frame-nav) a,:where(nav[aria-label]) a{text-align:center;line-height:1.3;padding-inline:2px}.app-header{position:-webkit-sticky;position:sticky;top:0;z-index:10;background:rgba(255,255,255,.82);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border-bottom:1px solid rgba(16,24,40,.06)}.app-header-inner{position:relative;max-width:var(--frame-width);margin:0 auto;padding:.75rem var(--frame-pad-x);display:flex;align-items:center;gap:.75rem}.app-brand{display:inline-flex;align-items:baseline;gap:.45em;text-decoration:none;min-height:0}.app-brand-ja{font-family:var(--font-display);font-size:1.35rem;font-weight:700;letter-spacing:.04em;color:var(--color-brand)}.app-brand-en{font-size:.9rem;font-weight:400;letter-spacing:.08em;color:var(--color-muted)}.app-header-right{margin-left:auto;display:flex;align-items:center;gap:.75rem}.app-greeting{font-size:1rem;color:var(--color-muted)}@media (max-width:480px){.app-greeting{display:none}}.app-menu-btn{padding:.5rem .75rem;border:none;background:transparent;border-radius:var(--radius-control);font-size:1.25rem;color:var(--color-text);cursor:pointer}.app-menu-btn:hover{background:rgba(0,0,0,.05)}.authbar-slot{min-height:28px}.loading-block{border-radius:var(--radius-card);background:linear-gradient(90deg,var(--color-paper) 25%,#ffffff 37%,var(--color-paper) 63%);background-size:400% 100%;animation:loading-sheen 1.4s ease-in-out infinite}@keyframes loading-sheen{0%{background-position:100% 50%}to{background-position:0 50%}}@media (prefers-reduced-motion:reduce){.loading-block{animation:none}}.frame{min-height:100vh;min-height:100dvh;background:var(--color-bg)}.frame,.frame-menu{display:flex;flex-direction:column}.frame-menu{position:absolute;right:var(--frame-pad-x);top:calc(100% + .5rem);z-index:20;max-height:calc(100dvh - 110px);min-width:240px;max-width:85vw;overflow:hidden;background:var(--color-surface);border-radius:var(--radius-card);border:1px solid var(--rule-hair);box-shadow:var(--shadow-card)}.frame-menu-list{min-height:0;flex:1 1;overflow-y:auto}.frame-menu a,.frame-menu button{display:block;width:100%;text-align:left;padding:.625rem 1rem;font-size:.875rem;color:var(--color-text);text-decoration:none;background:transparent;border:none;cursor:pointer}.frame-menu a:hover,.frame-menu button:hover{background:#f9fafb}.frame-menu-group{border-top:1px solid var(--color-border)}.frame-menu-group-label{padding:.6rem 1rem .2rem;font-size:.6875rem;font-weight:700;letter-spacing:.04em;color:var(--color-muted)}.frame-main{flex:1 1;width:100%;max-width:var(--frame-width);margin:0 auto;padding:var(--frame-pad-y) var(--frame-pad-x)}.frame-nav{position:-webkit-sticky;position:sticky;bottom:0;z-index:10;display:grid;grid-template-columns:repeat(5,1fr);background:rgba(255,255,255,.9);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border-top:1px solid var(--rule-hair);padding-bottom:env(safe-area-inset-bottom)}.frame-nav a{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:.5rem 0;font-size:.875rem;color:var(--color-muted);text-decoration:none}.frame-nav a[aria-current=page]{color:var(--color-brand)}.frame-nav .frame-nav-icon{display:flex;align-items:center;justify-content:center;height:2.25rem;width:3rem;font-size:1.5rem;border-radius:9999px}.frame-nav a[aria-current=page] .frame-nav-icon{background:var(--color-brand-soft)}.frame-nav .frame-nav-label{margin-top:.125rem}.card{background:var(--color-surface);border-radius:var(--radius-card);border:1px solid rgba(16,24,40,.06);box-shadow:var(--shadow-card);padding:1rem 1.125rem}.btn{display:inline-flex;align-items:center;justify-content:center;gap:.4rem;border-radius:1rem;padding:.75rem 1.5rem;font-size:1.125rem;font-weight:500;border:none;cursor:pointer}.btn:active{transform:translateY(1px)}.btn[disabled]{opacity:.5;cursor:default;transform:none}.btn-primary{background:var(--color-brand);color:#fff;box-shadow:var(--shadow-soft)}.btn-primary:hover:not([disabled]){background:var(--color-brand-strong)}.btn-secondary{background:var(--color-surface);color:var(--color-brand);border:1px solid var(--color-brand)}.btn-secondary:hover:not([disabled]){background:var(--color-brand-soft)}.btn-ghost{background:transparent;color:var(--color-text)}.btn-ghost:hover:not([disabled]){background:rgba(0,0,0,.05)}.btn-danger{background:var(--color-surface);color:var(--color-danger);border:1px solid var(--color-danger)}@media (hover:hover){a.card:hover{transform:translateY(-1px);box-shadow:var(--shadow-lift)}}@media (prefers-reduced-motion:reduce){a.card:hover{transform:none}}.tour-spot{transition:top .28s cubic-bezier(.22,1,.36,1),left .28s cubic-bezier(.22,1,.36,1),width .28s cubic-bezier(.22,1,.36,1),height .28s cubic-bezier(.22,1,.36,1)}.tour-bubble{animation:tour-pop .3s cubic-bezier(.22,1,.36,1);transition:top .28s cubic-bezier(.22,1,.36,1),left .28s cubic-bezier(.22,1,.36,1)}.tour-emoji{display:inline-block;animation:tour-nudge 2.4s ease-in-out infinite}@keyframes tour-pop{0%{opacity:0;transform:translateY(8px) scale(.96)}to{opacity:1;transform:none}}@keyframes tour-nudge{0%,70%,to{transform:none}80%{transform:translateY(-3px) rotate(-6deg)}90%{transform:translateY(-1px) rotate(3deg)}}@media (prefers-reduced-motion:reduce){.tour-bubble,.tour-spot{transition:none}.tour-bubble,.tour-emoji{animation:none}}.techo-partnership{--color-paper:#f3eff0;--color-brand:#8e3a5d;--color-brand-strong:#6f2c48;--color-brand-soft:#f3e5eb;background:var(--color-paper)}.techo-work{--color-paper:#eef0f4;--color-brand:#2f4f7f;--color-brand-strong:#243d63;--color-brand-soft:#e3e9f3;background:var(--color-paper)}.bonds-fc .fc{max-width:100%}.bonds-fc .fc-toolbar.fc-header-toolbar{flex-wrap:wrap;row-gap:6px}.bonds-fc .fc-event-title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.bonds-fc .fc-daygrid-event{overflow:hidden}@media (max-width:640px){.bonds-fc .fc{font-size:11px}.bonds-fc .fc .fc-toolbar.fc-header-toolbar{margin-bottom:4px;row-gap:3px}.bonds-fc .fc .fc-toolbar-title{font-size:14px;white-space:nowrap}.bonds-fc .fc .fc-button{padding:1px 6px;font-size:12px}.bonds-fc .fc .fc-toolbar.fc-header-toolbar .fc-toolbar-chunk:nth-child(2){order:-1;flex-basis:100%;text-align:center}.bonds-fc .fc .fc-col-header-cell-cushion{padding:2px 1px}.bonds-fc .fc .fc-daygrid-day-number{font-size:11px;padding:1px 3px}.bonds-fc .fc .fc-daygrid-event{font-size:10px;padding:0 1px}.bonds-fc .fc .fc-daygrid-more-link{font-size:10px}.bonds-fc .fc .fc-timegrid-slot{height:15px;line-height:1}.bonds-fc .fc .fc-timegrid-axis-cushion,.bonds-fc .fc .fc-timegrid-slot-label-cushion{font-size:10px;line-height:1.1}.bonds-fc .fc .fc-timegrid-event .fc-event-main{padding:0 1px;font-size:10px}}.techo-reserve{--color-paper:#eef4f1;--color-brand:#1f6e5a;--color-brand-strong:#175445;--color-brand-soft:#dff1ea;background:var(--color-paper)}@media (max-width:640px){.techo-table,.techo-table tbody,.techo-table td,.techo-table th,.techo-table thead,.techo-table tr{display:block;min-width:0!important;width:auto}.techo-table thead{display:none}.techo-table tr{border:1px solid var(--color-border);border-radius:var(--radius-control);padding:10px 12px;margin-bottom:8px;background:#fff}.techo-table td{display:flex;align-items:center;justify-content:space-between;gap:10px;border:0;padding:3px 0;text-align:right;flex-wrap:wrap;min-width:0}.techo-table td:before{content:attr(data-label);color:var(--color-muted);font-size:var(--text-sm);text-align:left;flex:1 1 auto;min-width:0;overflow-wrap:anywhere}.techo-table td:first-child{display:block;text-align:left;font-weight:600;padding-bottom:6px;margin-bottom:4px;border-bottom:1px solid var(--color-border)}.techo-table td:first-child:before{content:none}.techo-table td input,.techo-table td select{max-width:55%;text-align:right}}