/* Site UI contract: docs/ui-consistency.md. Load after page styles and site-type.css.
   Page-specific visualizations and immutable publication artifacts keep their own layout. */
html:has(main#view){scrollbar-gutter:stable}
/* Expanded content uses the document scroll, without clipping or inner tracks. */
:root dialog{max-height:none;overflow:visible;overflow-wrap:anywhere}
.site-expanded-surface{min-width:0;margin-bottom:var(--ui-section-gap);scroll-margin-top:130px}
:root .site-inline-panel{position:static!important;inset:auto!important;display:block;width:100%!important;max-width:100%!important;height:auto!important;max-height:none!important;margin:0;overflow:visible!important;box-sizing:border-box;overflow-wrap:anywhere}
.site-inline-panel :is(h2,h3,p,a,button,pre){overflow-wrap:anywhere}
:root .site-auto-size{max-height:none;overflow:visible}
.site-frame-measure{position:fixed;left:-100000px;top:0;height:1px;min-height:0;border:0;visibility:hidden;pointer-events:none}
:root .ws-reading-frame,:root .wsr-reader-frame,:root .pub-diagnostic-frame{display:block;box-sizing:border-box;max-width:100%;min-height:0}
.nav{
  position:sticky;top:var(--ui-nav-top);z-index:40;display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);
  align-items:center;gap:8px;box-sizing:border-box;width:calc(100% - 2 * var(--ui-nav-inset));max-width:var(--ui-shell-max);
  min-height:var(--nav-h);margin:var(--ui-nav-top) auto 0;padding:12px 20px
}
.nav .brand{display:flex;align-items:center;gap:12px;min-width:0;justify-self:start}
.nav .brand .logo{display:block;flex:0 0 var(--ui-nav-logo);width:var(--ui-nav-logo);height:var(--ui-nav-logo);object-fit:cover;border-radius:25%;box-shadow:0 0 0 1px var(--border)}
.nav .brand-text{display:flex;flex-direction:column;gap:4px;min-width:0}
.nav .brand-wordmark{overflow:hidden;font-size:var(--fs-lg);font-weight:600;letter-spacing:.14em;line-height:1;text-overflow:ellipsis;white-space:nowrap}
.nav .brand-tagline{font-size:var(--fs-xs);line-height:1.25}
.nav .links{display:flex;align-items:center;justify-content:center;gap:8px;min-width:0}
.nav .links>a{display:flex;align-items:center;justify-content:center;flex:0 0 auto;order:0;min-height:var(--ui-nav-link-height);padding:8px 12px;font-family:var(--font);font-size:var(--fs-sm);font-weight:600;line-height:20px;letter-spacing:.04em;white-space:nowrap}
.nav .nav-actions{display:flex;align-items:center;justify-self:end;gap:8px;min-width:0}
.nav .icon-btn{display:inline-grid;flex:0 0 var(--ui-nav-control);place-items:center;width:var(--ui-nav-control);height:var(--ui-nav-control);min-height:var(--ui-nav-control);padding:0}
.nav .icon-btn svg{width:19px;height:19px}
.nav .menu{position:relative;flex:0 0 auto}
main#view:not(.workspace-reading){max-width:var(--ui-page-max);padding:var(--ui-page-top) var(--ui-page-side) var(--ui-page-bottom)}
#view :is(.profile-page,.portfolio-page,.publishing-page,.agent-agenda,.dl-library,.news-page){max-width:none;margin-inline:0}
/* News list uses the main Shell width; the story reader keeps its own layout. */
#view .news-page>.news-story-host{max-width:980px;margin-inline:auto}

