/* B58 PulseBoard service-only integration. Original approved V2 assets unchanged. */
:where(.pubbrand,.brand,.authleft .pubbrand,.mtop) .brandmark{
  border:0!important;background:#1fbd78 url('/logo.svg') center/100% 100% no-repeat!important;
  border-radius:9px!important;
}
:where(.pubbrand,.brand,.authleft .pubbrand,.mtop) .brandmark::before,
:where(.pubbrand,.brand,.authleft .pubbrand,.mtop) .brandmark::after{content:none!important}
/* Normal typography and clickable target accessibility; keep approved layout geometry. */
.public,.shell,.authbg,.legal,.statuspage{font-size:15px;line-height:1.5}
:where(.public,.shell,.authbg,.statuspage) :is(.sub,.muted,.quick,.faq,.faq-answer,.helpnav a,.btn,.publinks a,.glabel,.tr,.badge,.formrow,.user small,.card small,.kpi small,.topbar .search,.topbar .search input,.sidebar .navitem){font-size:max(13px,1em);line-height:1.5}
:where(.public,.shell,.authbg) .eyebrow{font-size:12px;line-height:1.5}
:where(.public,.shell,.authbg) :is(button,.btn,input,select,textarea){font-size:14px}
:where(.public,.shell,.authbg) a:focus-visible,
:where(.public,.shell,.authbg) button:focus-visible{outline:3px solid #118c65;outline-offset:3px}
.pubactions{gap:8px;flex-wrap:wrap;justify-content:flex-end}
.pb-public-footer{margin-top:auto;border-top:1px solid #dce7e3;background:#fff;color:#334650;padding:22px max(24px,calc((100vw - 1500px)/2));display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap;font-size:14px}
.pb-public-footer nav{display:flex;gap:20px;flex-wrap:wrap;align-items:center}
.pb-public-footer a{color:#38576a;text-decoration:none;font-weight:650}
.pb-public-footer a:hover{text-decoration:underline}
.pb-public-footer--auth{background:transparent;border:0;justify-content:center;padding:14px 20px 26px;max-width:100%;width:100%}
.pb-auth-alt{margin-top:20px;color:#52636d;font-size:14px;line-height:1.8}
.pb-auth-alt a{font-weight:800;color:#087b55;text-decoration:underline;text-underline-offset:3px}
.pb-help-contact{margin-top:16px;padding:20px;border-radius:11px;border:1px solid #cce3dc;background:#f0fcf7}
.pb-help-contact a{display:inline-flex;align-items:center;margin-top:10px;min-height:43px;padding:10px 16px;background:#087c56;color:white;border-radius:8px;font-weight:750}
.helpnav a[role="button"]{cursor:pointer}
.helpnav a[role="button"]:focus-visible{outline:2px solid #087b55}
.pb-help-empty{padding:16px;color:#52636d}
/* B65 readability: the V2 2560 master canvas used 8-11px form text, which is unreadable on
   1440/1920 screens. Same composition, legible sizes; full-width primary action on auth. */
:where(.shell,.authbg,.public) .formrow label{font-size:13px;margin-bottom:7px;color:#3d505a}
:where(.shell,.authbg,.public) .input{height:46px;font-size:15px;padding:0 13px;color:#1d2b33}
:where(.shell,.authbg,.public) textarea.input{height:auto;min-height:110px;padding:11px 13px}
:where(.shell,.authbg) .modal .btn{font-size:14px}
.authbox{width:min(1040px,calc(100vw - 48px));min-height:600px}
.authright{display:flex;flex-direction:column;justify-content:center;padding:56px}
.authright h2{font-size:28px;margin:0 0 6px}
.authright>.sub{font-size:15px;margin-bottom:24px}
.authright .btn.dark{width:100%;height:50px;font-size:15px;margin-top:6px}
.authleft p{font-size:15px}
.authmini .r{font-size:13px;height:38px;gap:12px}
.authmini .r span:last-child{color:#8fdcc0}
:where(.shell,.authbg) .alert{font-size:14px;line-height:1.55}
.pb-auth-aux{display:flex;justify-content:flex-end;margin:-4px 0 14px;font-size:13px}
.pb-auth-aux a{color:#087b55;font-weight:700}
/* B72 password reset (/password-reset): alert spacing and visible links inside alerts. */
.authright form .alert{margin-bottom:12px}
.authright .alert a{color:inherit;font-weight:800;text-decoration:underline;text-underline-offset:3px}
@media(max-width:900px){.pb-public-footer{padding:20px 18px}.publinks{gap:10px}.pubactions{justify-content:flex-start}.pb-public-footer--auth{padding:12px}}
@media(max-width:540px){.pubactions .btn{min-height:42px;padding:8px 12px}.pb-public-footer{justify-content:center;text-align:center;gap:10px}.pb-public-footer nav{justify-content:center;gap:12px}}

@media(max-width:700px){
 .authbg{width:100%;max-width:100%;min-height:100dvh;padding:14px 0;overflow-x:clip}
 .authbg .authbox{width:calc(100% - 24px);max-width:580px;min-width:0;min-height:0;display:flex;flex-direction:column;border-radius:14px}
 .authbg .authleft{padding:22px 24px;min-height:145px}
 .authbg .authleft h1{font-size:22px;margin:15px 0 8px}
 .authbg .authleft p{font-size:13px;margin:0}
 .authbg .authmini{display:none}
 .authbg .authright{padding:24px 22px 30px;min-width:0}
 .authbg .authright :is(input,button,.btn){max-width:100%;font-size:14px}
 .authbg .pubbrand{font-size:18px}
}

/* B70: until the bridge binds real data, the design's sample rows stay invisible (sidebar/topbar remain). */
body.pb-binding .main>*:not(#pb-live-notice),body.pb-binding .mbody>*,body.pb-binding .sidebar-footer .user,body.pb-binding .top-actions .avatar{visibility:hidden}
body.pb-binding .main::before,body.pb-binding .mbody::before{content:'데이터를 불러오는 중…';display:block;padding:24px;color:#52646f;font-size:15px}
.sidebar-footer .user{min-width:0}.sidebar-footer .user>div{min-width:0}.sidebar-footer .user b{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

/* B70C: the V2 shell responds to its container (standalone or Hub frame). The approved
   desktop layout is unchanged at 1180px and above. */
.tr>*{min-width:0;overflow-wrap:break-word}
.pb-nav-toggle,.pb-nav-backdrop{display:none}
.shell .grid>*{min-width:0}
/* no element extends past the pane (checked); trailing margins alone must not draw a scrollbar */
.shell .main{overflow-x:hidden}
@media (max-width:1179px){.shell{min-width:0}.shell .main{padding:24px 20px}
 .shell .grid[style*="grid-template-columns"]{grid-template-columns:minmax(0,1fr)!important}
 .shell .card .grid.cols4{grid-template-columns:repeat(2,minmax(0,1fr))!important}}
@media (max-width:899px){
 .shell .sidebar{position:fixed;top:0;bottom:0;left:0;z-index:60;transform:translateX(-100%);transition:transform .2s ease;overflow-y:auto}
 body.pb-nav-open .shell .sidebar{transform:none;box-shadow:0 0 40px rgba(7,22,32,.35)}
 body.pb-nav-open .pb-nav-backdrop{display:block;position:fixed;inset:0;z-index:55;background:rgba(7,22,32,.4)}
 .pb-nav-toggle{display:inline-flex;align-items:center;justify-content:center;width:44px;height:44px;margin-right:10px;border:1px solid #d7e1de;border-radius:10px;background:#fff;font-size:20px;color:#071620;cursor:pointer}
 .shell .topbar{left:0;padding:0 12px;height:64px}
 .shell .topbar .search{display:none}
 .shell .main{left:0;top:64px;padding:18px 14px 28px}
 .shell .pagehead{flex-wrap:wrap;gap:12px}
 .shell .pagehead .actions{flex-wrap:wrap}
 .shell .grid.cols5,.shell .grid.cols4{grid-template-columns:repeat(2,minmax(0,1fr))!important}
 .shell .grid.cols2,.shell .grid.cols3{grid-template-columns:minmax(0,1fr)!important}
 .shell .table .tr.th{display:none}
 .shell .table .tr{display:flex;flex-wrap:wrap;align-items:center;gap:6px 14px;padding:12px 14px;min-height:0}
 .shell .table .tr>*:first-child{flex:1 0 100%;font-weight:700}
 .shell .table .tr .signal-band{width:160px}
 .shell .modal{width:auto!important;max-width:none;left:12px!important;right:12px;top:50%;transform:translateY(-50%)!important;max-height:calc(100% - 24px);overflow:auto}
}
/* B70C: when the menu is taller than the window, the user footer follows the menu instead of covering it. */
.shell .sidebar{display:flex;flex-direction:column;overflow-y:auto}
.shell .sidebar .sidebar-footer{position:static;margin-top:auto;padding-bottom:14px}
.shell .sidebar>*{flex-shrink:0}
/* QA 2026-10-18: long KPI values (DNS IP) overflowed the card; key/value rows squeezed the label to ~40px */
.card.kpi b{overflow-wrap:anywhere}
.tr>div:first-child{min-width:6.5em}
