/* JININOVA unified UI scale
   Goal: comfortable desktop use at browser zoom 100% without changing feature behavior.
   Loaded last so it normalizes accumulated per-page typography/spacing rules. */
:root{
  --jini-ui-body:14px;
  --jini-ui-small:12px;
  --jini-ui-label:13px;
  --jini-ui-control:13px;
  --jini-ui-card-title:15px;
  --jini-ui-section-title:18px;
  --jini-ui-page-title:24px;
  --jini-ui-kpi:24px;
  --jini-ui-radius:12px;
  --jini-ui-gap:14px;
  --jini-ui-content:1560px;
}
html{font-size:16px;-webkit-text-size-adjust:100%;text-size-adjust:100%}
body{font-size:var(--jini-ui-body);line-height:1.55}
button,input,select,textarea{font:inherit}

/* ===== Workspace: one scale at browser zoom 100% ===== */
.app{font-size:var(--jini-ui-body);grid-template-columns:220px minmax(0,1fr)}
.app .side{width:220px;padding:20px 14px}
.app .main{padding:20px clamp(16px,1.5vw,24px) 32px;min-width:0}
.app .main>.section{width:100%;max-width:var(--jini-ui-content);margin-inline:auto;font-size:var(--jini-ui-body)}
.app .section :is(p,h1,h2,h3){word-break:keep-all;overflow-wrap:anywhere}
.app .top{gap:12px;align-items:center;margin-bottom:12px}
.app .top h1{font-size:var(--jini-ui-page-title)!important;line-height:1.3;letter-spacing:-.5px;margin:0}
.app .top .muted,.app .muted{font-size:var(--jini-ui-label)!important;line-height:1.55}
.app .data-freshness-notice,.app .statusbar,.app #ads .ad-statusbar{font-size:var(--jini-ui-label);line-height:1.5;padding:9px 12px}
.app :is(.btn,.viewbtn){font-size:var(--jini-ui-control)!important;min-height:36px;padding:7px 10px;border-radius:7px;white-space:normal;word-break:keep-all}
.app .filters{gap:8px;margin:12px 0}
.app .filters :is(input,select),.app #ads .ad-period :is(input,select),.app .agentops-toolbar select{font-size:var(--jini-ui-control)!important;min-height:38px;padding:8px 10px;border-radius:8px}
.app .filters input{min-width:220px}
.app .stats{grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:10px;margin:12px 0 14px}
.app .stats .stat{min-width:0;min-height:76px;padding:12px;border-radius:10px}
.app .stats .stat b{font-size:var(--jini-ui-kpi)!important;line-height:1.2;font-variant-numeric:tabular-nums;overflow-wrap:normal;word-break:normal}
.app .stats .stat span{font-size:var(--jini-ui-small)!important;margin-top:5px}
.app #ads .ad-kpis{grid-template-columns:repeat(4,minmax(0,1fr))}
.app #ads .ad-kpis .stat{min-height:76px}
.app #sales .stats{grid-template-columns:repeat(3,minmax(0,1fr))}
.app .panel{border-radius:var(--jini-ui-radius)}
.app .focus-panel{margin:14px 0;padding:14px}
.app .focus-heading b{font-size:var(--jini-ui-section-title)!important}
.app .focus-heading>div span,.app .focus-summary{font-size:var(--jini-ui-small)!important}
.app .focus-grid{gap:9px;margin-top:11px}
.app .focus-card{padding:11px}
.app .focus-card b{font-size:var(--jini-ui-kpi)!important}
.app .focus-card span,.app .focus-card small,.app .focus-card em{font-size:var(--jini-ui-small)!important}
.app .toolbar{gap:10px;margin:8px 0 14px}
.app .view-toggle{padding:4px}
.app .view-toggle>span{font-size:var(--jini-ui-small)!important}
.app .photo-grid{grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:12px}
.app .photo-overlay{padding:20px 11px 10px}
.app .photo-overlay b{font-size:var(--jini-ui-card-title)!important;line-height:1.45;word-break:keep-all;overflow-wrap:anywhere}
.app .photo-overlay span{font-size:var(--jini-ui-small)!important}
.app .ops-list-card{grid-template-columns:200px minmax(0,1fr)}
.app .ops-photo,.app .ops-photo img{min-height:190px}
.app .ops-info{padding:12px 14px}
.app .place-name{font-size:var(--jini-ui-card-title)!important;font-weight:600;word-break:keep-all;overflow-wrap:anywhere}
.app .ops-score>span:first-child{font-size:var(--jini-ui-small)!important}
.app .ops-score>b{font-size:18px!important}
.app .platform-line{grid-template-columns:60px 50px minmax(0,1fr);gap:10px;padding:10px 0}
.app .platform-badges{grid-column:3;justify-content:flex-start}
.app .platform-label,.app .platform-content b{font-size:var(--jini-ui-body)!important}
.app .platform-score{font-size:17px!important}
.app .platform-content span,.app .badge,.app .flag{font-size:var(--jini-ui-small)!important}