#view :is(.publishing-page,.agent-agenda,.dl-library){padding:0}
#view :is(.site-page-head,.page-head,.dash-page-head,.rs-head,.pub-toolbar,.agent-agenda-head){
  display:flex;align-items:flex-start;justify-content:space-between;gap:16px;
  min-width:0;margin:0 0 var(--ui-header-gap);flex-wrap:wrap
}
#view :is(.site-page-head,.page-head,.dash-page-head,.rs-head,.pub-toolbar,.agent-agenda-head)>:first-child{min-width:0}
#view :is(.site-page-head,.page-head,.dash-page-head,.rs-head,.pub-toolbar,.agent-agenda-head) h1{
  margin:0;font-family:var(--font);font-size:var(--fs-xl);font-weight:650;line-height:1.3;letter-spacing:-.025em;overflow-wrap:anywhere
}
#view :is(.site-page-head,.page-head,.dash-page-head,.rs-head,.pub-toolbar,.agent-agenda-head) :is(.sub,.dash-sub){margin:6px 0 0;font-size:var(--fs-base);line-height:1.7}
#view :is(.dl-hero,.bg-hero){margin-top:0}
#view .profile-owner-name{color:var(--text-soft);font-size:var(--fs-base)}
#view :is(.site-page-actions,.news-actions,.profile-header-buttons){display:flex;align-items:flex-start;justify-content:flex-end;flex-wrap:wrap;gap:var(--ui-action-gap)}
#view .profile-header-buttons{display:grid;grid-template-columns:auto}
#view :is(.profile-header-controls,.rs-header-actions){margin-left:auto;max-width:min(340px,100%);display:flex;flex-direction:column;align-items:flex-end;gap:8px}
#view .rs-header-actions .rs-action{order:0}
#view .rs-header-actions .rs-live{order:1;font-size:var(--fs-xs);line-height:1.6;margin:0}
#view :is(.news-refresh-group,.news-head-controls){padding-top:0;gap:8px}
#view :is(.news-times,.profile-updated,.dash-google){font-size:var(--fs-xs);line-height:1.6}
#view .dash-google{margin:6px 0 0}
/* Task actions share dimensions; tabs, tree nodes, calendar cells, chips and icons do not. */
.site-button,
#view :is(.news-actions,.news-toolbar,.news-status-notice,.news-bulk-actions,.profile-header-buttons,.profile-actions,.portfolio-actions,.dash-form-actions,.pub-actions,.agent-agenda-actions) > button,
#view .news-refresh-group>button,#view .rs-action,#view .portfolio-page>.page-head>button,
#view .profile-section-head>.profile-button,#view .dl-action,#view .ws-retry,
#view .profile-dialog .profile-button,#view .portfolio-dialog .profile-button,
#view .rs-body .btn,#view .publishing-page button:not(.pub-list button),
#view .agent-agenda button:not(.agent-agenda-item){
  min-height:var(--ui-control-height);padding:8px var(--ui-control-padding);border-radius:var(--radius-sm);
  font-family:var(--font);font-size:var(--fs-sm);font-weight:600;line-height:22px;
  display:inline-flex;align-items:center;justify-content:center;gap:8px;max-width:100%
}
.site-button{color:var(--text);background:var(--bg-soft);border:1px solid var(--border-strong)}
.site-button.primary{background:var(--accent);color:var(--button-ink);border-color:var(--accent)}
.site-button.danger{color:var(--danger)}
.site-button:disabled{opacity:.55;cursor:not-allowed}
.site-button:hover:not(:disabled){filter:brightness(1.08)}
.site-button[aria-busy=true]{cursor:progress}
#view .workspace-head>.ws-open-document{margin:0;min-height:var(--ui-control-height);padding:8px var(--ui-control-padding);font-size:var(--fs-sm);line-height:22px}
#view :is(.pub-toolbar>a,.agent-agenda-back){display:inline-flex;min-height:var(--ui-control-height);align-items:center;font-size:var(--fs-sm);font-weight:600;line-height:22px}
#view :is(.site-section-title,.pub-section>h2,.pub-review>h2,.agent-agenda-section>h2){font-size:var(--fs-lg);font-weight:650;line-height:1.4}
#view :is(.profile-actions,.portfolio-actions,.pub-actions,.agent-agenda-actions),.dash-form-actions{display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-end;gap:var(--ui-action-gap)}
#view :is(.profile-tabs button,.rs-tabs a,.dl-modes button){min-height:40px;font-size:var(--fs-sm);font-weight:600;line-height:20px}
@media(max-width:900px){
  .nav{grid-template-columns:minmax(0,1fr) auto}
  .nav .brand{grid-column:1;grid-row:1}
  .nav .nav-actions{grid-column:2;grid-row:1}
  .nav .links{grid-column:1/-1;grid-row:2;justify-content:center;flex-wrap:wrap;gap:4px}
}
@media(max-width:600px){
  :root{--ui-page-top:20px;--ui-page-side:16px;--ui-page-bottom:40px;--ui-nav-top:8px;--ui-nav-inset:8px;--ui-nav-logo:32px;--ui-nav-gap:4px;--ui-control-height:44px;--ui-control-padding:12px}
  .nav{gap:var(--ui-nav-gap);margin-top:var(--ui-nav-top);padding:8px}
  .nav .brand{flex:0 1 auto;max-width:110px;gap:8px}
  .nav .brand-text{max-width:70px}
  .nav .brand-tagline{display:none}
  .nav .brand-wordmark{font-size:var(--fs-md);letter-spacing:.1em}
  .nav .links{gap:0}
  .nav .links>a{padding:8px 4px;font-size:12px;letter-spacing:0}
  #view :is(.site-page-head,.page-head,.dash-page-head,.rs-head,.pub-toolbar,.agent-agenda-head){gap:12px}
  #view .site-page-head .site-page-actions{max-width:100%;margin-left:auto}
  #view :is(.profile-header-controls,.rs-header-actions){max-width:100%}
  #view .profile-header-buttons{grid-template-columns:auto;gap:8px}
  #view :is(.news-times,.profile-updated,.rs-header-actions .rs-live){overflow-wrap:anywhere;text-align:right}
}

