/* Shared header search owns its size and control states on every surface. */
html body:is(.public-site,.app-client) .public-header-search{display:block;flex:0 1 360px;width:min(100%,360px);min-width:0;max-width:360px;margin:0}
html body:is(.public-site,.app-client) .public-header-search-control{display:flex;align-items:center;gap:8px;width:100%;height:36px;min-height:36px;margin:0;padding:0 10px;border:1px solid var(--chrome-line);border-radius:8px;background:var(--chrome-hover);color:var(--chrome-muted);cursor:text;transition:border-color 120ms ease,box-shadow 120ms ease}
html body:is(.public-site,.app-client) .public-header-search-control:hover{border-color:var(--chrome-muted)}
html body:is(.public-site,.app-client) .public-header-search-control:focus-within{outline:0;border-color:var(--chrome-text);box-shadow:inset 0 0 0 1px var(--chrome-text)}
html body:is(.public-site,.app-client) .public-header-search-control>svg{flex:none;width:16px;height:16px}
html body:is(.public-site,.app-client) .public-header-search-control>input{appearance:none;flex:1;min-width:0;width:100%;height:34px;min-height:0;padding:0;margin:0;border:0;border-radius:0;outline:0;box-shadow:none;background:transparent;color:var(--chrome-text);font:400 13px/1.5 var(--gv-font-sans)}
html body:is(.public-site,.app-client) .public-header-search-control>input::placeholder{color:var(--chrome-muted);opacity:1}
html body:is(.public-site,.app-client) .public-header-search-control>input:focus{outline:0;border:0;box-shadow:none}
html body:is(.public-site,.app-client) .public-header-search-control>button{display:grid;place-items:center;flex:none;width:24px;height:26px;margin:0;padding:0;border:0;border-radius:5px;background:transparent;color:var(--chrome-text)}
html body:is(.public-site,.app-client) .public-header-search-trigger{display:inline-grid;place-items:center;flex:none;width:36px;height:36px;min-width:36px;min-height:36px;margin:0;padding:0;border:0;border-radius:8px;background:transparent;color:var(--chrome-text);cursor:pointer}
html body:is(.public-site,.app-client) .public-header-search-trigger:hover{background:var(--chrome-hover)}
html body:is(.public-site,.app-client) .public-header-search-trigger:focus-visible{outline:2px solid var(--chrome-text);outline-offset:2px}
html body:is(.public-site,.app-client) .public-header-search-trigger svg{width:18px;height:18px}
@media(max-width:760px){
 html body.public-site .public-header-search{width:36px;max-width:36px;flex-basis:36px}
 html body.public-site .public-header-search-control{position:relative;width:36px;padding:0;border:0;background:transparent;cursor:pointer}
 html body.public-site .public-header-search-control>input{display:none}
 html body.public-site .public-header-search-control>svg{position:absolute;inset:10px;width:16px;height:16px;pointer-events:none;color:var(--chrome-text)}
 html body.public-site .public-header-search-control>button{position:absolute;inset:0;width:36px;height:36px}
 html body.public-site .public-header-search-control>button>svg{display:none}
 html body.public-site .public-header-search-control:hover{background:var(--chrome-hover)}
}

