:root{--shell-padding: 18px;--card-radius: 28px;--topbar-padding-top: 18px;--topbar-padding-side: 20px;--topbar-padding-bottom: 14px;--zoom-offset-right: 18px;--zoom-offset-bottom: 18px;--crimson-50: #fff1f3;--crimson-100: #fcd9dc;--crimson-200: #f3aab1;--crimson-300: #e2737e;--crimson-400: #b93745;--crimson-500: #991c27;--crimson-600: #7e1620;--crimson-700: #66101a;--crimson-800: #4f0c14;--crimson-900: #310810;--crimson-950: #1d040a;--crimson-ritsu: #990000;--ink-950: #050a14;--ink-900: #0b1220;--ink-800: #131a28;--ink-700: #1f2937;--ink-600: #334155;--ink-500: #4b5b6e;--ink-400: #6b7a8f;--ink-300: #9aa6b8;--ink-200: #c7cfdb;--ink-150: #dde2eb;--ink-100: #e9ecf2;--ink-50: #f3f5f9;--paper: #fafbfd;--white: #ffffff;--color-fg: var(--ink-900);--color-fg-muted: var(--ink-400);--color-fg-faint: var(--ink-300);--color-fg-on-red: #ffffff;--color-bg: var(--paper);--color-bg-elev-1: #ffffff;--color-bg-elev-2: rgba(255, 255, 255, .96);--color-bg-tint: var(--ink-50);--color-border: rgba(11, 18, 32, .1);--color-border-strong: rgba(11, 18, 32, .18);--color-border-faint: rgba(11, 18, 32, .06);--color-success: #0fa968;--color-warning: #d4861a;--color-danger: var(--crimson-500);--ring-green: rgb(120, 255, 60);--ring-red: rgb(255, 58, 96);--ring-blue: rgb(41, 196, 255);--ring-yellow: rgb(255, 225, 40);--pin: #ff5a3c;--accent: var(--crimson-500);--accent-dark: var(--crimson-700);--accent-soft: rgba(153, 28, 39, .06);--accent-soft-mid: rgba(153, 28, 39, .08);--accent-soft-strong: rgba(153, 28, 39, .1);--accent-border: rgba(153, 28, 39, .14);--accent-glow: rgba(153, 28, 39, .22);--accent-shadow: rgba(153, 28, 39, .26);--accent-shadow-strong: rgba(153, 28, 39, .3);--accent-soft-gradient-start: rgba(153, 28, 39, .14);--accent-soft-gradient-end: rgba(102, 16, 26, .18);--accent-page-radial: rgba(153, 28, 39, .045);--accent-page-start: #f6f7fa;--accent-page-end: #eef0f5;--accent-surface-start: #eef0f5;--accent-surface-end: #fafbfd;--accent-button-surface-end: #f1f3f7;--font-display: "Inter Tight", "Noto Sans JP", "Hiragino Sans", "Yu Gothic", system-ui, sans-serif;--font-sans: "Inter", "Noto Sans JP", "Hiragino Sans", "Yu Gothic", system-ui, sans-serif;--font-jp: "Noto Sans JP", "Hiragino Sans", "Yu Gothic", system-ui, sans-serif;--font-mono: "SFMono-Regular", "Menlo", "Consolas", monospace;--ls-tight: -.022em;--ls-snug: -.012em;--ls-normal: 0;--ls-wide: .04em;--ls-wider: .08em;--ls-eyebrow: .14em;--r-xs: 6px;--r-sm: 10px;--r-md: 14px;--r-lg: 20px;--r-xl: 28px;--r-pill: 999px;--shadow-1: 0 1px 2px rgba(11, 18, 32, .06), 0 1px 1px rgba(11, 18, 32, .04);--shadow-2: 0 4px 10px rgba(11, 18, 32, .06), 0 1px 2px rgba(11, 18, 32, .04);--shadow-3: 0 14px 28px rgba(11, 18, 32, .08), 0 4px 8px rgba(11, 18, 32, .04);--shadow-4: 0 30px 60px rgba(11, 18, 32, .12), 0 8px 16px rgba(11, 18, 32, .06);--shadow-crimson: 0 14px 28px rgba(138, 0, 25, .22), 0 4px 8px rgba(138, 0, 25, .14);--hairline-inset: inset 0 0 0 1px var(--color-border);--ease-out: cubic-bezier(.16, 1, .3, 1);--ease-in-out: cubic-bezier(.65, 0, .35, 1);--ease-spring: cubic-bezier(.34, 1.56, .64, 1);--dur-fast: .12s;--dur-med: .22s;--dur-slow: .38s;--glass-bg: rgba(250, 251, 253, .8);--glass-blur: blur(18px) saturate(140%);--glass-border: rgba(11, 18, 32, .08);--map-card-bg: linear-gradient( 180deg, rgba(255, 255, 255, .92), rgba(255, 255, 255, .76) ), linear-gradient(135deg, #eef0f5 0%, #fafbfd 100%);font-family:var(--font-sans);color:var(--ink-900);background:radial-gradient(120% 60% at 50% -10%,var(--accent-page-radial),transparent 60%),radial-gradient(80% 40% at 100% 110%,rgba(11,18,32,.04),transparent 70%),linear-gradient(180deg,var(--accent-page-start) 0%,var(--accent-page-end) 100%);line-height:1.5;font-weight:500;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}*{box-sizing:border-box}html,body{margin:0;min-height:100%}body{min-height:100vh;min-height:100dvh;overscroll-behavior:none;overflow:hidden;touch-action:manipulation}body[data-app-mode=viewer]{overflow-x:hidden;overflow-y:auto;overscroll-behavior-y:auto}button{font:inherit}.app-shell{min-height:100vh;min-height:100dvh;display:flex;flex-direction:column;overflow:hidden}body[data-app-mode=viewer] .app-shell{overflow:visible}.topbar{position:sticky;top:0;z-index:10;display:grid;gap:10px;padding:calc(var(--topbar-padding-top) + env(safe-area-inset-top,0px)) var(--topbar-padding-side) var(--topbar-padding-bottom);background:radial-gradient(120% 60% at 50% -10%,rgba(153,28,39,.045),transparent 60%),linear-gradient(180deg,#f6f7fa,#eef0f5);-webkit-backdrop-filter:var(--glass-blur);backdrop-filter:var(--glass-blur);border-bottom:1px solid var(--glass-border)}.topbar-glass{position:relative;display:grid;gap:10px;min-width:0;padding:14px 16px;border-radius:18px;background:#fafbfdcc;box-shadow:inset 0 0 0 1px #0b122014}.topbar-glass:has(.site-menu-toggle[aria-expanded=true]){z-index:50}.topbar-title-row{display:flex;align-items:center;justify-content:space-between;gap:12px;min-width:0}.app-title{margin:0;display:inline-flex;align-items:flex-end;flex-wrap:wrap;column-gap:8px;font-family:var(--font-display);font-size:clamp(1.05rem,2vw,1.35rem);font-weight:900;letter-spacing:var(--ls-tight);color:var(--ink-900)}.app-title-main,.app-title-version{line-height:1}.app-title-version{font-size:.7em;font-weight:700;letter-spacing:0;color:var(--color-fg-muted)}.editor-header-row{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.editor-header-actions{display:inline-flex;align-items:center;justify-content:flex-end;gap:10px;flex:0 0 auto}.topbar-actions{position:relative;display:inline-flex;align-items:center;justify-content:flex-end;gap:8px;flex:0 0 auto}.access-link{display:inline-flex;align-items:center;justify-content:center;padding:5px 10px;border-radius:6px;background:#991c2714;color:#991c27;font-size:.82rem;font-weight:700;text-decoration:none;letter-spacing:.02em;line-height:1;white-space:nowrap;transition:background .14s ease,transform .14s ease}.access-link:hover{background:#991c2726}.access-link:active{transform:scale(.95)}.lang-toggle{min-width:92px;min-height:40px;display:inline-flex;align-items:center;justify-content:center;gap:10px;flex:0 0 auto;border:0;border-radius:8px;padding:6px 4px;background:transparent;box-shadow:none;color:#0b1220;cursor:pointer;font:inherit;font-size:1.32rem;font-weight:900;letter-spacing:0;line-height:1;transition:transform .14s ease}.lang-toggle-option{color:#0b122047;transition:color .14s ease}.lang-toggle-option.is-active,.lang-toggle-separator{color:#0b1220}@media(hover:hover)and (pointer:fine){.lang-toggle-option:hover{color:#0b1220}}.lang-toggle:focus-visible{outline:2px solid rgba(153,28,39,.42);outline-offset:2px}.lang-toggle:active{transform:scale(.97)}.site-menu{position:relative;display:inline-flex;flex:0 0 auto}.site-menu-toggle{--site-menu-line-width: 22px;--site-menu-line-height: 2px;--site-menu-line-gap: 7px;position:relative;width:40px;height:40px;display:inline-flex;align-items:center;justify-content:center;border:0;border-radius:8px;padding:0;background:transparent;color:var(--ink-900);cursor:pointer;box-shadow:none;transition:transform var(--dur-fast) var(--ease-out),color var(--dur-fast) var(--ease-out)}.site-menu-toggle:hover{color:var(--crimson-500)}.site-menu-toggle:focus-visible{outline:none}.site-menu-toggle[aria-expanded=true]{color:var(--crimson-500);background:transparent;box-shadow:none}.site-menu-toggle:active{transform:scale(.97)}.site-menu-line{position:absolute;left:50%;top:50%;width:var(--site-menu-line-width);height:var(--site-menu-line-height);border-radius:999px;background:currentColor;transform-origin:center;transition:transform var(--dur-med) var(--ease-out),opacity var(--dur-fast) var(--ease-out),background-color var(--dur-fast) var(--ease-out)}.site-menu-line:nth-child(1){transform:translate(-50%,calc(-50% - var(--site-menu-line-gap)))}.site-menu-line:nth-child(2){transform:translate(-50%,-50%)}.site-menu-line:nth-child(3){transform:translate(-50%,calc(-50% + var(--site-menu-line-gap)))}.site-menu-toggle[aria-expanded=true] .site-menu-line:nth-child(1){transform:translate(-50%,-50%) rotate(45deg)}.site-menu-toggle[aria-expanded=true] .site-menu-line:nth-child(2){opacity:0}.site-menu-toggle[aria-expanded=true] .site-menu-line:nth-child(3){transform:translate(-50%,-50%) rotate(-45deg)}.site-menu-panel{position:absolute;top:calc(100% + 8px);right:0;z-index:100;display:grid;gap:2px;min-width:190px;padding:8px;border-radius:16px;background:#fff!important;background-color:#fff!important;background-image:none!important;opacity:1!important;filter:none;mix-blend-mode:normal;isolation:isolate;box-shadow:0 22px 44px #0b122029,inset 0 0 0 1px var(--accent-soft-mid);-webkit-backdrop-filter:none!important;backdrop-filter:none!important}.site-menu-panel[hidden]{display:none}#site-menu-panel,#site-menu-panel .site-menu-item,#about-menu-button,#contact-form-menu-button{background:#fff!important;background-color:#fff!important;background-image:none!important;opacity:1!important;filter:none!important;-webkit-backdrop-filter:none!important;backdrop-filter:none!important;mix-blend-mode:normal!important}.site-menu-item{width:100%;border:0;border-radius:12px;padding:11px 12px;background:#fff!important;background-color:#fff!important;background-image:none!important;opacity:1!important;filter:none;mix-blend-mode:normal;color:#0b1220;font-size:.9rem;font-weight:800;text-align:left;text-decoration:none;cursor:pointer}.site-menu-item:hover,.site-menu-item:focus-visible{background:#fff!important;background-color:#fff!important;outline:none}.site-menu-panel a{display:block;text-decoration:none;white-space:nowrap}.about-dialog-backdrop{position:fixed;inset:0;z-index:80;display:grid;place-items:center;padding:18px;background:#0b122052;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.about-dialog-backdrop[hidden]{display:none}.about-dialog{width:min(100%,560px);max-height:min(78vh,620px);overflow:auto;border-radius:22px;background:#fffffffa;color:#0b1220;box-shadow:0 28px 70px #0b12203d,inset 0 0 0 1px var(--accent-border)}.about-dialog-header{position:sticky;top:0;display:flex;align-items:center;justify-content:space-between;gap:14px;padding:18px 18px 12px;background:#fffffff5;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}.about-dialog-title{margin:0;font-family:var(--font-display);font-size:1.12rem;font-weight:900;letter-spacing:var(--ls-snug)}.about-dialog-close{width:38px;height:38px;display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto;border:0;border-radius:50%;background:var(--accent-soft-strong);color:var(--accent);font-size:1.35rem;line-height:1;cursor:pointer}.about-dialog-close:focus-visible{outline:2px solid rgba(153,28,39,.42);outline-offset:2px}.about-dialog-body{display:grid;gap:12px;padding:0 18px 12px}.about-dialog-body p{margin:0;color:#0b1220c7;font-size:.95rem;font-weight:700;line-height:1.8}.about-dialog-footer{display:grid;place-items:center;padding:0 18px 20px}.about-dialog-version{margin:0;color:#0b122080;font-size:1rem;font-weight:800;line-height:1.4;letter-spacing:0;text-align:center}.contact-form-dialog{width:min(100%,760px);max-height:min(88vh,760px)}.contact-form-dialog-body{padding:0 18px 20px}.contact-form-frame{display:block;width:100%;height:min(68vh,640px);min-height:460px;border:0;border-radius:16px;background:#fff;box-shadow:inset 0 0 0 1px #0b12201a}.contact-form-frame[hidden],.contact-form-fallback[hidden]{display:none}.contact-form-fallback{margin:0;padding:16px;border-radius:16px;background:var(--accent-soft);color:#0b1220c7;font-size:.95rem;font-weight:700;line-height:1.8}@media(min-width:721px){#about-dialog .about-dialog,#contact-form-dialog .contact-form-dialog{width:75vw;max-height:70vh}#contact-form-dialog .contact-form-dialog{height:70vh;display:flex;flex-direction:column;overflow:hidden}#contact-form-dialog .about-dialog-header{flex:0 0 auto;width:100%}#contact-form-dialog .contact-form-dialog-body{width:100%;min-height:0;display:flex;flex:1 1 auto;align-items:stretch;justify-content:center;padding:0 0 20px}#contact-form-dialog .contact-form-frame{width:100%;max-width:100%;height:100%;min-height:0;flex:1 1 auto}}.editor-logout-button{flex:0 0 auto;border:0;border-radius:999px;padding:10px 14px;background:#0b122014;color:#0b1220;font-size:.84rem;font-weight:800;letter-spacing:.04em;cursor:pointer;box-shadow:inset 0 0 0 1px #0b12200f}.editor-logout-button:hover{background:#0b12201f}.editor-logout-button:active{transform:scale(.98)}.search-panel{position:relative;display:grid;gap:8px;min-width:0}.toilet-ring-legend{min-width:0;font-size:.82rem;font-weight:900;color:var(--accent-dark);line-height:1.45}.search-box{display:flex;align-items:center;gap:8px;flex:1 1 auto;min-width:0;padding:4px 6px 4px 16px;border-radius:999px;background:#fff;box-shadow:0 12px 24px #0b12200f}.search-controls{display:grid;grid-template-columns:minmax(180px,1fr) auto;align-items:stretch;gap:10px;min-width:0}.mobile-quick-actions{display:none}.search-leading-icon{width:18px;height:18px;display:block;flex:0 0 auto;color:var(--crimson-500);fill:none;stroke:currentColor;stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round}.search-icon-actions{display:inline-flex;align-items:center;gap:8px;flex:0 0 auto}.search-icon-button{width:46px;height:46px;display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto;border:0;border-radius:14px;padding:0;background:#fff;box-shadow:0 6px 14px #0b12200d;cursor:pointer;transition:transform var(--dur-fast) var(--ease-out),box-shadow var(--dur-med) var(--ease-out),background-color var(--dur-fast) var(--ease-out)}@media(hover:hover)and (pointer:fine){.search-icon-button:not(.is-active):hover{background:#e9ecf2;box-shadow:0 8px 18px #0b12201a,0 2px 4px #0b12200d;transform:translateY(-1px)}}.search-icon-button.is-active{background:#fbeaec;box-shadow:0 6px 14px #991c2714}@media(hover:hover)and (pointer:fine){.search-icon-button.is-active:hover{background:#f7d8dc;box-shadow:0 8px 18px #991c2724,0 2px 4px #991c2714;transform:translateY(-1px)}}.search-icon-button:focus-visible{outline:2px solid rgba(153,28,39,.42);outline-offset:2px}.search-icon-button:active{transform:scale(.97);box-shadow:0 1px 2px #0b12200a}.search-icon-image{width:28px;height:28px;display:block;object-fit:contain;-webkit-user-select:none;user-select:none;-webkit-user-drag:none;pointer-events:none}.search-input{flex:1;min-width:0;border:0;outline:none;padding:11px 0;background:transparent;color:#0b1220;font-size:.95rem;font-weight:700;font-family:var(--font-sans)}.search-input::-webkit-search-cancel-button,.search-input::-webkit-search-decoration{display:none;-webkit-appearance:none;appearance:none}.search-input::placeholder{color:#0b12206b;font-weight:600}.search-clear{flex:0 0 auto;width:38px;height:38px;border:0;border-radius:50%;background:var(--accent-soft-strong);color:var(--accent);font-size:1.35rem;line-height:1}.search-feedback{min-height:1.1rem;padding-inline:8px;color:#0b12209e;font-size:.85rem;font-weight:700}.search-results{position:absolute;top:calc(100% + 6px);left:0;right:0;z-index:24;display:grid;gap:6px;max-height:min(44vh,360px);overflow:auto;padding:10px;border-radius:22px;background:#fffffff5;box-shadow:0 28px 54px #0b122029,inset 0 0 0 1px var(--accent-soft-mid);-webkit-backdrop-filter:var(--glass-blur);backdrop-filter:var(--glass-blur)}.search-results[hidden]{display:none}.search-result{width:100%;display:flex;align-items:center;justify-content:space-between;gap:12px;border:0;border-radius:16px;padding:12px 14px;background:var(--accent-soft);color:#0b1220;text-align:left}.search-result.is-active{background:linear-gradient(135deg,var(--accent-soft-gradient-start),var(--accent-soft-gradient-end))}.search-result-label{font-size:1rem;font-weight:800;letter-spacing:0}.search-result-floor{flex:0 0 auto;padding:6px 10px;border-radius:999px;background:#0b122014;font-size:.82rem;font-weight:800;letter-spacing:.04em}.search-result-empty{padding:14px 16px;border-radius:16px;background:#0b12200d;color:#0b1220a8;font-weight:700}.floor-tab-stack{position:relative;display:grid;gap:8px}.mobile-floor-select{display:none;position:relative;width:168px;min-width:0;isolation:isolate;perspective:520px}.mobile-floor-toggle,.mobile-floor-option{font-family:var(--font-sans)}.mobile-floor-toggle{position:relative;z-index:70;--mobile-floor-chevron-left: auto;--mobile-floor-chevron-right: 10px;width:auto;min-width:168px;border:0;border-radius:10px;padding:4px 32px 4px 10px;display:inline-flex;align-items:center;justify-content:center;gap:8px;background:var(--crimson-500);color:#fff;font-weight:600;font-size:.85rem;line-height:1;cursor:pointer;transition:transform var(--dur-fast) var(--ease-out),background-color var(--dur-fast) var(--ease-out);transform-origin:top center;-webkit-tap-highlight-color:transparent}.mobile-floor-toggle:after{content:"";flex:0 0 18px;width:18px;height:18px;pointer-events:none;visibility:hidden}.mobile-floor-toggle[aria-expanded=true]{background:var(--crimson-600)}.mobile-floor-toggle:active{transform:rotateX(8deg) translateY(1px)}.mobile-floor-toggle:focus-visible{outline:2px solid rgba(153,28,39,.42);outline-offset:2px}.mobile-floor-current{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mobile-floor-chevron{position:absolute;right:var(--mobile-floor-chevron-right);top:50%;width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round;transform:translateY(-50%);transition:transform var(--dur-med) var(--ease-out)}.mobile-floor-label{display:flex;flex-direction:column;align-items:center;gap:1px;line-height:1.15}.mobile-floor-label-line{display:inline-block;font-size:.72em;font-weight:700;opacity:.92;letter-spacing:.02em}.mobile-floor-select.is-open .mobile-floor-chevron{transform:translateY(-50%) rotate(180deg)}.mobile-floor-list{position:absolute;left:0;right:auto;top:calc(100% + 6px);z-index:60;display:grid;grid-template-columns:repeat(10,minmax(0,1fr));gap:6px;width:min(calc(100vw - 56px),360px);max-height:none;overflow:visible;padding:8px;border-radius:16px;background:#fffffffa;box-shadow:0 22px 44px #0b122029,inset 0 0 0 1px var(--accent-soft-mid);opacity:0;pointer-events:none;transform:translateY(-12px) scale(.97);transform-origin:top left;transition:opacity var(--dur-med) var(--ease-out),transform var(--dur-med) var(--ease-out),box-shadow var(--dur-med) var(--ease-out);-webkit-backdrop-filter:var(--glass-blur);backdrop-filter:var(--glass-blur)}.mobile-floor-select.is-open .mobile-floor-list{opacity:1;pointer-events:auto;transform:translateY(0) scale(1);box-shadow:0 26px 52px #0b12202e,0 6px 14px #991c2714,inset 0 0 0 1px var(--accent-soft-mid)}.mobile-floor-option{width:100%;height:42px;min-height:42px;grid-column:span 2;border:0;border-radius:10px;padding:0 8px;display:flex;align-items:center;justify-content:center;background:transparent;color:var(--ink-800);font-size:.95rem;font-weight:800;line-height:1.2;text-align:center;cursor:pointer;transition:background-color var(--dur-fast) var(--ease-out),color var(--dur-fast) var(--ease-out),transform var(--dur-med) var(--ease-out)}.mobile-floor-select.is-open .mobile-floor-option:hover{background:#0b12200f;color:var(--ink-900);transform:translateY(-1px)}.mobile-floor-option.is-active,.mobile-floor-option[aria-selected=true]{background:#991c271a;color:var(--crimson-600)}.mobile-floor-select.is-open .mobile-floor-option.is-active:hover,.mobile-floor-select.is-open .mobile-floor-option[aria-selected=true]:hover{background:#991c2724;color:var(--crimson-600)}.mobile-floor-option:focus-visible{outline:2px solid rgba(153,28,39,.38);outline-offset:2px}.mobile-floor-option-wide{grid-column:span 5;font-size:clamp(.72rem,2.8vw,.86rem);letter-spacing:0;white-space:nowrap}@media(prefers-reduced-motion:reduce){.mobile-floor-list,.mobile-floor-toggle,.mobile-floor-option,.mobile-floor-chevron{transition:none}.mobile-floor-toggle:active,.mobile-floor-select.is-open .mobile-floor-option:hover{transform:none}}.floor-tabs{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:8px;min-width:0}.floor-tabs-secondary{grid-template-columns:repeat(2,minmax(0,1fr))}.floor-tab{border:0;border-radius:999px;padding:6px 10px;background:#0b122012;color:var(--ink-700);font-weight:800;letter-spacing:var(--ls-wide);transition:transform var(--dur-fast) var(--ease-out),box-shadow var(--dur-med) var(--ease-out),background-color var(--dur-fast) var(--ease-out),color var(--dur-fast) var(--ease-out);cursor:pointer}.floor-tab-wide{letter-spacing:.02em}.floor-tab.is-active{background:var(--crimson-500);color:#fff}.floor-tab.is-active:hover{background:var(--crimson-600)}.floor-tab:active{transform:scale(.97)}@media(min-width:721px){.floor-tab-stack{grid-template-columns:repeat(7,minmax(0,1fr));margin-top:7px}.mobile-floor-select{display:none}.floor-tabs,.floor-tabs-secondary{display:contents}.floor-tab{min-width:0;border-radius:10px;padding-inline:8px;white-space:nowrap}.floor-tab-wide{font-size:clamp(.78rem,1.25vw,1rem)}}@media(min-width:721px)and (hover:hover)and (pointer:fine){.floor-tab:not(.is-active):hover{background:#0b12201c;box-shadow:0 8px 16px #0b122014;color:var(--ink-900);transform:translateY(-1px)}.floor-tab.is-active:hover{background:var(--crimson-600);box-shadow:0 10px 18px #991c2733;transform:translateY(-1px)}}.editor-shell{display:grid;gap:10px}.editor-toolbar{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.editor-toggle{flex:0 0 auto;border:0;border-radius:999px;padding:10px 16px;background:#0b12201a;color:#0b1220;font-size:.92rem;font-weight:800;letter-spacing:.04em}.editor-toggle.is-active{background:var(--crimson-500);color:#fff}.editor-caption{color:#0b12209e;font-size:.84rem;font-weight:700}.editor-panel{display:grid;gap:12px;padding:14px;border-radius:22px;background:#ffffffe6;box-shadow:inset 0 0 0 1px var(--accent-border),0 18px 36px #0b122014}.editor-panel[hidden]{display:none}.editor-meta{display:flex;gap:8px;flex-wrap:wrap}.editor-chip{padding:7px 11px;border-radius:999px;background:var(--accent-soft-mid);color:var(--accent);font-size:.82rem;font-weight:800;letter-spacing:.04em}.editor-grid{display:grid;grid-template-columns:minmax(0,1fr);gap:10px}.editor-field{display:grid;gap:6px;min-width:0}.editor-field-label{color:#0b1220b3;font-size:.78rem;font-weight:800;letter-spacing:.08em}.editor-input{width:100%;min-width:0;border:0;border-radius:14px;padding:11px 13px;background:#991c2712;color:#0b1220;font:inherit;font-weight:700;box-shadow:inset 0 0 0 1px var(--accent-soft-mid)}.editor-actions{display:flex;gap:8px;flex-wrap:wrap}.editor-action{border:0;border-radius:14px;padding:10px 14px;background:#0b122014;color:#0b1220;font-size:.88rem;font-weight:800;cursor:pointer;box-shadow:0 1px 2px #0b12200a;transition:transform var(--dur-med) var(--ease-out),box-shadow var(--dur-med) var(--ease-out),background-color var(--dur-fast) var(--ease-out)}@media(hover:hover)and (pointer:fine){.editor-action:not(:disabled):hover{transform:translateY(-2px);background:#0b12201f;box-shadow:0 12px 22px #0b122024,0 4px 8px #0b122014}}.editor-action:active{transform:translateY(0);box-shadow:0 1px 2px #0b12200a}.editor-action-primary{background:var(--crimson-500);color:#fff}@media(hover:hover)and (pointer:fine){.editor-action-primary:not(:disabled):hover{background:var(--crimson-600);box-shadow:0 12px 22px #991c2738,0 4px 8px #991c2724}}.editor-action:disabled{opacity:.42;cursor:not-allowed;box-shadow:none;transform:none}.editor-section-label{color:#0b1220b3;font-size:.78rem;font-weight:800;letter-spacing:.08em}.editor-ring-tools{display:grid;gap:10px;padding-top:6px;border-top:1px solid rgba(11,18,32,.08)}.editor-ring-mode-buttons,.editor-toilet-ring-color-tools{display:flex;gap:8px;flex-wrap:wrap}.editor-ring-mode-button{border:0;border-radius:999px;padding:9px 12px;background:#0b122014;color:#0b1220;font-size:.8rem;font-weight:800;letter-spacing:.03em;cursor:pointer;transition:background-color .14s ease,color .14s ease,box-shadow .14s ease,transform .14s ease}.editor-ring-mode-button.is-active{background:#991c271f;color:var(--accent);box-shadow:inset 0 0 0 1px #991c272e}.editor-ring-mode-button:active{transform:scale(.98)}.editor-ring-mode-button:focus-visible,.editor-ring-button:focus-visible,.editor-ring-color-button:focus-visible{outline:2px solid rgba(153,28,39,.42);outline-offset:2px}.editor-ring-color-button{min-width:48px;border:0;border-radius:999px;padding:9px 12px;background:#0b122014;color:#0b1220;font-size:.8rem;font-weight:800;letter-spacing:.03em;cursor:pointer;box-shadow:inset 0 0 0 1px #0b122014;transition:background-color .14s ease,color .14s ease,box-shadow .14s ease,transform .14s ease}.editor-ring-color-button:active{transform:scale(.98)}.editor-ring-color-button[data-ring-color-variant=red]{color:#8b0d25}.editor-ring-color-button[data-ring-color-variant=blue]{color:#0f4ea8}.editor-ring-color-button[data-ring-color-variant=yellow]{color:#8a6a00}.editor-ring-color-button.is-active[data-ring-color-variant=red]{background:#ff58681f;box-shadow:inset 0 0 0 1px #ff586847}.editor-ring-color-button.is-active[data-ring-color-variant=blue]{background:#428fff24;box-shadow:inset 0 0 0 1px #428fff47}.editor-ring-color-button.is-active[data-ring-color-variant=yellow]{background:#ffe13a33;box-shadow:inset 0 0 0 1px #ffd20057,0 6px 16px #ffd2001f}.editor-ring-actions{display:flex;gap:8px;flex-wrap:wrap}.editor-ring-list{display:grid;gap:8px;max-height:160px;overflow:auto}.editor-feedback{min-height:1.2rem;color:#0b1220b8;font-size:.84rem;font-weight:700}.editor-list{display:grid;gap:8px;max-height:180px;overflow:auto}.editor-entry,.editor-empty{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 12px;border-radius:16px;background:var(--accent-soft)}.editor-empty{color:#0b12209e;font-size:.84rem;font-weight:700}.editor-entry-body{display:grid;gap:2px;min-width:0}.editor-entry-label{font-size:.92rem;font-weight:800}.editor-entry-meta{color:#0b122094;font-size:.77rem;font-weight:700}.editor-entry-actions{display:flex;gap:6px;flex:0 0 auto}.editor-entry-button{border:0;border-radius:10px;padding:8px 10px;background:#0b122014;color:#0b1220;font-size:.78rem;font-weight:800}.editor-json{width:100%;min-height:148px;resize:vertical;border:0;border-radius:18px;padding:12px 14px;background:#0b12200f;color:#0b1220;font:.82rem/1.5 SFMono-Regular,Menlo,Consolas,monospace;box-shadow:inset 0 0 0 1px var(--accent-soft-mid)}.map-stage{flex:0 0 auto;display:flex;height:var(--map-stage-height, calc(100dvh - 220px) );min-height:var(--map-stage-height, calc(100dvh - 220px) );padding:var(--shell-padding) var(--shell-padding) 6px;overflow:hidden}.site-footer{flex:0 0 auto;display:grid;gap:6px;justify-items:center;padding:12px 18px calc(14px + env(safe-area-inset-bottom,0px));color:#0b12209e;font-size:.76rem;font-weight:700;letter-spacing:0;text-align:center}.site-footer-links{display:inline-flex;align-items:center;justify-content:center;flex-wrap:wrap;gap:18px}.footer-portfolio-link{white-space:nowrap}.site-footer p{margin:0}.site-footer a{color:inherit;text-decoration:none}.site-footer a:hover,.site-footer a:focus-visible{color:var(--accent);text-decoration:underline;text-underline-offset:.18em}body.legal-page{min-height:100vh;min-height:100dvh;overflow-x:hidden;overflow-y:auto;overscroll-behavior-y:auto;background:radial-gradient(120% 60% at 50% -10%,var(--accent-page-radial),transparent 60%),radial-gradient(80% 40% at 100% 110%,rgba(11,18,32,.04),transparent 70%),linear-gradient(180deg,var(--accent-page-start) 0%,var(--accent-page-end) 100%);color:#0b1220}.legal-shell{min-height:100vh;min-height:100dvh;display:flex;flex-direction:column}.legal-header{flex:0 0 auto}.legal-header-inner{width:100%;margin:0 auto}.legal-brand{flex:1 1 auto;min-width:0;color:inherit;text-decoration:none}.legal-brand .app-title-main{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.legal-brand .app-title-version{flex:0 0 auto}.legal-menu{position:relative;flex:0 0 auto}.legal-menu summary{list-style:none}.legal-menu[open] .site-menu-toggle{color:var(--crimson-500)}.legal-menu[open] .site-menu-toggle .site-menu-line:nth-child(1){transform:translate(-50%,-50%) rotate(45deg)}.legal-menu[open] .site-menu-toggle .site-menu-line:nth-child(2){opacity:0}.legal-menu[open] .site-menu-toggle .site-menu-line:nth-child(3){transform:translate(-50%,-50%) rotate(-45deg)}.legal-menu summary::-webkit-details-marker{display:none}.legal-menu-panel{display:grid;gap:2px}.legal-menu-panel a{display:block;text-decoration:none;white-space:nowrap}.legal-menu-panel a:hover,.legal-menu-panel a:focus-visible{background:var(--accent-soft);color:var(--accent);outline:none}.legal-main{width:min(calc(100% - 36px),1180px);margin:24px auto 42px;flex:1 0 auto}.legal-hero,.legal-content{border-radius:var(--card-radius);background:#fffffffa;box-shadow:var(--shadow-4),inset 0 0 0 1px #ffffffb3}.legal-hero{margin-bottom:20px;padding:clamp(24px,3vw,38px);background:linear-gradient(180deg,#ffffffeb,#ffffffc2),linear-gradient(135deg,var(--accent-surface-start) 0%,var(--accent-surface-end) 100%)}.legal-hero h1{margin:0;font-family:var(--font-display);font-size:clamp(1.45rem,2.4vw,2.2rem);font-weight:900;line-height:1.25;letter-spacing:var(--ls-tight)}.legal-hero p{margin:11px 0 0;max-width:72ch;color:#0b1220b8;font-size:clamp(.98rem,1.3vw,1.08rem);font-weight:700;line-height:1.7;overflow-wrap:anywhere}.legal-content{padding:clamp(28px,3.2vw,44px);background:#fffffff5}.legal-updated{margin:0 0 24px;color:#0b1220a8;font-size:.95rem;font-weight:700}.legal-section{margin-top:25px}.legal-section:first-of-type{margin-top:0}.legal-section h2{margin:0 0 12px;padding-bottom:9px;border-bottom:1px solid var(--accent-border);font-size:1.04rem;font-weight:900;line-height:1.45;letter-spacing:0}.legal-section p,.legal-section li{color:#0b1220c2;font-size:.96rem;font-weight:700;line-height:1.85;overflow-wrap:anywhere}.legal-section p{margin:0}.legal-section p+p{margin-top:10px}.legal-section ul{margin:9px 0 0;padding-left:1.35em}.legal-section li+li{margin-top:6px}.legal-section a{color:var(--accent);font-weight:900;text-decoration-thickness:1px;text-underline-offset:.18em;overflow-wrap:anywhere}.legal-footer{flex:0 0 auto;border-top:1px solid rgba(11,18,32,.1);background:#fafbfdb8;-webkit-backdrop-filter:var(--glass-blur);backdrop-filter:var(--glass-blur);padding:20px 18px calc(22px + env(safe-area-inset-bottom,0px))}.legal-footer .site-footer{padding:0;background:transparent}.access-main,.food-main{width:min(calc(100% - 36px),1120px)}.access-hero,.food-hero{margin-bottom:18px;padding-block:clamp(14px,1.6vw,20px);border-radius:12px;text-align:center}.access-hero h1,.food-hero h1{margin:0}.legal-hero.access-hero h1,.legal-hero.food-hero h1{font-size:clamp(1.18rem,1.8vw,1.72rem)}.food-content{display:grid;place-items:center;min-height:clamp(220px,34vh,380px);padding:clamp(28px,6vw,72px) 18px;text-align:center}.food-placeholder{margin:0;color:var(--ink-900);font-size:clamp(1.08rem,2vw,1.38rem);font-weight:800;line-height:1.9;letter-spacing:0}.access-eyebrow{margin:0 0 10px;color:var(--accent);font-size:.82rem;font-weight:900;letter-spacing:.08em;text-transform:uppercase}.access-content{display:grid;gap:30px}.access-section{display:grid;gap:18px}.access-section+.access-section{padding-top:28px;border-top:1px solid var(--accent-border)}.access-section-heading h2{margin:0;font-size:1.08rem;font-weight:900;line-height:1.45}.access-section-heading p{margin:8px 0 0;color:#0b1220ad;font-size:.94rem;font-weight:700;line-height:1.75}.access-overview-grid{width:100%;display:flex;justify-content:center;gap:24px;align-items:start}.access-figure{margin:0 auto;width:100%;max-width:720px;display:grid;gap:12px;justify-items:center}.access-figure img{display:block;width:100%;max-width:100%;height:auto;margin-inline:auto;border-radius:18px;background:#fff;box-shadow:0 20px 44px #0b12201f,inset 0 0 0 1px #0b122014}.access-figure.access-figure-narrow{max-width:500px}.access-figure figcaption{color:#0b12208f;font-size:.8rem;font-weight:800;text-align:center}.access-panel{display:grid;justify-items:center;justify-self:center;gap:18px;width:min(85%,720px);padding:24px;text-align:center;border-radius:20px;background:#fafbfdf5;box-shadow:inset 0 0 0 1px var(--accent-border)}.access-address,.access-info-heading,.access-info-copy{margin:0}.access-address{width:min(100%,44rem);justify-self:center;text-align:center;color:#0b1220d6;font-size:.98rem;font-weight:800;line-height:1.8}.access-info-block{display:grid;justify-items:center;justify-self:center;gap:10px;width:min(100%,44rem);padding-top:18px;border-top:1px solid rgba(11,18,32,.08)}.access-info-heading{text-align:center;color:#0b1220;font-size:.94rem;font-weight:900;line-height:1.7}.access-info-copy{text-align:center;color:#0b1220b8;font-size:.92rem;font-weight:700;line-height:1.75}.access-panel h3,.access-route-group h3{margin:0;font-size:.98rem;font-weight:900;line-height:1.45}.access-meta-list{display:grid;gap:14px;margin:0}.access-meta-item{display:grid;gap:4px}.access-meta-item dt{color:#0b122085;font-size:.78rem;font-weight:900;letter-spacing:.04em;text-transform:uppercase}.access-meta-item dd{margin:0;color:#0b1220d1;font-size:.95rem;font-weight:700;line-height:1.7}.access-link-row{display:flex;flex-wrap:wrap;gap:10px}.access-link{min-height:40px;display:inline-flex;align-items:center;justify-content:center;border-radius:10px;padding:8px 14px;text-decoration:none;font-size:.88rem;font-weight:800;line-height:1.2;transition:transform var(--dur-fast) var(--ease-out),box-shadow var(--dur-med) var(--ease-out),background-color var(--dur-fast) var(--ease-out),color var(--dur-fast) var(--ease-out)}.access-link-primary{background:linear-gradient(180deg,#a2222e,#851622);color:#fff;box-shadow:0 14px 24px #991c2733}.access-link-secondary{background:#0b122012;color:var(--ink-700)}@media(hover:hover)and (pointer:fine){.access-link-primary:hover,.access-link-secondary:hover{transform:translateY(-1px)}.access-link-primary:hover{background:var(--crimson-600);box-shadow:0 16px 28px #991c2738}.access-link-secondary:hover{background:#0b12201c;box-shadow:0 8px 16px #0b122014;color:var(--ink-900)}}.access-link:focus-visible{outline:2px solid rgba(153,28,39,.42);outline-offset:2px}.access-link:active{transform:scale(.97)}.access-route-grid{width:85%;max-width:860px;margin-inline:auto;display:block;gap:18px}.access-route-group{display:grid;gap:12px;padding:18px;border-radius:18px;background:#fafbfdf5;box-shadow:inset 0 0 0 1px var(--accent-border)}.access-route-group-wide{display:grid;width:100%;text-align:left}.access-route-list{display:grid;gap:12px;margin:0;padding:0;list-style:none}.access-route-item{padding-top:12px;border-top:1px solid rgba(11,18,32,.08)}.access-route-item:first-child{padding-top:0;border-top:0}.access-route-origin{margin:0;color:#0b1220;font-size:.92rem;font-weight:900;line-height:1.55}.access-route-detail{margin:4px 0 0;color:#0b1220b8;font-size:.88rem;font-weight:700;line-height:1.75}.access-note{margin:0;color:#0b122094;font-size:.82rem;font-weight:700;line-height:1.7}body.timetable-page{background:radial-gradient(95% 48% at 15% -10%,rgba(153,28,39,.08),transparent 58%),radial-gradient(80% 44% at 100% 12%,rgba(0,114,188,.08),transparent 58%),linear-gradient(180deg,#f6f7fa,#eef0f5)}.timetable-main{width:min(calc(100% - 36px),1180px);margin:24px auto 42px;flex:1 0 auto}.timetable-hero{display:flex;align-items:center;justify-content:space-between;gap:14px;margin-bottom:14px;padding:clamp(18px,2.2vw,28px);border-radius:var(--card-radius);background:linear-gradient(180deg,#fffffff0,#ffffffc2),linear-gradient(135deg,var(--accent-surface-start) 0%,var(--accent-surface-end) 100%);box-shadow:var(--shadow-4),inset 0 0 0 1px #ffffffb3}.timetable-link-hero{padding-block:clamp(14px,1.6vw,20px)}.timetable-hero.timetable-link-hero{border-radius:12px}.timetable-hero h1{margin:0;font-family:var(--font-display);font-size:clamp(1.45rem,2.4vw,2.2rem);font-weight:900;line-height:1.25;letter-spacing:0}.timetable-hero.timetable-link-hero h1{font-size:clamp(1.18rem,1.8vw,1.72rem)}.timetable-hero p{margin:6px 0 0;max-width:68ch;color:#0b1220b8;font-size:clamp(.95rem,1.2vw,1.06rem);font-weight:700;line-height:1.7}.timetable-hero-kicker,.timetable-section-kicker{margin:0 0 6px;color:var(--crimson-600);font-size:.72rem;font-weight:900;letter-spacing:0;line-height:1.2;text-transform:uppercase}.timetable-link-builder,.timetable-compliance-panel{margin-bottom:14px;padding:clamp(16px,2vw,22px);border-radius:22px;background:#ffffffeb;box-shadow:var(--shadow-3),inset 0 0 0 1px #0b122012}.timetable-link-builder-header,.timetable-section-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:14px}.timetable-link-builder h2,.timetable-section-heading h2,.timetable-compliance-panel h3{margin:0;font-family:var(--font-display);letter-spacing:0}.timetable-link-builder h2,.timetable-section-heading h2{font-size:clamp(1.15rem,1.7vw,1.5rem);line-height:1.3}.timetable-compliance-badge{flex:0 0 auto;border-radius:999px;padding:7px 10px;background:#0fa9681f;color:#08794a;font-size:.76rem;font-weight:900;line-height:1}.timetable-link-form{display:grid;grid-template-columns:repeat(5,minmax(0,1fr)) auto;gap:10px;align-items:end}.timetable-link-form label{display:grid;gap:6px;min-width:0;color:#0b1220ad;font-size:.78rem;font-weight:900}.timetable-link-form select,.timetable-link-form input{width:100%;min-height:44px;border:1px solid rgba(11,18,32,.14);border-radius:12px;padding:0 12px;background:#fff;color:var(--ink-900);font:inherit;font-size:.92rem;font-weight:800}.timetable-link-form [hidden]{display:none}.timetable-primary-link-button{min-height:44px;border:0;border-radius:12px;padding:0 16px;background:var(--crimson-500);color:var(--ink-900);font-family:var(--font-sans);font-size:.9rem;font-weight:900;white-space:nowrap;cursor:pointer;transition:background-color var(--dur-fast) var(--ease-out),transform var(--dur-fast) var(--ease-out)}.timetable-primary-link-button:active{transform:scale(.98)}.timetable-link-preview{display:grid;gap:4px;margin-top:12px;padding:11px 12px;border-radius:12px;background:#0b12200a;color:#0b12209e;font-size:.78rem;font-weight:900}.timetable-link-preview a{color:var(--crimson-600);overflow-wrap:anywhere;text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:3px}.timetable-compliance-links a{color:var(--ink-900);overflow-wrap:anywhere;text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:3px}.timetable-link-help,.timetable-link-disclaimer{margin:10px 0 0;color:#0b122099;font-size:.82rem;font-weight:800;line-height:1.7}.timetable-official-grid{margin-top:14px}.timetable-official-card-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.timetable-official-card{position:relative;overflow:hidden;border-radius:20px;padding:18px;background:#fffffff0;box-shadow:var(--shadow-2),inset 0 0 0 1px #0b122012}.timetable-official-card:before{content:"";position:absolute;inset:0 auto 0 0;width:5px;background:var(--timetable-railway-color, var(--crimson-500))}.timetable-official-card h3{margin:3px 0 14px;font-family:var(--font-display);font-size:1.35rem;font-weight:900;letter-spacing:0;line-height:1.25}.timetable-official-rows{display:grid;gap:10px}.timetable-official-row{display:grid;gap:8px;padding-top:10px;border-top:1px solid rgba(11,18,32,.08)}.timetable-official-row span{display:block;color:var(--ink-900);font-size:.92rem;font-weight:900;line-height:1.35}.timetable-official-row small{display:block;margin-top:2px;color:#0b122094;font-size:.74rem;font-weight:800;line-height:1.4}.timetable-official-actions{display:flex;flex-wrap:wrap;gap:8px}.timetable-official-actions a{display:inline-flex;align-items:center;gap:6px;min-height:36px;border-radius:999px;padding:0 14px;border:1px solid rgba(153,28,39,.2);border-color:color-mix(in srgb,var(--timetable-railway-color, var(--crimson-500)) 24%,transparent);background:#991c270f;background:color-mix(in srgb,var(--timetable-railway-color, var(--crimson-500)) 8%,#fff);color:var(--ink-900);color:color-mix(in srgb,var(--timetable-railway-color, var(--crimson-600)) 70%,#0b1220);font-family:var(--font-sans);font-size:.8rem;font-weight:800;line-height:1;white-space:nowrap;text-decoration:none;cursor:pointer;transition:background-color var(--dur-fast) var(--ease-out),border-color var(--dur-fast) var(--ease-out),color var(--dur-fast) var(--ease-out),transform var(--dur-fast) var(--ease-out),box-shadow var(--dur-fast) var(--ease-out)}@media(hover:hover){.timetable-official-actions a:hover{background:color-mix(in srgb,var(--timetable-railway-color, var(--crimson-500)) 15%,#fff);border-color:color-mix(in srgb,var(--timetable-railway-color, var(--crimson-500)) 50%,transparent)}}.timetable-official-actions a:active{transform:translateY(1px)}.timetable-official-actions a:focus-visible{outline:3px solid color-mix(in srgb,var(--timetable-railway-color, var(--crimson-500)) 38%,transparent);outline-offset:2px}.timetable-service-status-card{display:grid;gap:14px;margin-top:16px;border-radius:20px;padding:clamp(16px,2vw,22px);background:#fffffff0;box-shadow:var(--shadow-3),inset 0 0 0 1px #0b122012}.timetable-service-status-head{display:grid;gap:5px}.timetable-service-status-head h2{margin:0;font-family:var(--font-display);font-size:clamp(1.08rem,1.5vw,1.34rem);font-weight:900;line-height:1.3;letter-spacing:0}.timetable-service-status-rows{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.timetable-service-status-row{position:relative;display:grid;align-content:space-between;gap:14px;min-height:136px;overflow:hidden;border-radius:16px;padding:14px 14px 14px 18px;background:#0b122009;box-shadow:inset 0 0 0 1px #0b122012}.timetable-service-status-row:before{content:"";position:absolute;inset:0 auto 0 0;width:4px;background:var(--timetable-railway-color, var(--crimson-500))}.timetable-service-status-row p,.timetable-service-status-row h3{margin:0}.timetable-service-status-row p{color:var(--timetable-railway-color, var(--crimson-600));font-size:.72rem;font-weight:900;letter-spacing:0}.timetable-service-status-row h3{margin-top:4px;color:var(--ink-900);font-family:var(--font-display);font-size:1.08rem;font-weight:900;line-height:1.3;letter-spacing:0}.timetable-shuttle-card{display:grid;gap:14px;margin-top:16px;border-radius:20px;padding:clamp(16px,2vw,22px);background:#fffffff0;box-shadow:var(--shadow-3),inset 0 0 0 1px #0b122012}.timetable-shuttle-head{display:flex;align-items:flex-start;justify-content:space-between;gap:14px}.timetable-shuttle-head h2,.timetable-shuttle-head p{margin:0}.timetable-shuttle-head h2{color:var(--ink-900);font-family:var(--font-display);font-size:clamp(1.08rem,1.5vw,1.34rem);font-weight:900;line-height:1.3;letter-spacing:0}.timetable-shuttle-head p{margin-top:4px;color:#0b12209e;font-size:.78rem;font-weight:900;line-height:1.35}.timetable-shuttle-actions{justify-content:flex-end}.timetable-shuttle-routes{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.timetable-shuttle-route{position:relative;display:grid;grid-template-columns:minmax(0,1fr) auto;gap:12px 14px;overflow:hidden;border-radius:16px;padding:15px 15px 15px 19px;background:#0b122009;box-shadow:inset 0 0 0 1px #0b122012}.timetable-shuttle-route:before{content:"";position:absolute;inset:0 auto 0 0;width:4px;background:var(--timetable-railway-color, var(--crimson-500))}.timetable-shuttle-route-head{min-width:0}.timetable-shuttle-route-head p,.timetable-shuttle-route-head h3{margin:0}.timetable-shuttle-route-head p{color:var(--timetable-railway-color, var(--crimson-600));font-size:.72rem;font-weight:900;line-height:1.25}.timetable-shuttle-route-head h3{margin-top:4px;color:var(--ink-900);font-family:var(--font-display);font-size:clamp(1rem,1.3vw,1.15rem);font-weight:900;line-height:1.28;letter-spacing:0}.timetable-shuttle-next,.timetable-shuttle-countdown{display:grid;justify-items:end;gap:3px;text-align:right}.timetable-shuttle-next{grid-column:2;grid-row:1}.timetable-shuttle-countdown{grid-column:1 / -1;justify-self:end}.timetable-shuttle-next span,.timetable-shuttle-countdown span{color:#0b12208a;font-size:.7rem;font-weight:900;line-height:1.2}.timetable-shuttle-next time{color:var(--ink-900);font-size:.95rem;font-weight:900;line-height:1.15;white-space:nowrap}.timetable-shuttle-countdown strong{color:var(--ink-900);font-family:var(--font-display);font-size:clamp(1.55rem,3.2vw,2.3rem);font-weight:900;line-height:1;letter-spacing:0}.timetable-live-status{margin-bottom:16px}.timetable-live-status-card{display:grid;gap:14px;border-radius:18px;padding:clamp(16px,2vw,22px);background:#fffffff0;box-shadow:var(--shadow-3),inset 0 0 0 1px #0b122012}.timetable-live-status-head{display:flex;align-items:flex-start;justify-content:space-between;gap:14px}.timetable-live-status-head h2{margin:0;font-family:var(--font-display);font-size:clamp(1.08rem,1.5vw,1.34rem);font-weight:900;line-height:1.3;letter-spacing:0}.timetable-live-status-meta{display:flex;align-items:center;justify-content:flex-end;flex-wrap:wrap;gap:6px;color:#0b12209e;font-size:.76rem;font-weight:900;line-height:1.2;text-align:right}.timetable-live-status-meta span,.timetable-live-status-meta time{border-radius:999px;padding:6px 8px;background:#0b12200e}.timetable-live-status-rows{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.timetable-live-status-row{position:relative;display:grid;grid-template-rows:48px minmax(0,1fr) auto;align-content:space-between;gap:12px;min-height:176px;overflow:hidden;border-radius:14px;padding:14px 14px 14px 18px;background:#0b122009;box-shadow:inset 0 0 0 1px #0b122012}.timetable-live-status-title{min-height:48px}.timetable-live-status-row:before{content:"";position:absolute;inset:0 auto 0 0;width:4px;background:var(--timetable-railway-color, var(--crimson-500))}.timetable-live-status-row p,.timetable-live-status-row h3{margin:0}.timetable-live-status-row p{color:#0b122094;font-size:.72rem;font-weight:900;letter-spacing:0}.timetable-live-status-row h3{margin-top:4px;color:var(--ink-900);font-family:var(--font-display);font-size:1.08rem;font-weight:900;line-height:1.3;letter-spacing:0}.timetable-live-status-summary{display:grid;align-content:start;gap:7px}.timetable-live-status-summary strong{color:#0b1220c7;font-size:.86rem;font-weight:900;line-height:1.45}.timetable-live-status-badge{display:inline-flex;align-items:center;justify-content:center;justify-self:start;min-width:76px;height:24px;border-radius:999px;padding:0 9px;background:#0b122014;color:var(--ink-900);font-size:.76rem;font-weight:900;line-height:1;white-space:nowrap}.timetable-live-status-row.is-normal .timetable-live-status-badge{background:#0fa96824;color:#08794a}.timetable-live-status-row.is-notice .timetable-live-status-badge,.timetable-live-status-row.is-unknown .timetable-live-status-badge{background:#dc6e0024;color:#8d4b00}.timetable-live-status-row.is-delay .timetable-live-status-badge{background:#f3bd0338;color:#6d5300}.timetable-live-status-row.is-suspended .timetable-live-status-badge,.timetable-live-status-row.is-error .timetable-live-status-badge{background:#d4272724;color:#9b1c1c}.timetable-live-status-detail{display:block;color:#0b122099;font-size:.76rem;font-weight:800;line-height:1.55}.timetable-live-status-actions{display:flex;flex-wrap:wrap;gap:7px}.timetable-live-status-actions a{border-radius:999px;padding:7px 10px;background:#991c2714;color:var(--ink-900);font-size:.78rem;font-weight:900;text-decoration:none}.timetable-compliance-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.timetable-compliance-grid article{border-radius:16px;padding:14px;background:#0b12200a}.timetable-compliance-panel h3{font-size:1rem;line-height:1.4}.timetable-compliance-panel ul{display:grid;gap:7px;margin:10px 0 0;padding-left:1.1em;color:#0b1220ad;font-size:.85rem;font-weight:800;line-height:1.7}.timetable-compliance-links{margin-top:14px}.timetable-bottom-controls{display:flex;align-items:center;flex-wrap:wrap;gap:8px}.timetable-tool-button,.timetable-hidden-item{font-family:var(--font-sans);cursor:pointer;-webkit-tap-highlight-color:transparent}.timetable-hidden-panel{margin-bottom:14px;border-radius:18px;background:#ffffffeb;box-shadow:var(--shadow-2),inset 0 0 0 1px #0b122012}.timetable-tool-button{min-height:36px;border:0;border-radius:999px;padding:0 13px;background:#991c2714;color:var(--ink-900);font-size:.84rem;font-weight:900;transition:background-color var(--dur-fast) var(--ease-out),color var(--dur-fast) var(--ease-out),transform var(--dur-fast) var(--ease-out)}.timetable-tool-button:active{transform:scale(.98)}.timetable-bottom-controls{justify-content:flex-end;margin:16px 0 10px}.timetable-hidden-panel{padding:12px}.timetable-hidden-header{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:8px}.timetable-hidden-header h2,.timetable-hidden-header p{margin:0}.timetable-hidden-header h2{font-size:.95rem;font-weight:900}.timetable-hidden-header p{color:#0b122094;font-size:.82rem;font-weight:800}.timetable-hidden-list{display:flex;flex-wrap:wrap;gap:8px}.timetable-hidden-item{border:0;border-radius:12px;padding:8px 11px;display:grid;gap:2px;background:#0b12200f;color:#0b1220;text-align:left}.timetable-hidden-item span{color:#0b12208f;font-size:.72rem;font-weight:900}.timetable-hidden-item strong{font-size:.82rem;font-weight:900}.timetable-empty{margin:0;color:#0b122094;font-size:.86rem;font-weight:800}.timetable-card-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;align-items:start}.timetable-card{position:relative;overflow:hidden;border-radius:30px;background:#fffffffa;box-shadow:0 20px 44px #0b12201f,inset 0 0 0 2px #0b12201a;transition:transform var(--dur-med) var(--ease-out),box-shadow var(--dur-med) var(--ease-out),opacity var(--dur-med) var(--ease-out);cursor:grab;-webkit-user-select:none;user-select:none}.timetable-card:before{content:"";position:absolute;inset:0 auto 0 0;width:8px;background:var(--timetable-railway-color, var(--crimson-500))}.timetable-card.is-dragging{opacity:.38;box-shadow:0 12px 24px #0b122014,inset 0 0 0 2px #0b12201f;cursor:grabbing}.timetable-card-grid.is-sorting .timetable-card:not(.is-dragging){transition:box-shadow var(--dur-med) var(--ease-out),opacity var(--dur-med) var(--ease-out);will-change:transform}.timetable-card.is-pushed{box-shadow:0 24px 52px #0b122024,inset 0 0 0 2px #0b122014;will-change:transform}.timetable-card-drag-ghost{position:fixed;inset:0 auto auto 0;z-index:9999;pointer-events:none;opacity:.98;transform-origin:center;box-shadow:0 42px 84px #0b12203d,0 16px 30px #0b12201f,inset 0 0 0 2px #0b122014;will-change:transform}.timetable-card-drag-ghost.is-settling{transition:transform .18s cubic-bezier(.2,.8,.2,1),opacity var(--dur-fast) var(--ease-out)}body.is-timetable-sorting{cursor:grabbing}.timetable-card-header{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;padding:20px 20px 10px 26px;touch-action:none}.timetable-card-header>div{min-width:0}.timetable-railway{margin:0 0 4px;color:#0b12208f;font-size:.82rem;font-weight:900;line-height:1.3}.timetable-card-header h2{margin:0;font-size:clamp(1.15rem,1.8vw,1.48rem);font-weight:900;line-height:1.25;letter-spacing:0}.timetable-card-header h2 span{display:block;margin-top:3px;color:#0b122094;font-size:.76em;font-weight:800}.timetable-card-body{display:grid;grid-template-columns:minmax(0,.92fr) minmax(0,1fr);gap:16px;padding:0 20px 16px 26px}.timetable-next{min-width:0}.timetable-next-meta{display:flex;align-items:center;flex-wrap:wrap;gap:6px}.timetable-next-meta span{display:inline-flex;align-items:center;min-height:22px;border-radius:999px;padding:0 8px;background:#0b12200f;color:#0b12209e;font-size:.72rem;font-weight:900}.timetable-next-time{margin:8px 0 5px;color:#0b1220;font-family:var(--font-display);font-size:clamp(1.95rem,4.1vw,2.85rem);font-weight:900;font-variant-numeric:tabular-nums;line-height:1.05;letter-spacing:0}.timetable-next-row{display:flex;align-items:center;flex-wrap:wrap;gap:7px}.timetable-train-type{display:inline-flex;align-items:center;min-height:23px;border-radius:6px;padding:0 6px;border:2px solid currentColor;background:#fff;color:#2962ff;font-size:.74rem;font-weight:900;line-height:1;white-space:nowrap}.timetable-train-type.is-fast,.timetable-train-type.is-semi{color:#ff2c4c}.timetable-train-type.is-limited{color:#ba1b1d}.timetable-destination{color:#0b1220bd;font-size:.95rem;font-weight:900}.timetable-next-departure{color:#0b1220;font-size:.95rem;font-weight:900;font-variant-numeric:tabular-nums;line-height:1;white-space:nowrap}.timetable-upcoming{display:grid;border-left:1px solid rgba(11,18,32,.1)}.timetable-upcoming-item{display:grid;grid-template-columns:58px minmax(0,1fr);gap:10px;align-items:center;padding:9px 0 9px 16px;border-top:1px solid rgba(11,18,32,.1)}.timetable-upcoming-item:first-child{border-top:0}.timetable-upcoming-item time{color:#0b122094;font-size:1.04rem;font-weight:900}.timetable-upcoming-item div{min-width:0;display:flex;align-items:center;flex-wrap:wrap;gap:6px;color:#0b1220b3;font-size:.86rem;font-weight:900}.timetable-all{border-top:1px solid rgba(11,18,32,.08);padding:0 20px 14px 26px}.timetable-all summary{padding:12px 0;color:#0b1220a3;font-size:.84rem;font-weight:900;cursor:pointer}.timetable-hour-list{display:grid;gap:8px;max-height:340px;overflow:auto;padding-right:4px;transition:height var(--dur-slow) var(--ease-out),opacity var(--dur-med) var(--ease-out);will-change:height,opacity}.timetable-all.is-animating .timetable-hour-list{overflow:hidden}.timetable-card-footer{display:flex;justify-content:flex-end;padding:0 20px 14px 26px;margin-top:-4px}.timetable-card-hide{appearance:none;border:0;padding:0;background:transparent;color:#0b12206b;font-family:var(--font-sans);font-size:.72rem;font-weight:800;line-height:1.2;letter-spacing:0;cursor:pointer}.timetable-card-hide:hover,.timetable-card-hide:focus-visible{color:#0b1220ad;text-decoration:underline;text-underline-offset:3px}@media(prefers-reduced-motion:reduce){.timetable-hour-list{transition:none}}.timetable-hour-row{display:grid;grid-template-columns:44px minmax(0,1fr);gap:8px;align-items:start}.timetable-hour-label{color:#0b122085;font-size:.78rem;font-weight:900;line-height:28px}.timetable-minute-list{display:flex;align-items:center;flex-wrap:wrap;gap:6px}.timetable-minute-pill{min-height:28px;border-radius:8px;padding:0 7px;display:inline-flex;align-items:center;gap:4px;background:#0b12200d;color:#0b1220b8;font-size:.76rem;font-weight:900}.timetable-minute-pill time{color:#0b1220;font-size:.9rem}.timetable-card-empty,.timetable-card-error{grid-column:1 / -1;padding:28px}.timetable-card-empty h2,.timetable-card-error h2,.timetable-card-empty p,.timetable-card-error p{margin:0}.timetable-card-empty p,.timetable-card-error p{margin-top:8px;color:#0b1220a3;font-weight:800}.timetable-source-note{margin:16px 0 0;color:#0b122094;font-size:.78rem;font-weight:800;line-height:1.7}.timetable-source-note p{margin:0}.timetable-source-note-text{display:grid;gap:2px}.timetable-source-references{display:grid;gap:8px;margin-top:10px}.timetable-source-reference-group{display:grid;gap:14px}.timetable-source-reference-title{margin:0;color:#0b1220ad;font-weight:900}.timetable-source-card .timetable-compliance-links{margin-top:0}.timetable-source-card{margin-top:24px}.timetable-source-card .timetable-source-reference-title{color:var(--ink-900);font-family:var(--font-display);font-size:clamp(1.05rem,1.5vw,1.25rem);line-height:1.3}.timetable-source-reference-category{display:grid;gap:6px}.timetable-source-reference-category h3{margin:0;color:#0b1220ad;font-size:.88rem;font-weight:900;line-height:1.35;letter-spacing:0}.timetable-source-reference-items{display:flex;flex-wrap:wrap;gap:4px 12px;margin:0;padding:0;list-style:none}.timetable-source-reference-items a{color:var(--ink-900);text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:3px}@media(max-width:900px){.timetable-main{width:calc(100% - 28px);margin-top:22px;margin-bottom:36px}.timetable-hero{align-items:flex-start;flex-direction:column;gap:6px}.timetable-bottom-controls{width:100%;justify-content:flex-start}.timetable-card-grid{grid-template-columns:minmax(0,1fr)}.timetable-link-form{grid-template-columns:repeat(2,minmax(0,1fr))}.timetable-primary-link-button{grid-column:1 / -1}.timetable-compliance-grid{grid-template-columns:minmax(0,1fr)}}@media(max-width:720px){.mobile-quick-action{text-decoration:none}.timetable-main{width:calc(100% - 24px);margin-top:18px;margin-bottom:32px}.timetable-hero{margin-bottom:12px;padding:18px 16px;border-radius:20px}.timetable-hero h1{font-size:1.42rem}.timetable-hero p{font-size:.92rem}.timetable-service-status-card,.timetable-shuttle-card{border-radius:18px;padding:16px}.timetable-shuttle-head{display:grid;gap:10px}.timetable-shuttle-actions{justify-content:flex-start}.timetable-shuttle-routes{grid-template-columns:repeat(2,minmax(0,1fr))}.timetable-service-status-rows{grid-template-columns:minmax(0,1fr)}.timetable-service-status-row{min-height:0}.timetable-live-status-card{border-radius:16px;padding:16px}.timetable-live-status-head{flex-direction:column;gap:8px}.timetable-live-status-meta{justify-content:flex-start;text-align:left}.timetable-live-status-rows{grid-template-columns:minmax(0,1fr)}.timetable-live-status-row{min-height:0}.timetable-hidden-panel{border-radius:16px}.timetable-bottom-controls,.timetable-hidden-list{gap:7px}.timetable-tool-button{min-height:34px;padding:0 11px;font-size:.8rem}.timetable-card{border-radius:22px}.timetable-card:before{width:6px}.timetable-card-header{align-items:flex-start;padding:18px 16px 10px 22px}.timetable-card-header h2{font-size:1.18rem}.timetable-card-body{grid-template-columns:minmax(0,1fr);gap:12px;padding:0 16px 14px 22px}.timetable-next-time{font-size:clamp(2.1rem,9.2vw,2.8rem)}.timetable-upcoming{border-top:1px solid rgba(11,18,32,.1);border-left:0}.timetable-upcoming-item{grid-template-columns:54px minmax(0,1fr);padding:10px 0}.timetable-all,.timetable-card-footer{padding:0 16px 14px 22px}.timetable-hour-list{max-height:310px}.timetable-hour-row{grid-template-columns:40px minmax(0,1fr)}.timetable-minute-pill{max-width:100%}.timetable-source-note{font-size:.74rem}.timetable-link-builder,.timetable-compliance-panel{padding:16px 14px;border-radius:18px}.timetable-link-builder-header,.timetable-section-heading{flex-direction:column;gap:8px}.timetable-link-form{grid-template-columns:minmax(0,1fr)}.timetable-link-form select,.timetable-link-form input,.timetable-primary-link-button{min-height:42px}.timetable-official-card{border-radius:18px;padding:16px}.timetable-official-card h3{font-size:1.22rem}}@media(max-width:600px){.timetable-official-card-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.timetable-official-card{padding:14px 12px 14px 14px}.timetable-official-card h3{margin-bottom:10px;font-size:clamp(1rem,4.1vw,1.12rem)}.timetable-official-row{gap:7px;padding-top:9px}.timetable-official-row span{font-size:clamp(.76rem,3.1vw,.86rem)}.timetable-official-actions{gap:6px}.timetable-official-actions a{min-height:34px;padding:0 12px;font-size:clamp(.72rem,2.8vw,.78rem)}.timetable-shuttle-route{grid-template-columns:minmax(0,1fr);gap:10px;padding:13px 11px 13px 15px}.timetable-shuttle-route-head p{font-size:clamp(.66rem,2.6vw,.72rem)}.timetable-shuttle-route-head h3{font-size:clamp(.9rem,3.6vw,1.02rem)}.timetable-shuttle-next span,.timetable-shuttle-countdown span{font-size:clamp(.64rem,2.5vw,.7rem)}.timetable-shuttle-next time{font-size:clamp(.82rem,3.3vw,.92rem)}.timetable-shuttle-next,.timetable-shuttle-countdown{grid-column:1;grid-row:auto;justify-items:start;justify-self:start;text-align:left}.timetable-shuttle-countdown strong{font-size:clamp(1.35rem,6.2vw,1.9rem)}}@media(max-width:430px){.timetable-main{width:calc(100% - 20px)}.timetable-hero{padding:16px 14px}.timetable-card-header{gap:10px}.timetable-railway{font-size:.76rem}.timetable-card-header h2{font-size:1.1rem}.timetable-upcoming-item{grid-template-columns:50px minmax(0,1fr);gap:8px}}@media(min-width:900px){.legal-main{width:85vw}}.map-card{position:relative;flex:1;min-height:0;border-radius:var(--card-radius);overflow:hidden;background:var(--map-card-bg);box-shadow:var(--shadow-4),inset 0 0 0 1px #ffffffb3}.viewer{position:relative;width:100%;height:100%;overflow:hidden;touch-action:none;cursor:grab}.viewer.is-editing,.viewer.is-editing:active{cursor:crosshair}.viewer:active{cursor:grabbing}.viewer.is-editing:active{cursor:crosshair}.canvas-layer{position:absolute;top:0;left:0;display:block;transform-origin:0 0;will-change:transform,width,height;backface-visibility:hidden;pointer-events:none}.map-asset{position:relative;width:100%;height:100%;overflow:hidden;border-radius:18px;background:#fff;box-shadow:0 16px 40px #0b122029,0 0 0 1px #0b12200f}.highlight-layer,.ring-layer,.editor-layer{position:absolute;inset:0;pointer-events:none}.floor-svg{display:block;width:100%;height:100%;background:#fff;-webkit-user-select:none;user-select:none;-webkit-user-drag:none;pointer-events:none;filter:saturate(.82) contrast(.97) brightness(1.012);transition:opacity var(--dur-med) var(--ease-out)}@media(prefers-reduced-motion:reduce){.floor-svg{transition:none}}.search-highlight-pin{position:absolute;width:18px;height:18px;margin-left:-9px;margin-top:-18px;border-radius:50%;background:#ff5a3c;box-shadow:0 0 0 4px #ff5a3c2e,0 10px 18px #0b12202e;animation:pulse-highlight 1.8s ease-in-out infinite}.search-highlight-pin:after{content:"";position:absolute;left:50%;bottom:-5px;width:10px;height:10px;background:inherit;transform:translate(-50%) rotate(45deg);border-radius:2px}.facility-ring{position:absolute;transform:translate(-50%,-50%);border-radius:50%;border:4px solid rgba(67,200,60,.96);background:transparent;box-shadow:0 0 0 3px #ffffffeb,0 0 0 6px #43c83c2e,0 6px 14px #0b12202e}.facility-ring.color-red{border-color:#e5395af7;box-shadow:0 0 0 3px #ffffffeb,0 0 0 6px #e5395a2e,0 6px 14px #0b12202e}.facility-ring.color-blue{border-color:#2196f3f7;box-shadow:0 0 0 3px #ffffffeb,0 0 0 6px #2196f32e,0 6px 14px #0b12202e}.facility-ring.color-water-server{border-color:#21a0db;box-shadow:0 0 0 3px #ffffffeb,0 0 0 6px #21a0db2e,0 6px 14px #0b12202e}.facility-ring.color-yellow{border-color:#f0b400fa;box-shadow:0 0 0 3px #ffffffeb,0 0 0 6px #f0b40038,0 6px 14px #0b12202e}.editor-pending-dot{position:absolute;width:16px;height:16px;margin-left:-8px;margin-top:-16px;border-radius:50%;background:#ff5a3c;box-shadow:0 0 0 5px #ff5a3c2e;pointer-events:none}.editor-pending-dot:after{content:"";position:absolute;left:50%;bottom:-5px;width:10px;height:10px;background:#ff5a3c;transform:translate(-50%) rotate(45deg);border-radius:2px}.editor-guide-pin{position:absolute;width:16px;height:16px;margin-left:-8px;margin-top:-16px;border:2px dashed rgba(153,28,39,.44);border-radius:50%;background:#991c270f;box-shadow:0 0 0 2px #991c270a;pointer-events:none;z-index:1}.editor-guide-pin:after{content:"";position:absolute;left:50%;bottom:-5px;width:9px;height:9px;background:inherit;border-right:2px dashed rgba(153,28,39,.44);border-bottom:2px dashed rgba(153,28,39,.44);transform:translate(-50%) rotate(45deg);border-radius:1px;box-sizing:border-box}.editor-guide-pin.is-active,.editor-guide-pin.is-pending{border-color:#ff5a3c8f;background:#ff5a3c14;box-shadow:0 0 0 2px #ff5a3c0f}.editor-guide-pin.is-active:after,.editor-guide-pin.is-pending:after{border-right-color:#ff5a3c8f;border-bottom-color:#ff5a3c8f}.editor-pin-button{position:absolute;width:18px;height:18px;margin-left:-9px;margin-top:-18px;border:0;border-radius:50%;background:var(--accent);box-shadow:0 0 0 4px var(--accent-glow),0 10px 18px #0b12202e;pointer-events:auto;z-index:3}.editor-pin-button:after{content:"";position:absolute;left:50%;bottom:-5px;width:10px;height:10px;background:inherit;transform:translate(-50%) rotate(45deg);border-radius:2px}.editor-pin-button.is-active{background:#ff5a3c;box-shadow:0 0 0 4px #ff5a3c2e,0 10px 18px #0b122033}.editor-ring-button{position:absolute;transform:translate(-50%,-50%);border:2px dashed rgba(120,255,60,.64);border-radius:50%;background:#ffffff29;box-shadow:inset 0 0 0 2px #ffffffb8,0 0 0 2px #78ff3c1f;pointer-events:auto;z-index:2}.editor-ring-button.color-red{border-color:#ff3a60ad;box-shadow:inset 0 0 0 2px #ffffffb8,0 0 0 2px #ff3a601f}.editor-ring-button.color-blue{border-color:#29c4ffad;box-shadow:inset 0 0 0 2px #ffffffb8,0 0 0 2px #29c4ff1f}.editor-ring-button.color-water-server{border-color:#21a0db;box-shadow:inset 0 0 0 2px #ffffffb8,0 0 0 2px #21a0db24}.editor-ring-button.color-yellow{border-color:#ffe128eb;background:#fff3;box-shadow:inset 0 0 0 2px #fff4b8eb,0 0 0 2px #ffe12829}.editor-ring-button:after{content:"";position:absolute;top:50%;left:50%;width:10px;height:10px;transform:translate(-50%,-50%);border-radius:50%;background:#78ff3c33;box-shadow:0 0 0 3px #78ff3c1f}.editor-ring-button.color-red:after{background:#ff3a6033;box-shadow:0 0 0 3px #ff3a601f}.editor-ring-button.color-blue:after{background:#29c4ff33;box-shadow:0 0 0 3px #29c4ff1f}.editor-ring-button.color-water-server:after{background:#21a0db38;box-shadow:0 0 0 3px #21a0db1f}.editor-ring-button.color-yellow:after{background:#ffec78f0;box-shadow:0 0 0 3px #ffe12829}.editor-ring-button.is-active{border-color:#ff5a3cad;box-shadow:inset 0 0 0 2px #ffffffe0,0 0 0 3px #ff5a3c24,0 0 18px #ff5a3c3d}.editor-ring-button.is-active:after{background:#ff5a3c38;box-shadow:0 0 0 3px #ff5a3c1f}.editor-pin-popover{position:absolute;min-width:160px;max-width:min(220px,46vw);transform:translate(-50%,calc(-100% - 22px));padding:10px 12px;border-radius:14px;background:#0b1220e6;color:#fff;box-shadow:0 18px 36px #0b12203d;pointer-events:none;z-index:2}.editor-pin-popover-label{font-size:.84rem;font-weight:800;letter-spacing:.03em}.editor-pin-popover-meta{margin-top:4px;color:#ffffffb8;font-size:.72rem;line-height:1.5}.status-pill{position:absolute;top:18px;left:18px;z-index:2;padding:10px 14px;border-radius:999px;background:#0b1220b8;color:#fff;font-size:.9rem;font-weight:700;letter-spacing:.03em;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}body[data-app-mode=editor]{overflow-x:hidden;overflow-y:auto;overscroll-behavior-y:auto}body[data-app-mode=editor] .app-shell{min-height:auto;overflow:visible}body[data-app-mode=editor] .topbar{position:relative;max-height:max(0px,calc(100dvh - 240px));overflow-y:auto}body[data-app-mode=editor] .map-stage{overflow:visible}body[data-app-mode=editor] .map-card{min-height:100%}@keyframes pulse-highlight{0%,to{transform:scale(1);opacity:.92}50%{transform:scale(1.06);opacity:1}}@media(max-width:720px){:root{--shell-padding: 10px;--card-radius: 20px;--topbar-padding-top: 12px;--topbar-padding-side: 12px;--topbar-padding-bottom: 10px;--zoom-offset-right: 12px;--zoom-offset-bottom: 12px}.topbar{--mobile-facility-toggle-size: 54px;--mobile-facility-toggle-gap: 6px;--mobile-topbar-glass-padding-block: 14px;--mobile-topbar-glass-padding-inline: 16px;--mobile-search-controls-gap: 8px;--mobile-topbar-gap: 10px;gap:var(--mobile-topbar-gap)}.topbar-glass{gap:12px;padding:var(--mobile-topbar-glass-padding-block) var(--mobile-topbar-glass-padding-inline);border-radius:20px}.editor-header-row,.topbar-title-row{align-items:center}.editor-header-actions{gap:8px}.topbar-actions{gap:6px}.access-link{padding:4px 8px;font-size:.74rem;border-radius:5px}.lang-toggle{min-width:82px;min-height:38px;padding:5px 2px;font-size:1.12rem;gap:8px}.site-menu-toggle{--site-menu-line-width: 20px;--site-menu-line-gap: 7px;width:38px;height:38px;border-radius:8px}.site-menu-panel{min-width:180px}.about-dialog-backdrop{padding:14px}.about-dialog{border-radius:20px}.about-dialog-header{padding:16px 16px 10px}.about-dialog-body{padding:0 16px 10px}.about-dialog-footer,.contact-form-dialog-body{padding:0 16px 18px}.contact-form-frame{min-height:420px}.search-box{grid-column:1;grid-row:1;height:var(--mobile-facility-toggle-size);min-height:0;align-self:start;margin-top:calc(var(--mobile-facility-toggle-size) + var(--mobile-facility-toggle-gap));padding:0 6px 0 14px}.search-controls{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:start;gap:var(--mobile-search-controls-gap)}.mobile-quick-actions{display:grid;grid-column:1;grid-row:1;grid-auto-flow:column;grid-auto-columns:minmax(0,1fr);align-self:start;width:100%;height:var(--mobile-facility-toggle-size);min-width:0;overflow:hidden;border-radius:10px;background:#fff;box-shadow:0 10px 22px #0b12200f}.mobile-quick-action{display:inline-flex;align-items:center;justify-content:center;gap:5px;min-width:0;height:var(--mobile-facility-toggle-size);padding:0 6px;border:0;border-radius:0;background:transparent;color:var(--ink-900);font:inherit;font-size:.88rem;font-weight:900;line-height:1;cursor:pointer;transition:background-color var(--dur-fast) var(--ease-out),color var(--dur-fast) var(--ease-out),transform var(--dur-fast) var(--ease-out)}.mobile-quick-action-icon{width:16px;height:16px;display:block;flex:0 0 16px;color:#000;fill:none;object-fit:contain;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}.mobile-quick-action[href="/food/"] .mobile-quick-action-icon{width:19px;height:19px;flex-basis:19px}.mobile-quick-action-icon-bus{width:21px;height:21px;flex-basis:21px}.mobile-quick-action-icon-bus+.mobile-quick-action-icon{margin-left:-5px}.mobile-quick-action span{min-width:0;overflow:hidden;color:#000;text-overflow:ellipsis;white-space:nowrap}.mobile-quick-action+.mobile-quick-action{border-left:1px solid rgba(134,13,31,.12)}.mobile-quick-action:active{transform:scale(.98)}.mobile-quick-action:focus-visible{outline:3px solid rgba(134,13,31,.28);outline-offset:-3px}.search-icon-actions{grid-column:2;grid-row:1;display:grid;grid-template-columns:repeat(2,var(--mobile-facility-toggle-size));gap:var(--mobile-facility-toggle-gap)}.search-icon-button{width:var(--mobile-facility-toggle-size);height:var(--mobile-facility-toggle-size);border-radius:16px}.search-icon-image{width:36px;height:36px}.search-input{height:100%;font-size:.96rem;padding-block:0;line-height:1}.search-results{left:0;right:0;max-height:min(46vh,280px);padding:8px;border-radius:18px}.search-result{padding:11px 12px}.editor-grid{grid-template-columns:minmax(0,1fr)}.editor-caption{width:100%}.floor-tab-stack{z-index:30;width:calc(100% - var(--mobile-topbar-glass-padding-inline) - var(--mobile-topbar-glass-padding-inline) - var(--mobile-facility-toggle-size) - var(--mobile-facility-toggle-size) - var(--mobile-facility-toggle-gap) - var(--mobile-search-controls-gap));grid-template-rows:var(--mobile-facility-toggle-size);margin-left:var(--mobile-topbar-glass-padding-inline);margin-right:auto;align-self:start;justify-self:start;gap:var(--mobile-facility-toggle-gap);margin-top:calc(0px - var(--mobile-facility-toggle-size) - var(--mobile-topbar-gap) - var(--mobile-topbar-glass-padding-block))}.mobile-floor-select{display:flex;align-items:center;gap:8px;width:100%;height:var(--mobile-facility-toggle-size)}.mobile-floor-label{color:var(--ink-800);flex-shrink:0;margin-left:0}.mobile-floor-toggle{flex:1 1 auto;min-width:0;height:var(--mobile-facility-toggle-size);font-size:.95rem}.floor-tabs,.floor-tabs-secondary{display:none}.floor-tabs::-webkit-scrollbar{display:none}.floor-tab{width:100%;height:var(--mobile-facility-toggle-size);display:inline-flex;align-items:center;justify-content:center;min-width:0;border-radius:10px;padding:0 4px;font-size:.95rem;line-height:1;scroll-snap-align:start}.floor-tab-wide{min-width:0;font-size:clamp(.72rem,2.9vw,.88rem);letter-spacing:0}.map-stage{padding-inline:0}.site-footer{padding-inline:12px;font-size:.72rem}.site-footer-links{gap:14px}.legal-header-inner{width:100%}.legal-main{width:calc(100% - 28px);margin-top:24px;margin-bottom:34px}.access-main{width:calc(100% - 28px)}.legal-hero{margin-bottom:16px;padding:22px 20px 20px}.legal-hero h1{font-size:1.42rem}.legal-content{padding:24px 20px 26px}.access-content{gap:24px}.access-section+.access-section{padding-top:24px}.access-overview-grid,.access-route-grid{grid-template-columns:minmax(0,1fr)}.access-panel,.access-route-group{padding:18px}.legal-section h2{font-size:1rem}.legal-section p,.legal-section li{font-size:.93rem}.map-card{border-radius:22px 22px 0 0}.status-pill{top:14px;left:14px;padding:9px 12px;font-size:.82rem}.map-asset{border-radius:14px}body[data-app-mode=editor] .map-stage{padding-inline:var(--shell-padding)}}@media(max-width:430px){.topbar{--mobile-facility-toggle-size: 48px;--mobile-search-controls-gap: 6px}.app-title{font-size:1.05rem}.editor-header-row{gap:8px}.editor-logout-button{padding:9px 12px;font-size:.78rem}.lang-toggle{min-width:76px;min-height:36px;padding:4px 2px;font-size:1.04rem;gap:7px}.topbar-actions{gap:4px}.site-menu-toggle{--site-menu-line-width: 19px;--site-menu-line-gap: 7px;width:36px;height:36px}.about-dialog-title{font-size:1.02rem}.about-dialog-body p{font-size:.9rem}.contact-form-frame{min-height:380px}.contact-form-fallback{font-size:.9rem}.legal-header-inner{width:100%}.legal-menu summary{width:36px;height:36px}.legal-menu-panel{min-width:168px}.legal-main{width:calc(100% - 24px);margin-top:18px;margin-bottom:26px}.legal-hero,.legal-content{border-radius:12px}.legal-hero{padding:20px 18px 18px}.legal-hero h1{font-size:1.28rem}.legal-hero p,.legal-updated,.legal-section p,.legal-section li{font-size:.9rem}.legal-content{padding:22px 18px 24px}.toilet-ring-legend{font-size:.72rem}.search-clear{width:34px;height:34px;font-size:1.2rem}.search-controls{--mobile-search-controls-gap: 6px;gap:var(--mobile-search-controls-gap)}.search-icon-actions{grid-template-columns:repeat(2,var(--mobile-facility-toggle-size));gap:var(--mobile-facility-toggle-gap)}.search-icon-button{width:var(--mobile-facility-toggle-size);height:var(--mobile-facility-toggle-size);border-radius:14px}.search-icon-image{width:33px;height:33px}.search-feedback{font-size:.8rem}.editor-panel{padding:12px}.editor-entry{align-items:flex-start;flex-direction:column}.editor-entry-actions{width:100%}.floor-tab{height:var(--mobile-facility-toggle-size);min-width:0;padding-block:0}.floor-tab-stack{width:calc(100% - var(--mobile-topbar-glass-padding-inline) - var(--mobile-topbar-glass-padding-inline) - var(--mobile-facility-toggle-size) - var(--mobile-facility-toggle-size) - var(--mobile-facility-toggle-gap) - var(--mobile-search-controls-gap));margin-top:calc(0px - var(--mobile-facility-toggle-size) - var(--mobile-topbar-gap) - var(--mobile-topbar-glass-padding-block))}.floor-tab-wide{min-width:0;font-size:.82rem}.status-pill{max-width:calc(100% - 84px)}}@media(max-height:500px)and (orientation:landscape){:root{--shell-padding: 8px;--card-radius: 16px;--topbar-padding-top: 8px;--topbar-padding-side: 10px;--topbar-padding-bottom: 8px}.topbar{--mobile-topbar-gap: 8px;gap:var(--mobile-topbar-gap)}.app-title{font-size:1rem}.editor-logout-button{padding:8px 11px;font-size:.76rem}.search-results{max-height:min(62vh,220px)}.editor-panel{gap:10px;padding:10px}.editor-grid{grid-template-columns:minmax(0,1fr)}.floor-tabs{display:flex;gap:8px;overflow-x:auto;scrollbar-width:none}.floor-tabs::-webkit-scrollbar{display:none}.floor-tab{flex:0 0 72px;min-width:72px;padding:9px 8px}.floor-tab-wide{flex-basis:136px;min-width:136px;font-size:.84rem}.status-pill{top:10px;left:10px;padding:8px 10px;font-size:.78rem}}@media(max-width:720px)and (max-height:500px)and (orientation:landscape){.floor-tabs,.floor-tabs-secondary{display:none}.floor-tab-stack{width:calc(100% - var(--mobile-topbar-glass-padding-inline) - var(--mobile-topbar-glass-padding-inline) - var(--mobile-facility-toggle-size) - var(--mobile-facility-toggle-size) - var(--mobile-facility-toggle-gap) - var(--mobile-search-controls-gap));gap:var(--mobile-facility-toggle-gap);margin-top:calc(0px - var(--mobile-facility-toggle-size) - var(--mobile-topbar-gap) - var(--mobile-topbar-glass-padding-block))}.floor-tab{width:100%;height:var(--mobile-facility-toggle-size);min-width:0;border-radius:10px;padding:0 4px}.floor-tab-wide{min-width:0;font-size:.84rem}}body[data-app-mode=viewer]{overflow:hidden}body[data-app-mode=viewer] .app-shell{min-height:100dvh}body[data-app-mode=viewer] .map-stage{position:fixed;inset:0;z-index:1;height:100dvh;min-height:100dvh;padding:0}body[data-app-mode=viewer] .map-card{border-radius:0;box-shadow:none}body[data-app-mode=viewer] .topbar{position:fixed;top:0;left:0;right:0;z-index:20;background:none;border-bottom:0;-webkit-backdrop-filter:none;backdrop-filter:none;pointer-events:none}body[data-app-mode=viewer] .topbar-glass,body[data-app-mode=viewer] .floor-tab-stack,body[data-app-mode=viewer] .toilet-ring-legend{pointer-events:auto}body[data-app-mode=viewer] .topbar-glass{background:#ffffffd6;-webkit-backdrop-filter:var(--glass-blur);backdrop-filter:var(--glass-blur);box-shadow:0 14px 34px #0b122024,inset 0 0 0 1px #fff9}body[data-app-mode=viewer] .toilet-ring-legend{justify-self:start;padding:6px 12px;border-radius:999px;background:#ffffffd6;-webkit-backdrop-filter:var(--glass-blur);backdrop-filter:var(--glass-blur);box-shadow:0 8px 20px #0b12201a}body[data-app-mode=viewer] .site-footer{position:fixed;left:0;right:0;bottom:0;z-index:20;padding:20px 18px calc(8px + env(safe-area-inset-bottom,0px));background:linear-gradient(180deg,#f6f7fa00,#f6f7fab3 60%);color:#0b12209e;pointer-events:none}body[data-app-mode=viewer] .site-footer a{pointer-events:auto}@media(min-width:721px){body[data-app-mode=viewer] .floor-tab-stack{margin-top:10px;padding:7px;border-radius:16px;background:#ffffffd6;-webkit-backdrop-filter:var(--glass-blur);backdrop-filter:var(--glass-blur);box-shadow:0 14px 34px #0b122024,inset 0 0 0 1px #fff9}}@media(max-width:720px){body[data-app-mode=viewer] .map-asset{border-radius:0;box-shadow:none}body[data-app-mode=viewer] .floor-svg{filter:none}body[data-app-mode=viewer] .topbar-glass,body[data-app-mode=viewer] .toilet-ring-legend{background:#fffffff0;-webkit-backdrop-filter:none;backdrop-filter:none}body[data-app-mode=viewer] .floor-tab-stack{background:transparent;-webkit-backdrop-filter:none;backdrop-filter:none}body[data-app-mode=viewer] .facility-ring,body[data-app-mode=viewer] .facility-ring.color-red,body[data-app-mode=viewer] .facility-ring.color-blue,body[data-app-mode=viewer] .facility-ring.color-water-server,body[data-app-mode=viewer] .facility-ring.color-yellow{box-shadow:0 0 0 2px #ffffffe6,0 4px 10px #0b122024}}