/* Region-based B3 frames and opt-in components. Existing controls are connected by the scoped bridge below. */
.site-frame{min-width:0;font-size:var(--fs-base);line-height:1.7}
.site-frame>[hidden],.site-page-body>[hidden]{display:none!important}
.site-page-filters>:only-child{width:100%;min-width:0}
.site-page-footer>.news-pagination{width:100%;margin:0}
.site-frame>.site-page-body:empty{display:none}
.site-frame>.site-page-head{margin-bottom:var(--ui-header-gap)}
.site-page-navigation,.site-page-filters{margin-bottom:var(--ui-section-gap);min-width:0}
.site-page-filters{display:flex;align-items:end;flex-wrap:wrap;gap:var(--ui-action-gap)}
.site-page-body{display:grid;gap:var(--ui-section-gap);min-width:0}
.site-page-footer{display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-end;gap:var(--ui-action-gap);margin-top:var(--ui-section-gap)}
.site-panel{padding:var(--ui-section-gap);border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg-elev);min-width:0}
.site-section-title{margin:0 0 12px;font-size:var(--fs-lg);font-weight:650;line-height:1.4}
.site-field{display:grid;gap:8px;min-width:0;font-size:var(--fs-sm);font-weight:600}
.site-field :where(input:not([type=checkbox]):not([type=radio]),select,textarea){width:100%;min-width:0;min-height:var(--ui-control-height);padding:8px var(--ui-control-padding);border:1px solid var(--ui-input-border);border-radius:var(--radius-xs);background:var(--bg-soft);color:var(--text);font:inherit;font-size:var(--fs-base);font-weight:400;line-height:22px}
.site-panel>.site-field+.site-field{margin-top:var(--ui-section-gap)}
.site-field textarea{min-height:120px;resize:vertical}
.site-field :is(input,select,textarea):disabled{opacity:.55;cursor:not-allowed}
.site-field :is(input,select,textarea)[aria-invalid=true]{border-color:var(--danger)}
.site-field :is(input,textarea)::placeholder{color:var(--text-mute)}
.site-hint{margin:0;color:var(--text-soft);font-size:var(--fs-xs);font-weight:400;line-height:1.6}
.site-error{margin:0;color:var(--danger);font-size:var(--fs-sm);font-weight:400;line-height:1.6}
.site-choice{display:flex;align-items:center;gap:8px;min-height:var(--ui-control-height);font-size:var(--fs-base)}
.site-choice input{accent-color:var(--accent);flex-shrink:0}
.site-tabs{display:flex;flex-wrap:wrap;gap:var(--ui-action-gap)}
.site-tabs>a{display:inline-flex;align-items:center;min-height:var(--ui-control-height);padding:8px var(--ui-control-padding);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text-soft);font-size:var(--fs-sm);font-weight:600}
.site-tabs>a[aria-current=page]{color:var(--accent-ink);background:var(--accent-soft);border-color:var(--accent)}
.site-status{margin:0;padding:12px var(--ui-control-padding);border:1px solid var(--border-strong);border-radius:var(--radius-sm);background:var(--bg-soft);color:var(--text-soft);font-size:var(--fs-sm);overflow-wrap:anywhere}
.site-status[data-tone=ok]{color:var(--ok);background:var(--ok-soft)}
.site-status[data-tone=warn]{color:var(--warn);background:var(--warn-soft)}
.site-status[data-tone=danger]{color:var(--danger);background:var(--danger-soft)}
.site-page-status>.site-status{padding:0;border:0;border-radius:0;background:transparent}
/* 불러오는 중 빈 모양(2026-10-28): Dashboard 일정 칸과 같은 옅은 강조색 면. 빨리 오면 깜빡이지 않게 200ms 뒤에 나타나고,
   기다리는 동안 1.6초 주기로 천천히 옅어졌다 돌아온다(위에서 아래로 조금씩 늦게). 동작 줄이기에서는 멈춘 면만 보인다. */