/* Compact command-palette catalog search; the header form remains the fallback. */
html body:is(.public-site,.app-client) .public-search-dialog { width:min(620px,calc(100vw - 32px)); height:min(780px,calc(100dvh - 48px)); max-width:none; max-height:calc(100dvh - 48px); margin:auto; padding:0; border:1px solid var(--gv-border); border-radius: var(--gv-radius-card); background:var(--gv-surface); color:var(--gv-text); box-shadow:0 18px 50px rgba(0,0,0,.14); overflow:hidden; }
html body:is(.public-site,.app-client) .public-search-dialog[open] { display:grid; grid-template-rows:auto auto minmax(0,1fr) auto; }
html body:is(.public-site,.app-client) .public-search-dialog::backdrop { background:rgba(10,10,10,.28); }
html body:is(.public-site,.app-client) .public-search-head { display:flex; justify-content:space-between; align-items:start; gap:16px; padding: 12px 16px 8px; }
html body:is(.public-site,.app-client) .public-search-head h2 { margin:0; font-size: 16px; font-weight: 500; letter-spacing:-.03em; }
html body:is(.public-site,.app-client) .public-search-head p { margin:4px 0 0; color:var(--gv-text-muted); font-size:13px; }
html body:is(.public-site,.app-client) .public-search-head>button { display:grid; place-items:center; flex:none; width:32px; height:32px; padding:0; border:1px solid var(--gv-border); border-radius: var(--gv-radius-button); background:var(--gv-surface); color:var(--gv-text); }
html body:is(.public-site,.app-client) .public-search-form { display:flex; gap:12px; padding: 0 16px 12px; border-bottom:1px solid var(--gv-border); }
html body:is(.public-site,.app-client) .public-search-form>label { display:flex; align-items:center; flex:1; min-width:0; gap: 12px; padding: 0 12px; height:42px; border:1px solid var(--gv-border-strong); border-radius:6px; }
html body:is(.public-site,.app-client) .public-search-form input { width:100%; min-width:0; height:40px; border:0; background:transparent; color:inherit; outline:0; padding:0; font-size: 16px; }
html body:is(.public-site,.app-client) .public-search-form>label:focus-within { outline:0; border-color:var(--gv-text); box-shadow:none; }
html body:is(.public-site,.app-client) .public-search-form input:focus-visible { outline:0; }
html body:is(.public-site,.app-client) .public-search-results { min-height:0; overflow-y:auto; padding: 0 12px; scrollbar-width:thin; overscroll-behavior:contain; }
html body:is(.public-site,.app-client) .public-search-result { display:flex; gap:12px; align-items:center; min-height:54px; padding:8px 8px; border-bottom:0; border-radius:8px; color:var(--gv-text); text-decoration:none; }
html body:is(.public-site,.app-client) .public-search-result>div { display:grid; gap: 4px; min-width:0; flex:1; }
html body:is(.public-site,.app-client) .public-search-result strong { font-size: 14px; font-weight:500; overflow-wrap:anywhere; }
html body:is(.public-site,.app-client) .public-search-result small { color:var(--gv-text-muted); font-size:12px; }
html body:is(.public-site,.app-client) .public-search-result:hover { background:var(--gv-surface-subtle); }
html body:is(.public-site,.app-client) .public-search-footer { display:flex; justify-content:flex-end; padding: 12px 16px; border-top:1px solid var(--gv-border); }
html body:is(.public-site,.app-client) .public-search-message {
  padding: 32px 0;
  color: var(--gv-text-muted);
  display: grid;
  justify-items: start;
  gap: 16px;
}
@media(max-width:600px) { html body:is(.public-site,.app-client) .public-search-dialog { width:calc(100vw - 16px); height:calc(100dvh - 24px); max-height:calc(100dvh - 24px); border-radius: var(--gv-radius-card); } html body:is(.public-site,.app-client) .public-search-head { padding:20px 16px 16px; } html body:is(.public-site,.app-client) .public-search-form { padding-inline:16px; } html body:is(.public-site,.app-client) .public-search-results { padding-inline:16px; } }

html body:is(.public-site,.app-client) .public-search-result>span { flex:none; font-size:14px; font-weight:600; white-space:nowrap; }

html body:is(.public-site,.app-client) .public-search-thumbnail { position:relative; display:grid; place-items:center; flex:none; width:44px; height:44px; min-width:44px; overflow:hidden; border:1px solid var(--gv-border); border-radius:8px; background:var(--gv-surface-subtle); color:var(--gv-text-muted); font-size: 11px; font-weight:600; }
html body:is(.public-site,.app-client) .public-search-thumbnail img { position:absolute; inset:0; display:block; width:100%; height:100%; object-fit:contain; background:#fff; }
html body:is(.public-site,.app-client) .public-search-form label>input:is(:focus,:focus-visible) { border:0; outline:0; box-shadow:none; }
html body:is(.public-site,.app-client) .public-search-dialog .button { display:inline-flex; align-items:center; justify-content:center; min-height:36px; padding: 0 16px; border:1px solid var(--gv-border-strong); border-radius: var(--gv-radius-button); color:var(--gv-text); background:var(--gv-surface); font:500 14px/1.4 var(--gv-font-sans); text-decoration:none; }
html body:is(.public-site,.app-client) .public-search-dialog .button:hover { background:var(--gv-surface-muted); }
@media(max-width:600px) { html body:is(.public-site,.app-client) .public-search-result { gap: 12px; } html body:is(.public-site,.app-client) .public-search-result>span:last-child { font-size:12px; } }

html[data-app-area="client"] body.app-client .public-search-dialog .public-search-form input { min-height:42px; height:42px; margin:0; padding:0; border:0; outline:0; box-shadow:none; background:transparent; border-radius:0; }
