/* FYCOM 3D Viewer v1.4.2 — coherent workspace rhythm. TEST ONLY. */
:root{
 --fy42-accent:#83b83b;
 --fy42-accent-strong:#6c9f28;
 --fy42-radius:14px;
 --fy42-large:19px;
 --fy42-outline:var(--fy-ui-border,var(--border,#d4dae4));
 --fy42-soft-shadow:0 7px 24px rgba(22,30,43,.065);
 --fy42-ease:160ms ease;
}
/* A consistent stack: content panels and controls align to the same spacing grid. */
body .viewer-section{min-width:0}
body .viewer-section :is(.annotations-panel,.spec-panel){margin-block:18px;border-radius:var(--fy42-large);box-shadow:var(--fy42-soft-shadow)}
body .viewer-header{margin-bottom:18px}
body .viewer-header h2{margin-block:5px 7px;letter-spacing:-.04em}
body .viewer-header .eyebrow{letter-spacing:.13em}
body .stage{box-shadow:var(--fy42-soft-shadow)}
body .stage .stage-top,body .stage .stage-bottom{padding-inline:clamp(12px,1.6vw,20px)}
/* Distinct, single visual language for tool controls. */
body .viewer-section>.toolbar{margin-block:14px 6px;align-items:center;gap:12px}
body .viewer-section>.toolbar .toolgroup{gap:9px;align-items:center}
body .viewer-section>.toolbar .tool,
body .viewer-section .details-controls .tool,
body #fy-editor-entry-v133 :is(button,a){min-height:44px;border-radius:12px;font-weight:680;line-height:1.3}
body .viewer-section>.toolbar .tool{padding:10px 14px}
body .viewer-section>.toolbar .tool.selected{box-shadow:inset 0 0 0 1px rgba(89,144,37,.2)}
body .viewer-section>.toolbar .tool:focus-visible{outline:2px solid var(--fy42-accent);outline-offset:3px}
body #fy-editor-entry-v133{margin:14px 0 18px;padding:14px 16px;border-radius:var(--fy42-radius);border:1px solid var(--fy42-outline);box-shadow:var(--fy42-soft-shadow);gap:10px}
body #fy-editor-entry-v133 :is(button,a){transition:background var(--fy42-ease),border-color var(--fy42-ease),transform var(--fy42-ease)}
body #fy-editor-entry-v133 :is(button,a):hover{transform:translateY(-1px)}
/* Exposure is a real viewing preference, not a loose footer slider. */
body .viewer-section .details-controls{display:flex;align-items:center;flex-wrap:wrap;gap:12px 16px;margin:18px 0 20px;padding:16px 18px;border-radius:var(--fy42-large);border:1px solid var(--fy42-outline);box-shadow:var(--fy42-soft-shadow);min-width:0}
body .viewer-section .details-controls>label{font-size:13px;font-weight:700;min-width:105px;margin:0}
body .viewer-section .details-controls output{display:inline-block;margin-left:6px;font-size:12px;font-variant-numeric:tabular-nums;font-weight:750;color:var(--fy42-accent-strong)}
body .viewer-section .details-controls>input[type=range]{flex:0 1 230px;min-width:120px;max-width:280px;accent-color:var(--fy42-accent-strong);cursor:pointer}
body .viewer-section .details-controls>#manage-buttons{margin-left:auto;gap:9px;flex-wrap:wrap}
body .viewer-section .details-controls>#manage-buttons.hidden{display:none!important}
/* The v1.3.8 agreement controls (when present) share the same panel geometry. */
body .fycom-exposure-agreement-tools{margin:16px 0 20px;padding:14px 16px;border:1px solid var(--fy42-outline);border-radius:var(--fy42-large);box-shadow:var(--fy42-soft-shadow);display:flex;align-items:center;gap:12px;flex-wrap:wrap}
body .fycom-exposure-agreement-tools .fycom-exposure-control{gap:10px;flex-wrap:wrap}
body .fycom-exposure-agreement-tools :is(button,a){min-height:44px;border-radius:12px}
body .fycom-exposure-agreement-tools .fy-action-v139{margin-left:auto;background:var(--fy42-accent)!important;color:#17300a!important;border-color:var(--fy42-accent-strong)!important}
/* Agreement follows viewing, but remains an independent business workflow. */
body .viewer-section :is(#approval-panel,#agreement-panel,.agreement-card,.approval-card){margin-block:18px;border:1px solid var(--fy42-outline);border-radius:var(--fy42-large);box-shadow:var(--fy42-soft-shadow)}
body .viewer-section :is(#approval-panel,#agreement-panel,.agreement-card,.approval-card) :is(input,select,textarea){border-radius:11px;transition:border-color var(--fy42-ease),box-shadow var(--fy42-ease)}
body .viewer-section :is(#approval-panel,#agreement-panel,.agreement-card,.approval-card) :is(input,select,textarea):focus{outline:2px solid var(--fy42-accent);outline-offset:1px}
/* Top-level workspace surfaces. */
body .filterbar{margin-bottom:12px}
body .gallery{gap:18px}
body .gallery-card{overflow:hidden;border-radius:var(--fy42-large)}
body .admin-card{border-radius:var(--fy42-large)}
body .sidebar .nav{border-radius:12px}
body .top .brand{letter-spacing:-.03em}
@media(max-width:900px){body .viewer-section .details-controls>#manage-buttons{margin-left:0;width:100%}body .fycom-exposure-agreement-tools .fy-action-v139{margin-left:0}}
@media(max-width:600px){body .viewer-section>.toolbar .toolgroup{width:100%}body .viewer-section>.toolbar .tool{flex:1 1 auto}body .viewer-section .details-controls{padding:14px;gap:9px}body .viewer-section .details-controls>input[type=range]{flex:1 1 140px}body .fycom-exposure-agreement-tools{padding:13px}}
@media(prefers-reduced-motion:reduce){body #fy-editor-entry-v133 :is(button,a){transition:none}body #fy-editor-entry-v133 :is(button,a):hover{transform:none}}