.site-placeholder{display:grid;gap:12px;min-width:0}
.site-placeholder>span{display:block;border-radius:var(--radius-sm);background:color-mix(in srgb,var(--accent) 8%,transparent)}
.site-placeholder[data-kind=rows]>span{height:44px}
.site-placeholder[data-kind=rows]>span:nth-child(3n+2){width:86%}
.site-placeholder[data-kind=cards]{grid-template-columns:repeat(auto-fill,minmax(min(100%,280px),1fr));gap:var(--ui-section-gap)}
.site-placeholder[data-kind=cards]>span{height:160px;border-radius:var(--radius)}
@keyframes site-placeholder-in{from{opacity:0}}
@keyframes site-placeholder-wait{50%{opacity:.45}}
/* 숫자 바뀜(2026-10-28): 다시 그린 뒤 값이 달라진 칸만 글자 뒤 면이 옅은 강조색에서 1.2초에 걸쳐 원래대로. 글자색·크기는 그대로. 동작 줄이기에서는 표시하지 않는다. */
@keyframes site-value-changed{from{background-color:color-mix(in srgb,var(--accent) 22%,transparent)}}
@media (prefers-reduced-motion:no-preference){.site-value-changed{border-radius:var(--radius-xs);animation:site-value-changed 1.2s var(--ease) both}}
@media (prefers-reduced-motion:no-preference){.site-placeholder{animation:site-placeholder-in 240ms var(--ease) 200ms both}.site-placeholder>span{animation:site-placeholder-wait 1.6s ease-in-out infinite;animation-delay:calc(440ms + var(--i,0) * 120ms)}}
.site-table-wrap{min-width:0;max-width:100%;border:1px solid var(--border);border-radius:var(--radius-sm)}
.site-table{width:100%;table-layout:fixed;border-collapse:collapse;font-size:var(--fs-base);line-height:1.6}
.site-table :is(th,td){padding:12px var(--ui-control-padding);border-bottom:1px solid var(--border);text-align:left;vertical-align:top;overflow-wrap:anywhere}
.site-table th{background:var(--bg-elev);font-weight:600}
.site-table tr:last-child td{border-bottom:0}
.site-table .site-number{text-align:right;font-variant-numeric:tabular-nums;white-space:normal}
.site-empty{padding:var(--ui-section-gap);border:1px dashed var(--border-strong);border-radius:var(--radius-sm);color:var(--text-soft);font-size:var(--fs-base)}
.site-dialog{width:min(720px,calc(100% - 32px));padding:var(--ui-section-gap);overflow:visible;border:1px solid var(--border-strong);border-radius:var(--radius);background:var(--bg-elev);color:var(--text);box-shadow:var(--shadow-lg);font-size:var(--fs-base)}
.site-dialog::backdrop{background:rgba(0,0,0,.55)}
.site-dialog-head{display:flex;align-items:start;justify-content:space-between;gap:16px;margin-bottom:var(--ui-section-gap)}
.site-dialog-head .site-section-title{margin:0;overflow-wrap:anywhere}
.site-dialog-body{display:grid;gap:var(--ui-section-gap);min-width:0}
@media(max-width:600px){.site-page-filters>.site-field{flex:1 1 100%}.site-tabs>a{flex:1 1 auto;justify-content:center}.site-dialog{width:calc(100% - 24px);max-height:calc(100dvh - 24px)}}

