/* Hotel styles.css and workspace.css own all shared tokens and login controls. */
body { margin: 0; }
[hidden] { display: none !important; }
.login-shell:has(#platform-view:not([hidden])) { width: min(100% - 40px, 720px); }
.portal-account { display: flex; justify-content: space-between; align-items: center; gap: 16px; margin-bottom: 24px; color: var(--muted); overflow-wrap: anywhere; }
.portal-account .quiet { flex-shrink: 0; }
.portal-title { margin: 0 0 12px; font-size: 21px; font-weight: 600; line-height: 1.3; }
.portal-intro, .portal-note { color: var(--muted); line-height: 1.6; }
.portal-intro { margin: 0 0 24px; }
.portal-note { margin: 24px 0 0; font-size: 12px; }
.portal-platforms { border: 0; }
.platform { display: flex; justify-content: space-between; align-items: center; gap: 20px; padding: 22px 12px; color: var(--ink); text-decoration: none; }
.platform:hover { background: var(--hover-background); }
.platform:focus-visible { outline: 2px solid var(--focus); outline-offset: 3px; }
.platform h2 { margin: 0 0 5px; font-size: 18px; line-height: 1.4; font-weight: 600; }
.platform p { margin: 0; font-size: 14px; color: var(--muted); }
.platform svg { width: 22px; height: 22px; flex-shrink: 0; fill: none; stroke: currentColor; stroke-width: 1.7; }
#status { color: var(--danger); margin: 16px 0 0; min-height: 20px; font-size: 14px; line-height: 1.5; }
@media (max-width: 700px) {
  .login-shell:has(#platform-view:not([hidden])) { width: min(100% - 32px, 720px); }
  .portal-account { align-items: flex-start; }
  .platform { padding: 20px 0; }
}

/* Platform chooser extends the hotel workbench using its shared theme tokens. */
body[data-platform=portal] #platforms>.platform-body{padding-top:12px}
.portal-launcher{width:min(100%,1040px);padding:12px 0 32px}
.portal-launcher-heading{margin-bottom:32px;max-width:680px}
.portal-eyebrow{margin:0 0 16px;color:var(--muted);font-size:11px;letter-spacing:.12em;font-weight:600}
.portal-launcher h2{margin:0 0 12px;font-size:28px;font-weight:600;line-height:1.3;letter-spacing:-.02em;color:var(--ink)}
.portal-description{margin:0;color:var(--ink-soft);font-size:15px;line-height:1.7}
.portal-platform-list{border:0}
.portal-platform-entry{display:flex;align-items:center;gap:28px;padding:32px 20px;text-decoration:none;color:var(--ink);border-radius:8px;transition:background var(--motion-fast,140ms)}
.portal-platform-entry:hover{background:var(--hover-background)}
.portal-platform-entry:focus-visible{outline:2px solid var(--focus);outline-offset:3px}
.portal-platform-icon{display:grid;place-items:center;flex:0 0 64px;width:64px;height:64px;border-radius:12px;background:var(--surface-subtle)}
.portal-platform-icon svg{width:30px;height:30px;fill:none;stroke:currentColor;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round}
.portal-platform-copy{display:block;flex:1;min-width:0}
.portal-platform-brand{display:block;margin-bottom:6px;font-size:10px;letter-spacing:.1em;color:var(--muted);font-weight:600}
.portal-platform-entry h3{margin:0 0 8px;font-size:21px;line-height:1.3;font-weight:600;color:var(--ink)}
.portal-platform-description{display:block;color:var(--ink-soft);font-size:14px;line-height:1.7}
.portal-platform-tags{display:block;margin-top:12px;color:var(--muted);font-size:12px;line-height:1.6}
.portal-platform-action{display:flex;gap:12px;align-items:center;font-size:13px;font-weight:550;white-space:nowrap}
.portal-platform-action svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round}
.portal-session-note{margin:24px 0 0;color:var(--muted);font-size:12px;line-height:1.8;max-width:75ch}
@media(max-width:700px){.portal-launcher{padding-top:0}.portal-launcher h2{font-size:24px}.portal-platform-entry{padding:24px 12px;gap:16px;flex-wrap:wrap}.portal-platform-icon{flex-basis:48px;width:48px;height:48px}.portal-platform-icon svg{width:25px;height:25px}.portal-platform-entry h3{font-size:19px}.portal-platform-action{margin-left:64px}.portal-platform-copy{flex-basis:calc(100% - 64px)}.portal-launcher-heading{margin-bottom:24px}}
@media(prefers-reduced-motion:reduce){.portal-platform-entry{transition:none}}
#merchant-password-form{display:grid;grid-template-columns:minmax(0,1fr);gap:20px;width:100%;max-width:640px;align-items:start}
#merchant-password-form>p{margin:0;color:var(--muted);font-size:14px;line-height:1.7}
#merchant-password-form label{display:block;margin:0;min-width:0;font-size:14px;line-height:1.5}
#merchant-password-form input:not([type=checkbox]),#merchant-password-form textarea{display:block;width:100%;margin-top:8px;box-sizing:border-box;font-size:16px;padding:12px 14px;border-radius:12px}
#merchant-password-form input:not([type=checkbox]){height:48px;min-height:48px}
#merchant-password-form textarea{min-height:112px;resize:vertical}
#merchant-password-form .merchant-password-check{display:flex;align-items:flex-start;gap:12px;font-size:14px;line-height:1.7}
#merchant-password-form input[type=checkbox]{width:18px;height:18px;min-height:0;flex-shrink:0;margin:3px 0 0}
#merchant-password-form>button{justify-self:start;align-self:start;min-height:48px;height:auto;padding:12px 24px;font-size:15px;border-radius:12px}
#merchant-password-form>[role=status]:empty{display:none}
@media(max-width:700px){#merchant-password-form{gap:18px}#merchant-password-form>button{width:100%;justify-self:stretch}}
#merchant-password-form .merchant-password-check{justify-content:flex-start}
#merchant-password-form input[type=checkbox]{flex:0 0 18px;max-width:18px;align-self:flex-start}

/* Match hotel knowledge rows; override the global filled-button hover. */
body[data-platform="chuka"] #workspace button.shop-row{background:var(--panel)}
body[data-platform="chuka"] #workspace button.shop-row:hover:not(:disabled),
body[data-platform="chuka"] #workspace button.shop-row:focus-visible{background:var(--navy-soft)!important;color:var(--ink)!important;box-shadow:none!important;border-color:transparent}
html[data-theme="light"] body[data-platform="chuka"] #workspace button.shop-row:hover:not(:disabled),
html[data-theme="light"] body[data-platform="chuka"] #workspace button.shop-row:focus-visible{background:var(--hover-background)!important}

/* 店铺归属 and 网站管理 lists: flat rows split by spec hairlines, no card fill (2026-10-22). */
body[data-platform="chuka"] #workspace:is([data-view="ownership"],[data-view="websites"]) .shop-list{gap:0;border-top:1px solid var(--line)}
body[data-platform="chuka"] #workspace:is([data-view="ownership"],[data-view="websites"]) button.shop-row{min-height:0;padding:16px 12px;border:0;border-bottom:1px solid var(--line);border-radius:0;background:transparent}
body[data-platform="chuka"] #workspace:is([data-view="ownership"],[data-view="websites"]) button.shop-row.selected{background:var(--navy-soft)}

/* Keep the containing page still while its drawer enters and leaves. */
body[data-platform="chuka"] .step:has(#workspace){animation:none!important;transform:none!important}
body[data-platform="chuka"] #workspace #shop-detail{border:0;background:color-mix(in srgb,var(--paper) 82%,transparent);backdrop-filter:blur(24px) saturate(140%);-webkit-backdrop-filter:blur(24px) saturate(140%);box-sizing:border-box}
@supports not (backdrop-filter:blur(1px)){body[data-platform="chuka"] #workspace #shop-detail{background:var(--paper)}}
body[data-platform="chuka"] #workspace #detail-result:empty{display:none}

body[data-platform="chuka"] #workspace #shop-detail:focus{outline:none}

/* Use the hotel's progressive glass above every restaurant detail view. */
body[data-platform="chuka"] #workspace .detail-drawer{--detail-inset:24px;scroll-padding-top:96px}
body[data-platform="chuka"] #workspace .detail-drawer>.detail-heading{
  position:sticky;top:calc(-1 * var(--detail-inset));z-index:1;isolation:isolate;
  margin:calc(-1 * var(--detail-inset)) calc(-1 * var(--detail-inset)) -16px;
  padding:var(--detail-inset) var(--detail-inset) 16px;background:var(--paper);
}
@supports ((backdrop-filter:blur(1px)) or (-webkit-backdrop-filter:blur(1px))){
  body[data-platform="chuka"] #workspace .detail-drawer>.detail-heading{background:transparent}
  body[data-platform="chuka"] #workspace .detail-drawer>.detail-heading::before,
  body[data-platform="chuka"] #workspace .detail-drawer>.detail-heading::after{
    content:"";position:absolute;inset:0 0 -18px;z-index:-1;pointer-events:none;
    background:linear-gradient(to bottom,color-mix(in srgb,var(--panel-tint) 16%,transparent),color-mix(in srgb,var(--block-surface, var(--panel-tint)) 4%,transparent) 55%,transparent);
  }
  body[data-platform="chuka"] #workspace .detail-drawer>.detail-heading::before{
    -webkit-backdrop-filter:blur(24px) saturate(150%);backdrop-filter:blur(24px) saturate(150%);
    -webkit-mask-image:linear-gradient(to bottom,#000 0%,rgb(0 0 0 / 90%) 20%,rgb(0 0 0 / 45%) 55%,transparent 90%);
    mask-image:linear-gradient(to bottom,#000 0%,rgb(0 0 0 / 90%) 20%,rgb(0 0 0 / 45%) 55%,transparent 90%);
  }
  body[data-platform="chuka"] #workspace .detail-drawer>.detail-heading::after{
    -webkit-backdrop-filter:blur(10px) saturate(140%);backdrop-filter:blur(10px) saturate(140%);
    -webkit-mask-image:linear-gradient(to bottom,rgb(0 0 0 / 55%),rgb(0 0 0 / 75%) 35%,rgb(0 0 0 / 30%) 70%,transparent 100%);
    mask-image:linear-gradient(to bottom,rgb(0 0 0 / 55%),rgb(0 0 0 / 75%) 35%,rgb(0 0 0 / 30%) 70%,transparent 100%);
  }
}
@media(max-width:700px){body[data-platform="chuka"] #workspace .detail-drawer{--detail-inset:20px}}
@media(prefers-reduced-transparency:reduce),(prefers-contrast:more){
  body[data-platform="chuka"] #workspace #shop-detail,
  body[data-platform="chuka"] #workspace .detail-drawer>.detail-heading{background:var(--paper);-webkit-backdrop-filter:none;backdrop-filter:none}
  body[data-platform="chuka"] #workspace .detail-drawer>.detail-heading::before,
  body[data-platform="chuka"] #workspace .detail-drawer>.detail-heading::after{display:none}
}

.merchant-recovery-alert{display:block;margin-bottom:24px;padding:16px;background:var(--surface-subtle);border-radius:12px;overflow-wrap:anywhere}
#merchant-recovery-queue{margin-bottom:32px;overflow-wrap:anywhere}
#merchant-recovery-queue article{padding:16px;margin-bottom:12px;border-radius:12px;background:var(--block-surface, var(--panel-tint))}

/* The account status form sits under the password reset form and uses the same stacked layout. */
body[data-platform="chuka"] .merchant-password-form:not(#merchant-password-form){display:grid;grid-template-columns:minmax(0,1fr);gap:16px;width:100%;max-width:640px;margin-top:48px}
body[data-platform="chuka"] .merchant-password-form:not(#merchant-password-form) h3,body[data-platform="chuka"] .merchant-password-form:not(#merchant-password-form) p{margin:0}
body[data-platform="chuka"] .merchant-password-form:not(#merchant-password-form) label{display:block;margin:0}
body[data-platform="chuka"] .merchant-password-form:not(#merchant-password-form) input,body[data-platform="chuka"] .merchant-password-form:not(#merchant-password-form) textarea{display:block;width:100%;margin-top:8px;box-sizing:border-box}
body[data-platform="chuka"] .merchant-password-form:not(#merchant-password-form) .actions{display:flex;flex-wrap:wrap;gap:12px;margin:0}
body[data-platform="chuka"] #merchant-password-form>button.quiet{margin-top:-8px}

/* The merchant login item opens a separate site in a new tab; the arrow says so before the click. */
body[data-platform="chuka"] .workflow-nav nav a[target="_blank"] .nav-external{width:12px;height:12px;margin-left:auto;opacity:.6;flex:none}

/* Platform picker (2026-10-20): each platform is its own card on the shared block surface, with space between; no divider lines. */
.portal-platform-list{display:grid;gap:12px}
.portal-platform-entry{padding:28px 24px;border-radius:16px;background:var(--block-surface, var(--panel-tint))}
.portal-platform-icon{background:var(--paper)}
@media(max-width:700px){.portal-platform-entry{padding:20px 16px}}
/* Password reset and account status are two separate tasks: each form sits on its own card. */
body[data-platform="chuka"] .merchant-password-form{padding:24px;border-radius:16px;background:var(--block-surface, var(--panel-tint));box-sizing:border-box}
body[data-platform="chuka"] .merchant-password-form:not(#merchant-password-form){margin-top:24px}

/* Hint lines left empty on purpose take no space. */
.portal-intro:empty,.portal-note:empty,.portal-session-note:empty,#portal-description:empty{display:none}
