/* DS24: shared finishing layer. Existing routes, controls and module states remain authoritative. */
:root{--experience-space:clamp(16px,2.2vw,28px);--experience-border:#dce7e2;--experience-focus:#087862;--experience-radius:16px}
body :is(main,.admin-content,.c-main){min-width:0}
body :is(main,.admin-content,.c-main) :is(h1,h2,h3,p,dd,.breadcrumbs,.document-card,.form-actions){overflow-wrap:anywhere}
body :is(a,button,input,select,textarea,summary,[tabindex]):focus-visible{outline:3px solid var(--experience-focus);outline-offset:3px}
body :is(.form-grid,.filter-form,.admin-filter,.filter-bar,.form-actions,.hero-actions,.admin-page-head,.document-card)>*{min-width:0}
body :is(input:not([type=checkbox]):not([type=radio]):not([type=hidden]),select,textarea){max-width:100%;box-sizing:border-box}
body :is(.form-actions,.admin-welcome-actions,.hero-actions,.document-actions){flex-wrap:wrap;gap:10px}
body :is(.breadcrumbs,.pagination){flex-wrap:wrap;row-gap:8px}
body :is(.admin-card,.panel-card,.document-card,.content-card){border-radius:var(--experience-radius)}
body :is(.button,.icon-button){text-shadow:none}
body :is(.admin-card,.content-card,.document-card){box-shadow:0 4px 18px #123e3210}
body.admin-body :is(.admin-page-head,.admin-card-head){gap:16px;flex-wrap:wrap}
body.admin-body .admin-content{padding-bottom:max(28px,env(safe-area-inset-bottom))}
body.admin-body:not(.has-tinta-studio) .admin-topbar h1{line-height:1.3;letter-spacing:-.02em}
body.admin-body #admin-sidebar .admin-nav :is(a,summary){transition:background-color .16s ease,color .16s ease}
body.admin-body #admin-sidebar .admin-nav a.is-active{box-shadow:inset 3px 0 0 var(--experience-focus)}
/* Visible content is a baseline across public, PPID, Humas, Tinta and contributor shells. */
body:not(.admin-body) :is(.reveal,[data-reveal],.content-card,.professional-staff-card,.external-news-card,.stat-card),
html.motion-ready body:not(.admin-body) [data-motion-item].is-motion-pending{opacity:1!important;transform:none!important;filter:none!important;will-change:auto}
/* Tables scroll inside their own region; columns/actions are never removed. */
.ds23-table-scroll{width:100%;max-width:100%;min-width:0;overflow-x:auto;overscroll-behavior-x:contain;scrollbar-gutter:stable;border-radius:10px}
.ds23-table-scroll>table{max-width:none}
.ds23-table-hint{margin:8px 0;color:var(--muted,#526b62);font-size:13px;line-height:1.5}
.ds23-table-hint[hidden]{display:none!important}
.ds23-form-errors{margin:0 0 20px;padding:16px 18px;border:1px solid #c47b67;border-left:4px solid #a63320;border-radius:12px;background:#fff7f2;color:#702a1b;scroll-margin-top:100px}
.ds23-form-errors h2{margin:0 0 8px;font-size:16px!important;color:inherit}
.ds23-form-errors ul{padding-left:20px;margin:0}
.ds23-form-errors a{color:inherit;text-decoration:underline;line-height:1.65}
body :is(dialog,.portal-nav,.drawer-panel){overscroll-behavior:contain}
body .portal-nav details:not([open])>:not(summary){display:none!important}
body .portal-nav-group>summary{min-height:44px}
@media(max-width:1000px){
 body :is(input:not([type=checkbox]):not([type=radio]):not([type=hidden]),select,textarea){font-size:16px}
 body :is(.button,.icon-button,button[type=submit]){min-height:44px}
 body .form-actions>.button{white-space:normal;text-align:center}
 body :is(.form-grid,.admin-filter,.filter-form){column-gap:16px}
}
@media(max-width:767px){
 body.public-site-body .site-header .header-inner{gap:8px;padding-inline:12px}
 body.public-site-body .site-header .brand{flex:1 1 auto;gap:8px;min-width:0}
 body.public-site-body .site-header .brand>img{width:32px;height:42px;object-fit:contain;flex:none}
 body.public-site-body .site-header .brand>span{display:grid!important;min-width:0}
 body.public-site-body .site-header .brand strong{font-size:12px;white-space:normal;line-height:1.3;letter-spacing:0}
 body.public-site-body .site-header .brand small{display:none}
 body.public-site-body .site-header .header-actions{gap:4px}
 body.public-site-body .site-header .header-actions>.icon-button{width:44px;flex:none}
 body.public-site-body .premium-hero-shell{padding:18px!important;gap:20px!important}
 body.public-site-body .premium-hero-visual{display:block!important;padding:0;min-width:0}
 body.public-site-body .premium-hero-image-wrap{height:clamp(160px,49vw,240px)!important;min-height:0!important;max-height:240px!important;aspect-ratio:16/9;border-radius:16px}
 body.public-site-body .premium-hero-copy h1{line-height:1.15;margin-bottom:16px}
 body.public-site-body .premium-hero-copy h1 span{font-size:clamp(28px,7vw,36px)}
 body.public-site-body .premium-hero-copy h1 strong{font-size:clamp(24px,6vw,30px)}
 body.public-site-body .premium-hero-actions{gap:8px}
 body.public-site-body .premium-action{flex:1 1 120px;min-height:46px;padding:11px 12px;border-radius:12px}
 body.public-site-body .premium-hero-microstats{margin-top:18px;gap:6px}
 body.public-site-body .premium-hero-microstats span{min-width:0;flex:1;padding:9px}
 body :is(.form-grid,.contact-grid){grid-template-columns:minmax(0,1fr)}
 body :is(.form-grid,.contact-grid)>.full{grid-column:1/-1}
 body :is(.form-actions,.document-actions){align-items:stretch}
 body :is(.form-actions,.document-actions)>.button{flex:1 1 130px}
 body :is(.admin-page-head,.admin-card-head,.section-heading){align-items:flex-start;gap:14px}
 body .contrib-review-head{flex-wrap:wrap}
 body .contrib-review-buttons>*{min-width:0;flex:1 1 140px}
 body :is(.portal-header-row,.tinta-header-inner){gap:10px}
 body :is(.portal-header-actions,.tinta-header-actions){gap:6px;flex-wrap:wrap}
 body .portal-brand{min-width:0}
 body .portal-brand span{min-width:0;white-space:normal}
 body .portal-brand small{overflow-wrap:anywhere}
 body .ds23-form-errors{padding:14px;scroll-margin-top:80px}
}
@media(max-height:500px){body :is(.hub-save,.form-actions.is-sticky){position:static!important}}
html[data-theme=dark]{--experience-border:#36584d;--experience-focus:#7fddbe}
html[data-theme=dark] .ds23-form-errors{background:#38241f;color:#ffd6c8;border-color:#b77d6c}
@media(prefers-reduced-motion:reduce){body .admin-nav :is(a,summary){transition:none!important}}
@media print{.ds23-table-hint,.ds23-form-errors{display:none!important}.ds23-table-scroll{overflow:visible}}
/* Legacy mobile card rules may set overflow:visible!important on table wrappers. */
body.admin-body .admin-content .ds23-table-scroll{overflow-x:auto!important;max-width:100%;min-width:0}

/* Grouped studio navigation has one independent scroll area, including short landscape screens. */
dialog#ds20-studio-menu.ds24-studio-menu[open]{display:flex;flex-direction:column;gap:10px;width:min(640px,calc(100vw - 24px));height:min(700px,calc(100dvh - 24px));max-height:calc(100dvh - 24px);overflow:hidden;padding:16px}
#ds20-studio-menu.ds24-studio-menu>header{flex:none;gap:12px}
#ds20-studio-menu.ds24-studio-menu>input{flex:none;margin:0}
#ds20-studio-menu.ds24-studio-menu>p{flex:none;margin:0;color:#526b62;font-size:13px;line-height:1.5}
#ds20-studio-menu.ds24-studio-menu>nav{display:block;flex:1;min-height:0;overflow:auto;overscroll-behavior:contain;scrollbar-gutter:stable;padding:2px}
#ds20-studio-menu .ds24-studio-group{margin:4px 0;border:1px solid var(--experience-border);border-radius:10px}
#ds20-studio-menu .ds24-studio-group>summary{min-height:44px;padding:11px 12px;font-size:14px;font-weight:700;cursor:pointer;overflow-wrap:anywhere}
#ds20-studio-menu .ds24-studio-group>div{padding:0 8px 8px}
#ds20-studio-menu .ds24-studio-group:not([open])>:not(summary){display:none!important}
#ds20-studio-menu a.is-active{background:#eaf5ee;font-weight:700}
#ds20-studio-menu .ds24-studio-group[hidden]{display:none!important}
@media(max-height:450px){dialog#ds20-studio-menu.ds24-studio-menu[open]{padding:10px;gap:6px}#ds20-studio-menu.ds24-studio-menu>header h2{font-size:16px}}
/* Four native content types share the existing save owner, with a real presentation layer. */
body.has-native-content-studio .content-editor-jump{display:none}
body.has-native-content-studio .studio-stage-hidden{display:none!important}
body.has-native-content-studio .aswe-dialog .aswe-viewport{flex:1;min-height:0;overflow:auto;padding:16px}
body.has-native-content-studio .ds24-native-content-form{width:100%;max-width:1050px;margin:0 auto}
body.has-native-content-studio .ds24-native-content-form .editor-layout{display:block}
body.has-native-content-studio .ds24-native-content-form .editor-main-card,
body.has-native-content-studio .ds24-native-content-form .editor-sidebar{width:100%;max-width:100%;min-width:0}
body.has-native-content-studio .aswe-header{display:flex;align-items:center;gap:8px;flex-wrap:wrap;flex:none}
body.has-native-content-studio .aswe-dialog .aswe-header .ds24-native-steps{display:flex!important;gap:6px;flex-wrap:wrap;margin:0;flex:1 1 320px}
body.has-native-content-studio .ds24-native-steps button{min-height:44px;flex:1;padding:8px;border:1px solid var(--experience-border);background:#f4f8f5;border-radius:9px;font:600 13px system-ui;color:#254d3e}
body.has-native-content-studio .ds24-native-steps button.is-active{background:#14634d;color:#fff}
body.has-native-content-studio .aswe-footer{display:flex;gap:8px;flex-wrap:wrap;padding:10px;flex:none;max-height:34dvh;overflow:auto}
body.has-native-content-studio [data-editor-panel][hidden]{display:none!important}
@media(max-width:767px){body.has-native-content-studio .aswe-dialog .aswe-viewport{padding:10px}body.has-native-content-studio .ds24-native-content-form .form-grid{grid-template-columns:minmax(0,1fr)}}
body.has-native-content-studio .aswe-header .tinta-master-preview{min-height:44px;padding:8px 12px;border:1px solid var(--experience-border);border-radius:10px;background:#f2f8f4;color:#24553f;font:600 13px system-ui}
body.has-native-content-studio .aswe-footer>.aswe-action-choices:not([hidden]){display:grid;grid-template-columns:minmax(0,1fr) auto;gap:6px;order:0;flex:1 0 100%;width:100%;min-width:0}
body.has-native-content-studio .aswe-footer .aswe-action-hint{grid-column:1/-1;font-size:12px}
body.has-native-content-studio .aswe-footer .aswe-action-select{min-height:44px;width:100%;margin:0;font-size:16px}
body.has-native-content-studio .aswe-footer .aswe-action-run{min-height:44px;margin:0;padding:8px 14px;flex:none}
body.has-native-content-studio .aswe-final .aswe-footer>.aswe-button,
body.has-native-content-studio .aswe-final .aswe-footer>.aswe-text-button{order:1;flex:1 1 26%;min-width:0;min-height:44px;padding:6px;font-size:12px;line-height:1.25;text-align:center}
/* Override historical mobile footer grids only inside the native content adapter. */
body.has-native-content-studio .aswe-dialog .aswe-footer{display:flex!important;overflow:auto!important}
body.has-native-content-studio .aswe-dialog.aswe-final .aswe-footer>.aswe-button,
body.has-native-content-studio .aswe-dialog.aswe-final .aswe-footer>.aswe-text-button{flex:1 1 26%!important;width:auto!important;grid-column:auto!important;grid-row:auto!important}
body.has-native-content-studio .aswe-action-choices .aswe-action-select{grid-column:1!important;grid-row:2!important}
body.has-native-content-studio .aswe-action-choices .aswe-action-run{grid-column:2!important;grid-row:2!important}
/* Original submitters remain in the form; the save owner exposes their exact actions once. */
body.has-native-content-studio .aswe-viewport .editor-command-bar__actions,
body.has-native-content-studio .aswe-viewport .editorial-action-buttons{display:none!important}
/* A short landscape screen uses one document scroller instead of a 20px writing viewport. */
@media(max-height:500px){
 body.admin-body.has-tinta-studio.has-native-content-studio .aswe-dialog[data-aswe-inline="1"]{display:block!important;overflow-y:auto!important;overscroll-behavior:contain}
 body.admin-body.has-native-content-studio .aswe-dialog .aswe-viewport{height:auto!important;max-height:none!important;min-height:220px;overflow:visible!important}
 body.admin-body.has-native-content-studio .aswe-dialog .aswe-footer{max-height:none!important;overflow:visible!important}
}
body.has-native-content-studio .workflow-banner{display:flex;flex-wrap:wrap;gap:8px;align-items:flex-start}
body.has-native-content-studio .workflow-banner>strong{flex:0 0 auto;min-width:min-content;max-width:100%;word-break:normal;overflow-wrap:normal;white-space:normal}
body.has-native-content-studio .workflow-banner>span{flex:1 1 220px;min-width:0}