/* Existing controls share the same role values without changing their events or data. */
:root :is(.profile-field,.portfolio-field,.portfolio-link-row,.dash-field,.news-field,.news-interest-register,.news-interest-editor,.profile-interest-register,.pub-fields,.pub-design-content,.rs-controls,.rs-calendar-filters,.rs-account-controls,.rs-holdings-controls) :where(input:not([type=checkbox]):not([type=radio]):not([type=file]):not([type=hidden]),select,textarea){
  min-height:var(--ui-control-height);padding:8px var(--ui-control-padding);border:1px solid var(--ui-input-border);
  border-radius:var(--radius-xs);background:var(--bg-soft);color:var(--text);font:400 var(--fs-base)/22px var(--font);max-width:100%
}
:root :is(.profile-field,.portfolio-field,.dash-field,.news-interest-editor,.pub-fields,.pub-design-content) textarea{min-height:120px;resize:vertical}
:root :is(.profile-field,.portfolio-field,.portfolio-link-row,.dash-field,.news-field,.pub-fields,.pub-design-content) [aria-invalid=true]{border-color:var(--danger)}
.portfolio-link-row>.portfolio-field-error{grid-column:1/-1}
:root :is(.profile-dialog,.portfolio-dialog,.portfolio-confirm-dialog,.dash-dialog,.pub-design-dialog) :is(.profile-button,.dash-button,.site-button,.pub-actions>button){
  min-height:var(--ui-control-height);padding:8px var(--ui-control-padding);border-radius:var(--radius-sm);
  font:600 var(--fs-sm)/22px var(--font);display:inline-flex;align-items:center;justify-content:center;gap:8px
}
.profile-dialog :is(h2,h3),.dash-dialog h2{font-family:var(--font);line-height:1.4}
.profile-dialog h2,.dash-dialog h2{font-size:var(--fs-lg);font-weight:650}
.profile-dialog h3{font-size:var(--fs-md);font-weight:600}
:root .bg-search{border-color:var(--ui-input-border);font-size:var(--fs-base)}
.shell-search-form{border-color:var(--ui-input-border)}
.shell-search-form:focus-within{border-color:var(--accent)}
.site-page-status>.ws-reading-state{margin:0;padding:0;border:0;background:transparent;font-size:var(--fs-xs)}
#view .news-bulk>button{min-height:var(--ui-control-height);padding:8px var(--ui-control-padding);font:600 var(--fs-sm)/22px var(--font)}
#view :is(.news-card-actions,.news-story-head,.news-story-title-actions,.news-list-head)>.news-button,
#view .news-story-reader>.news-button{min-height:var(--ui-control-height);padding:8px var(--ui-control-padding);font:600 var(--fs-sm)/22px var(--font)}
.site-page-actions>.news-story-head{margin:0;gap:var(--ui-action-gap)}
.site-page-status>.news-error{margin:0;padding:0;border:0;background:transparent;font-size:var(--fs-xs)}
.news-story-framed{padding-top:0}