/* Keep tabular comparisons. Scroll only inside a wide table, never the page. */
.app .tablepanel{overflow:hidden;min-width:0}
.app .tablewrap{overflow:auto;max-width:100%;overscroll-behavior-x:contain}
.app .table{font-size:var(--jini-ui-body);min-width:1100px}
.app .table th{font-size:var(--jini-ui-small);padding:10px;line-height:1.4;white-space:nowrap}
.app .table td{font-size:var(--jini-ui-body);padding:11px 10px;line-height:1.5;vertical-align:top;word-break:normal;overflow-wrap:normal}
.app .table :is(.cell-good,.cell-warn,.cell-muted,.source-mini,.unknown-note,.sub-code,.manage-chip,.dg-sub,.dg-services,.dg-rating){font-size:var(--jini-ui-small);line-height:1.5}
.app .table td:first-child{min-width:200px;max-width:240px}
.app .table td .btn{margin:2px;white-space:nowrap}
.app .client-table{min-width:1120px}
.app .client-table td:first-child{min-width:76px;white-space:nowrap}
.app .client-table td:nth-child(2){min-width:190px;max-width:230px}
.app .client-table td small{font-size:var(--jini-ui-small)}
.app .client-status{font-size:var(--jini-ui-small)}
.app #ads .ad-table{min-width:1340px}
.app #ads .ad-table :is(.ad-number,.ad-money),.app #ads .ad-table :is(td:nth-child(8),td:nth-child(9)){white-space:nowrap;font-variant-numeric:tabular-nums}
.app #ads .ad-table td:last-child{min-width:96px}
.app #ads :is(.ad-code,.ad-runway,.ad-sync-time,.ad-last-error){font-size:var(--jini-ui-small);line-height:1.5}
.app #ads .ad-sync-time{white-space:nowrap}
.app .sales-table{min-width:860px}
.app .sales-table td:not(:first-child){white-space:nowrap;font-variant-numeric:tabular-nums}
.app .sales-table td small{font-size:var(--jini-ui-small);white-space:normal}
.app .source-mini{white-space:normal}
.app :is(.store-link,.client-name-link,.agentops-store-name),.app #ads .ad-store,.app .sales-table td:first-child>b{display:block;max-width:100%;padding:8px 10px;border:1px solid #c9daec;border-left:3px solid #527dab;border-radius:6px;background:#eaf2fc;color:#173d66;font-size:var(--jini-ui-card-title);font-weight:650;line-height:1.45;text-align:left;white-space:normal;word-break:keep-all;overflow-wrap:anywhere}
.app .store-link:hover,.app .client-name-link:hover{background:#dfecfb}
.app .store-link,.app .client-name-link{width:100%}
.app .ad-help,.app .sales-help{gap:10px}
.app .ad-help .panel,.app .sales-help .panel{padding:12px}
.app #ads .ad-help b,.app .sales-help b{font-size:var(--jini-ui-card-title)}
.app #ads .ad-help p,.app .sales-help p{font-size:var(--jini-ui-label);line-height:1.5}
.app #ads .ad-action-panel{padding:14px;margin:14px 0;border-radius:var(--jini-ui-radius)}
.app #ads .ad-action-head b{font-size:var(--jini-ui-section-title)}
.app #ads :is(.ad-action-meta,.ad-action-head p,.ad-comparison-note,.ad-period label){font-size:var(--jini-ui-label)}
.app #ads .ad-action-store{font-size:var(--jini-ui-card-title);line-height:1.45;word-break:keep-all;overflow-wrap:anywhere}
.app #ads .ad-action-card{padding:12px}
.app #ads :is(.ad-signal,.ad-action-counts span){font-size:var(--jini-ui-small)}
.app .photo-policy-note{padding:9px 12px;margin:10px 0 13px}
.app .photo-policy-note b,.app .photo-policy-note span{font-size:var(--jini-ui-small)!important}
.app .nav{gap:5px;margin-top:22px}
.app .nav button,.app .home-nav-link{box-sizing:border-box;font-size:14px!important;min-height:38px;padding:9px 11px;line-height:20px}
.app .brand-main{font-size:17px!important}
.app .brand small,.app .sidefoot,.app .loginmeta{font-size:var(--jini-ui-small)!important}

/* Repeating work items use available width as client count grows. */
.app .nova-list,.app .nova-change-list,.app .agentops-list{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,350px),1fr));gap:12px;align-items:stretch}
.app .nova-task{grid-template-columns:28px minmax(0,1fr);gap:8px 10px;align-items:start;padding:12px}
.app .nova-task-actions{grid-column:2;justify-content:flex-start;align-self:end}
.app :is(.nova-task-actions,.client-actions,.ops-actions) .analysis-launch{margin-top:0!important}
.app .nova-task-copy>b{margin:5px 0;padding:6px 8px;border-radius:5px;background:#eaf2fc;color:#173d66;font-size:var(--jini-ui-card-title);font-weight:650;word-break:keep-all;overflow-wrap:anywhere}
.app .nova-task-copy>strong{font-size:var(--jini-ui-body);line-height:1.5}
.app .nova-task-copy>p{font-size:var(--jini-ui-label);line-height:1.55}
.app .nova-task-copy>span,.app .nova-task-copy>small{font-size:var(--jini-ui-small)}
.app .nova-change-item{grid-template-columns:76px minmax(0,1fr);align-items:start}
.app .nova-change-item>small{grid-column:2}
.app .agentops-task{min-width:0;padding:12px;display:flex;flex-direction:column}
.app .agentops-task-top>strong{font-size:var(--jini-ui-section-title)}
.app .agentops-subject{margin:10px 0 6px;color:#536b7b;font-size:var(--jini-ui-small)}
.app .agentops-subject>span{display:block;margin-top:4px}
.app .agentops-task h2{font-size:var(--jini-ui-card-title);line-height:1.45;margin:4px 0}
.app .agentops-copy{grid-template-columns:minmax(0,1fr);gap:8px;margin-top:8px}
.app .agentops-copy p{font-size:var(--jini-ui-body);line-height:1.55}
.app .agentops-copy b,.app .agentops-evidence{font-size:var(--jini-ui-small)}
.app .agentops-actions{margin-top:auto;padding-top:12px}
.app .agentops-actions .btn,.app .nova-task-actions .btn{font-size:var(--jini-ui-control)!important;min-height:36px!important}
.app .agentops-agent-card>strong{font-size:var(--jini-ui-kpi)}
.app .agentops-agent-card>small{font-size:var(--jini-ui-small);line-height:1.5}
.app #agentOpsRuntime .agentops-runtime-grid{grid-template-columns:repeat(auto-fit,minmax(min(100%,210px),1fr))}
.app .agentops-run{padding:10px}
.app .agentops-empty,.app .nova-list>.empty{grid-column:1/-1}
.app #productRegistry .registry-card{padding:15px}
.app #productRegistry :is(.registry-card,.registry-task) h2{font-size:var(--jini-ui-card-title)}
.app #productRegistry .registry-stat{padding:12px 14px}
.app #productRegistry .registry-stat strong{font-size:var(--jini-ui-kpi);margin:5px 0}
.app #productRegistry .registry-task-list{grid-template-columns:repeat(auto-fit,minmax(min(100%,350px),1fr))}
.app #settings.active{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.app #settings .top{grid-column:1/-1}
.app #settings .panel{padding:14px}
.app .analysis-toolbar{padding:12px;gap:10px}
.app .analysis-selected{font-size:var(--jini-ui-card-title)}
.app .analysis-welcome{padding:20px!important}
.app .analysis-welcome h2{font-size:var(--jini-ui-section-title)}
.app .analysis-welcome p{font-size:var(--jini-ui-body);line-height:1.55}
.app .analysis-welcome small{font-size:var(--jini-ui-small)}
.app .analysis-flow{gap:10px;margin:16px 0}
.app .analysis-flow span{padding:10px 12px;font-size:var(--jini-ui-label)}
@media(min-width:1600px){.app #ads .ad-kpis{grid-template-columns:repeat(8,minmax(0,1fr))}}
@media(max-width:1250px) and (min-width:801px){.app{grid-template-columns:205px minmax(0,1fr)}.app .side{width:205px}.app .main{padding-inline:16px}}
@media(max-width:800px){
 .app .main{padding:14px 12px 28px}.app .side{width:100%;padding:13px 12px 0}
 .app .nav{margin-top:11px}.app .nav button,.app .home-nav-link{min-height:44px;padding:10px 13px;line-height:24px}
 .app :is(.btn,.viewbtn),.app .agentops-actions .btn,.app .nova-task-actions .btn{min-height:44px!important}
 .app .filters :is(input,select),.app #ads .ad-period :is(input,select),.app .agentops-toolbar select{font-size:16px!important;min-height:44px}
 .app .stats,.app #ads .ad-kpis,.app #sales .stats{grid-template-columns:repeat(2,minmax(0,1fr))}
 .app .stats .stat b{font-size:22px!important}
 .app .photo-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
 .app .ops-list-card{grid-template-columns:minmax(0,1fr)}
 .app .platform-line{grid-template-columns:60px minmax(0,1fr)}
 .app .platform-content,.app .platform-badges{grid-column:1/-1}
 .app :is(.tablepanel,.tablewrap):has(.mobile-records){overflow:visible;border:0;background:transparent;box-shadow:none}
 .app :is(#naver,#daangn,#ads,#clients,#sales) table.mobile-records{display:block;width:100%;min-width:0;background:transparent}
 .app .section .mobile-records tbody{grid-template-columns:repeat(auto-fit,minmax(min(100%,330px),1fr));align-items:start}
 .app :is(#naver,#daangn,#ads,#clients,#sales) table.mobile-records td{min-width:0;max-width:none;white-space:normal;overflow-wrap:anywhere;font-size:14px!important}
 .app :is(#naver,#daangn,#ads,#clients,#sales) table.mobile-records td:first-child{min-width:0;max-width:none}
 .app .section .mobile-records :is(.ad-number,.ad-money){white-space:nowrap!important;overflow-wrap:normal}
 .app .section .mobile-records .sales-badge{font-size:12px}
 .app :is(#naver,#daangn,#ads,#clients,#sales) table.mobile-records .store-link,.app #ads .ad-store{font-size:15px!important}
 .app .alert-business-grid{grid-template-columns:repeat(auto-fit,minmax(min(100%,330px),1fr))}
 .app .nova-list,.app .nova-change-list,.app .agentops-list{grid-template-columns:repeat(auto-fit,minmax(min(100%,330px),1fr))}
 .app .agentops-stats{grid-template-columns:repeat(2,minmax(0,1fr))}
 .app #settings.active{grid-template-columns:minmax(0,1fr)}
}

/* ===== AI Business Intelligence ===== */
.app-shell{font-size:var(--jini-ui-body)}
.app-shell .workspace{min-width:0}
.app-shell .workspace-inner{width:min(100%,1480px)!important;max-width:1480px!important;padding:18px 22px 40px!important;margin-inline:auto}
.app-shell .topbar{min-height:68px;padding:12px 20px}
.app-shell .topbar h2{font-size:22px!important;line-height:1.2}
.app-shell .topbar p,.app-shell .topbar-badges span{font-size:13px!important}
.app-shell .search-section,
.app-shell .candidate-section,
.app-shell .analysis-result,
.app-shell .ready-card,
.app-shell .panel,
.app-shell .business-map{border-radius:12px}
.app-shell .search-section{padding:22px!important}
.app-shell .search-heading h2,
.app-shell .section-heading h2,
.app-shell .analysis-heading h2{font-size:var(--jini-ui-section-title)!important;line-height:1.35}
.app-shell .search-heading p,
.app-shell .section-heading p,
.app-shell .analysis-heading p{font-size:14.5px!important;line-height:1.6}
.app-shell .eyebrow{font-size:12.5px!important;letter-spacing:.12em}
.app-shell .search-command{gap:10px}
.app-shell .search-input-wrap{min-height:64px!important;padding:9px 14px!important}
.app-shell .search-input-wrap label{font-size:13px!important}
.app-shell .search-input-wrap input{font-size:17px!important}
.app-shell .search-button,.app-shell .primary-button,.app-shell .secondary-button,.app-shell .text-button{font-size:14px!important;min-height:42px}
.app-shell .flow-mini,.app-shell .search-tips,.app-shell .mode-badge{font-size:13px!important}
.app-shell .candidate-layout{gap:14px}
.app-shell .candidate-card{padding:14px!important}
.app-shell .candidate-card h3,.app-shell .identity-title h3{font-size:18px!important}
.app-shell .candidate-card p,.app-shell .candidate-card span,.app-shell .identity-meta span{font-size:13.5px!important}
.app-shell .selection-panel{padding:16px!important}
.app-shell .selection-panel strong{font-size:17px!important}
.app-shell .signal-grid{gap:9px}
.app-shell .signal-grid>*{padding:12px!important}
.app-shell .business-map{margin:12px 0!important;padding:14px!important}
.app-shell .business-map-heading h4{font-size:17px!important}
.app-shell .business-map-heading p,
.app-shell .map-legend,
.app-shell .map-selection-copy>span,
.app-shell .map-selection-copy>p,
.app-shell .map-coverage-note,
.app-shell .map-toolbar button,
.app-shell .map-links a,
.app-shell .copy-map-address,
.app-shell .competitor-map-button{font-size:13.5px!important}
.app-shell .business-map-canvas{height:330px!important}
.app-shell .analysis-layout{gap:14px!important}
.app-shell .panel{padding:15px!important}
.app-shell .panel-heading h3,
.app-shell .content-preview h3,
.app-shell .conversation-heading h3,
.app-shell .writing-guide h3{font-size:18px!important}
.app-shell .panel-heading p,
.app-shell .conversation-heading p,
.app-shell .writing-guide p{font-size:13.5px!important}
.app-shell .plan-card{padding:12px!important}
.app-shell .plan-card span,.app-shell .plan-card p,.app-shell .plan-card small{font-size:13.5px!important}
.app-shell .conversation-suggestions button{font-size:13px!important;padding:9px 11px!important}
.app-shell textarea,.app-shell input,.app-shell select{font-size:14px}
.app-shell .source-card,.app-shell .comparison-card,.app-shell .opportunity-card{padding:12px!important}
.app-shell .integration-controls,.app-shell .monitoring-context{padding:14px}
.app-shell :is(.integration-savebar strong,.monitoring-context summary,.monitoring-grid h4){font-size:var(--jini-ui-card-title)}
.app-shell .monitoring-grid{grid-template-columns:repeat(auto-fit,minmax(min(100%,340px),1fr));gap:12px}
.app-shell .monitoring-grid section{padding:12px}
.app-shell .monitoring-grid dl div{font-size:var(--jini-ui-body);padding:7px 0;gap:12px}
.app-shell :is(.integration-savebar span,.integration-binding,.integration-note,.production-bridge p,.production-bridge label,.profile-panel p,.profile-fields label,.ai-strategy p){font-size:var(--jini-ui-body)}
.app-shell :is(.monitoring-grid small,.monitoring-grid h4 a,.conversation-heading span,.conversation-block>span,.conversation-byline time,.conversation-question span,.conversation-form small,.conversation-references details,.conversation-references p,.conversation-search-log){font-size:var(--jini-ui-small)}

/* ===== Public JININOVA pages ===== */
body[data-page]{font-size:16px}
body[data-page] .hub-wrap,
body[data-page] .section-shell,
body[data-page] .header-inner{width:min(calc(100% - 48px),1380px)!important;max-width:1380px!important;margin-inline:auto}
body[data-page] .site-header,
body[data-page] .hub-header{font-size:14px}
body[data-page] .site-header a,
body[data-page] .hub-header a,
body[data-page] .site-header button,
body[data-page] .hub-header button{font-size:14px!important}
body[data-page="business-hub"] .hub-hero h1{font-size:clamp(46px,4.8vw,72px)!important;line-height:1.02}
body[data-page="business-hub"] .hub-hero p,
body[data-page="business-hub"] .hub-intro p,
body[data-page="business-hub"] .hub-section p{font-size:16px!important;line-height:1.65}
body[data-page="business-hub"] .hub-section-head h2{font-size:clamp(30px,2.7vw,40px)!important;line-height:1.15}
body[data-page="business-hub"] .hub-product-top h3,
body[data-page="business-hub"] .hub-core-grid h3{font-size:21px!important}
body[data-page="business-hub"] .hub-product-top p,
body[data-page="business-hub"] .hub-core-grid p,
body[data-page="business-hub"] .hub-product-links a{font-size:14.5px!important}
body[data-page="services"] .subpage-hero h1,
body[data-page="inquiry"] .subpage-hero h1,
body[data-page="about"] .about-hero h1{font-size:clamp(42px,4.2vw,64px)!important;line-height:1.06}
body[data-page="services"] .subpage-hero p,
body[data-page="inquiry"] .subpage-hero p,
body[data-page="about"] .about-hero p{font-size:17px!important;line-height:1.65}
body[data-page] .section-heading h2,
body[data-page] .service-detail h2,
body[data-page] .contact-copy h2,
body[data-page] .form-heading h2{font-size:clamp(28px,2.6vw,38px)!important;line-height:1.15}
body[data-page] .section-heading p,
body[data-page] .service-detail p,
body[data-page] .contact-copy p,
body[data-page] .form-heading p{font-size:15.5px!important;line-height:1.65}

@media (max-width:800px){
  :root{--jini-ui-body:14px;--jini-ui-page-title:22px;--jini-ui-section-title:18px}
  .app .side{width:100%}
  .app .main{padding:14px 12px 28px}
  .app .main>.section{max-width:none}
  .app .top h1{font-size:var(--jini-ui-page-title)!important}



  .app-shell .workspace-inner{padding:12px 10px 28px!important}
  .app-shell .search-section{padding:15px!important}
  .app-shell .search-heading h2,.app-shell .section-heading h2,.app-shell .analysis-heading h2{font-size:var(--jini-ui-section-title)!important}
  .app-shell :is(input,select,textarea){font-size:16px!important}
  .app-shell .business-map-canvas{height:310px!important}
  body[data-page] .hub-wrap,
  body[data-page] .section-shell,
  body[data-page] .header-inner{width:min(calc(100% - 28px),1380px)!important}
}