/* Every main view reserves the same title, action, and status slots. */
#view .site-page-head{
  display:grid;grid-template-columns:minmax(0,1fr) minmax(200px,min(34vw,340px));
  align-items:start;column-gap:20px;row-gap:0;min-width:0;min-height:64px;
  margin:0 0 var(--ui-header-gap);padding:0;flex-wrap:initial
}
#view .site-page-head>.site-page-copy{grid-column:1;grid-row:1;display:grid;grid-template-rows:minmax(34px,auto) minmax(26px,auto);align-content:start;min-width:0}
#view .site-page-head .site-page-title{min-width:0;margin:0;font-family:var(--font);font-size:var(--fs-xl);font-weight:650;line-height:1.3;letter-spacing:-.025em;overflow-wrap:anywhere}
#view .site-page-head .site-page-subtitle{min-width:0;margin:6px 0 0;font-size:var(--fs-base);line-height:20px;overflow-wrap:anywhere}
#view .site-page-head .site-page-kicker{min-width:0;margin:0 0 4px;color:var(--accent-ink);font-size:var(--fs-xs);font-weight:650;line-height:1.4;letter-spacing:.04em}
#view .site-page-head>.site-page-aside{grid-column:2;grid-row:1;display:grid;grid-template-rows:minmax(40px,auto) minmax(20px,auto);align-content:start;justify-self:end;gap:4px;width:100%;max-width:340px;min-width:0;min-height:64px;margin:0;padding:0}
#view .site-page-head>.site-page-aside:not(.has-actions){grid-template-rows:minmax(20px,auto);gap:0;min-height:20px}
#view .site-page-head>.site-page-aside:not(.has-actions)>.site-page-status{grid-row:1}
#view .site-page-head .site-page-actions{display:flex;align-items:flex-start;justify-content:flex-end;flex-wrap:wrap;gap:var(--ui-action-gap);min-width:0;min-height:40px;margin:0}
#view .site-page-head .site-page-actions:empty{display:none;min-height:0}
#view .site-page-head .site-page-status{display:flex;align-items:flex-start;justify-content:flex-end;min-width:0;min-height:20px;margin:0;text-align:right;font-size:var(--fs-xs);line-height:1.6;overflow-wrap:anywhere}
#view .site-page-head .site-page-status:empty{display:block}
#view .site-page-head .site-page-status>*{min-width:0;max-width:100%;margin:0;font-size:inherit;line-height:inherit;overflow-wrap:anywhere}
#view .site-page-head .site-page-actions>:is(a,button){display:inline-flex;min-height:var(--ui-control-height);align-items:center;justify-content:center;max-width:100%;margin:0;font-family:var(--font);font-size:var(--fs-sm);font-weight:600;line-height:22px}
#view .site-page-head .news-head-controls{grid-column:2;grid-row:1;display:grid;grid-template-rows:minmax(40px,auto) minmax(20px,auto);align-content:start;justify-self:end;gap:4px;width:100%;max-width:340px;min-height:64px;margin:0;padding:0}
#view .site-page-head.news-head{border-bottom:0}
#view .site-page-head .news-head-controls .site-page-actions{grid-row:1}
#view .site-page-head .news-head-controls .site-page-status{grid-row:2}
#view .site-page-head .site-page-status .news-times{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:2px 6px;max-width:340px;text-align:right}
#view .site-page-head .profile-header-controls{grid-template-rows:minmax(40px,auto) minmax(20px,auto);align-items:stretch;gap:4px;margin:0}
#view .site-page-head .profile-header-buttons{display:grid;grid-template-columns:auto;justify-content:end;gap:8px}
#view .site-page-head .rs-header-actions{max-width:100%;flex-direction:row;align-items:flex-start;justify-content:flex-end}
#view .site-page-head .rs-header-actions .rs-live{display:none}
#view .site-page-head .rs-action{align-self:flex-start}
#view .site-page-head .site-page-status .rs-live{max-width:340px;text-align:right;word-break:keep-all}
#view .site-page-head .dash-google{margin:0;white-space:normal}
#view .site-page-head .portfolio-notice{color:var(--ok)}
#view .site-page-head .portfolio-notice:empty{display:block}
#view .site-page-head .portfolio-notice.error,#view .site-page-head .pub-status[data-tone=error],#view .site-page-head .agent-agenda-status[data-tone=error]{color:var(--danger)}
#view .site-page-head .ws-notice,#view .site-page-head .dl-status{margin:0;padding:0;border:0;background:transparent;color:var(--text-soft)}
#view .site-page-head .pub-status,#view .site-page-head .agent-agenda-status{margin:0;padding:0;border:0;border-radius:0;background:transparent;color:var(--text-soft)}
#view .site-page-head .dl-count{margin:0;color:var(--text-mute)}
#view .site-page-head .site-page-status .rs-live{color:var(--text-mute);word-break:keep-all}
#view .site-page-head .pub-toolbar-back{white-space:nowrap}
#view .news-page.news-story-open .site-page-head .news-head-controls{display:none}
#view .site-page-head .agent-agenda-intro{margin:6px 0 0;color:var(--text-soft);font-size:var(--fs-sm);line-height:1.6}
#view .site-page-head--brand{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(0,.85fr);align-items:center;gap:48px;min-height:0;padding:16px 0 40px;border-bottom:1px solid var(--border)}
#view .site-page-head--brand>.site-page-copy{display:block}
#view .site-page-head--brand .site-page-title{margin:16px 0 20px;font-size:clamp(32px,3.4vw,44px);font-weight:650;line-height:1.3;letter-spacing:-.035em}
#view .site-page-head--brand>.site-page-aside{display:block;grid-column:2;grid-row:1;max-width:none;min-height:0;margin:0;padding:0}
#view .site-page-head--brand .site-page-actions,#view .site-page-head--brand .site-page-status{display:none}
#view .site-page-head--brand .bg-emblem{margin:0}
#view.brand-guide-view .site-page-head--brand{margin-bottom:40px}
@media(max-width:900px){
  #view .site-page-head--brand{grid-template-columns:minmax(0,1fr);gap:24px}
  #view .site-page-head--brand>.site-page-aside{grid-column:1;grid-row:2}
}
@media(max-width:600px){
  #view .site-page-head:not(.site-page-head--brand){grid-template-columns:minmax(0,1fr);grid-template-rows:auto auto;row-gap:8px;min-height:0}
  #view .site-page-head:not(.site-page-head--brand)>.site-page-copy{grid-column:1;grid-row:1;min-height:60px}
  #view .site-page-head:not(.site-page-head--brand)>.site-page-aside,#view .site-page-head:not(.site-page-head--brand)>.site-page-aside.news-head-controls{grid-column:1;grid-row:2;justify-self:stretch;max-width:100%;min-height:64px}
  #view .site-page-head:not(.site-page-head--brand)>.site-page-aside:not(.has-actions){grid-template-rows:minmax(20px,auto);gap:0;min-height:20px}
  #view .site-page-head:not(.site-page-head--brand) .site-page-actions{justify-content:flex-end;min-height:44px;margin-left:0}
  #view .site-page-head:not(.site-page-head--brand) .site-page-status{justify-content:flex-end;text-align:right}
  #view .site-page-head .profile-header-buttons{grid-template-columns:auto;justify-content:start}
  #view .site-page-head .rs-header-actions{justify-content:flex-end;max-width:100%}
  #view .site-page-head .site-page-status .rs-live{text-align:right}
  #view .site-page-head--brand{grid-template-columns:minmax(0,1fr);gap:24px;padding:8px 0 28px}
  #view .site-page-head--brand>.site-page-aside{grid-column:1;grid-row:2}
}

/* 2026-10-18 사용자 지시: 상단 탭 4개(Dashboard·News·Research·Workspace)의 첫 화면은 큰 제목·설명 문장 없이 내용부터.
   제목은 화면 읽기용으로 남기고, 상태·행동이 있을 때만 오른쪽에 한 줄로 둔다. 하위 화면(Market Insights 등)은 그대로. */
html[data-top-page] #view .site-frame>.site-page-head>.site-page-copy{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
html[data-top-page] #view .site-frame>.site-page-head{grid-template-columns:minmax(0,1fr);min-height:0}
html[data-top-page] #view .site-frame>.site-page-head>.site-page-aside{grid-column:1;justify-self:end;min-height:0}
html[data-top-page]:not([data-top-page="workspace"],[data-top-page="portfolio"],[data-top-page="design-library"]) #view .site-frame>.site-page-head:not(:has(.site-page-actions>*)):not(:has(.site-page-status:not(:empty))){margin:0}
html[data-top-page]:not([data-top-page="workspace"],[data-top-page="portfolio"],[data-top-page="design-library"]) #view .site-frame>.site-page-head:not(:has(.site-page-actions>*)):not(:has(.site-page-status:not(:empty)))>.site-page-aside{display:none}
/* 2026-11-04 사용자 B: News·Trend Board는 같은 하위 탭을 쓰므로 윗줄을 같은 한 줄(상태 → 행동, 버튼 높이)로 맞춰 탭 위치를 고정한다. */
/* 2026-11-05: Workspace·Portfolio·Design Library 하위 탭도 같은 한 줄을 쓴다(상태가 비어도 줄 높이 유지 → 탭 위치 고정). */
html:is([data-top-page="news"],[data-top-page="insight-radar"],[data-top-page="workspace"],[data-top-page="portfolio"],[data-top-page="design-library"]) #view .site-frame>.site-page-head{margin:0 0 var(--ui-header-gap)}
html:is([data-top-page="news"],[data-top-page="insight-radar"],[data-top-page="workspace"],[data-top-page="portfolio"],[data-top-page="design-library"]) #view .site-frame>.site-page-head>.site-page-aside{display:flex;flex-wrap:wrap;align-items:center;align-content:center;justify-content:flex-end;gap:8px 12px;width:auto;max-width:100%;min-height:var(--ui-control-height)}
html:is([data-top-page="news"],[data-top-page="insight-radar"],[data-top-page="workspace"],[data-top-page="portfolio"],[data-top-page="design-library"]) #view .site-frame>.site-page-head>.site-page-aside>.site-page-status{order:-1;align-self:center}
html:is([data-top-page="news"],[data-top-page="insight-radar"],[data-top-page="workspace"],[data-top-page="portfolio"],[data-top-page="design-library"]) #view .site-frame>.site-page-head>.site-page-aside>.site-page-actions:empty{display:none}
:root[data-top-page]:is([data-skin],:not([data-skin])){--ui-page-top:20px}
@media(max-width:600px){:root[data-top-page]:is([data-skin],:not([data-skin])){--ui-page-top:12px}}
/* 관심사 편집 입력칸: 내용 높이에 맞춰 자라므로 스크롤 막대와 크기 조절 손잡이를 보이지 않는다(입력·스크롤 기능은 유지). */
:root :is(.news-interest-editor,.profile-interest-editor,.profile-dialog) textarea{resize:none;scrollbar-width:none;-ms-overflow-style:none}
:root :is(.news-interest-editor,.profile-interest-editor,.profile-dialog) textarea::-webkit-scrollbar{display:none}
/* 드롭다운 목록: 선택 칸 배경이 반투명이어도 목록은 불투명 바탕과 본문 글자색을 쓴다(밝은 글자가 흰 바탕에 묻히던 문제). */
select option,select optgroup{background-color:var(--bg-elev);color:var(--text)}
select option:disabled{color:var(--text-mute)}
/* 결과 알림(저장했습니다 등): 화면 아래 가운데에서 부드럽게 나타났다가 사라진다. */
.site-toast{position:fixed;left:50%;bottom:calc(28px + env(safe-area-inset-bottom,0px));z-index:1100;box-sizing:border-box;width:max-content;max-width:calc(100vw - 32px);padding:12px 20px;border:1px solid var(--border-strong);border-radius:var(--radius-sm);background:var(--bg-elev);color:var(--text);box-shadow:var(--shadow-lg);font-size:var(--fs-sm);line-height:1.6;text-align:center;overflow-wrap:anywhere;pointer-events:none;
  opacity:0;visibility:hidden;transform:translate(-50%,8px);transition:opacity 260ms cubic-bezier(.16,1,.3,1),transform 260ms cubic-bezier(.16,1,.3,1),visibility 0s linear 260ms}
.site-toast.is-visible{opacity:1;visibility:visible;transform:translate(-50%,0);transition-delay:0s}
.site-toast[data-tone="error"]{border-color:var(--danger);color:var(--danger)}
@media (prefers-reduced-motion:reduce){.site-toast{transition:none}}
/* 상단바 위쪽 여백(16px)이 body 밖으로 빠져 문서가 항상 화면보다 16px 길어지던 문제: body 안에 가둔다. 대시보드는 이 덕분에 페이지 스크롤이 없다. */
html body{display:flow-root}
/* 공통 선 아이콘(site-icons.js): 글자 크기에 맞춰 커지고 글자색을 따른다. 아이콘만 있는 버튼은 최소 18px. */
.gyo-icon{display:inline-block;width:1.1em;height:1.1em;flex:none;vertical-align:-.18em;overflow:visible}
.gyo-icon-button{display:inline-flex;align-items:center;justify-content:center}
.gyo-icon-button>.gyo-icon{width:max(1em,18px);height:max(1em,18px)}

/* 2026-11-05 사용자 가안: 아이폰은 16px보다 작은 입력칸을 누르면 화면을 확대하고 되돌리지 않는다.
   휴대폰(600px 이하)에서만 글자 입력칸을 16px로 맞춘다. 페이지별 입력 규칙보다 앞서야 해서 !important를 쓴다.
   확대(손가락 벌리기) 자체는 막지 않는다. */
@media(max-width:600px){
  input:not([type=checkbox]):not([type=radio]):not([type=range]):not([type=color]):not([type=file]):not([type=hidden]):not([type=button]):not([type=submit]):not([type=reset]):not([type=image]),select,textarea{font-size:16px!important}
}
