/* CPPM foundation. Self-hosted, no framework, no remote fonts. */
:root{color-scheme:light;--navy:#142a3c;--navy-soft:#203b4e;--teal:#086963;--teal-hover:#06544f;--ink:#203341;--muted:#526572;--canvas:#f3f4f0;--surface:#fcfcf8;--line:#d5ddd8;--soft:#e8eeea;--focus:#a64c13;--radius:10px;--shadow:0 12px 35px #142a3c0a;font-family:Inter,"Segoe UI",Arial,sans-serif;font-size:16px;line-height:1.55}
*{box-sizing:border-box}body{margin:0;background:var(--canvas);color:var(--ink)}[hidden]{display:none!important}button,input,select,textarea{font:inherit}button,a,input,select,textarea{-webkit-tap-highlight-color:transparent}a{color:var(--teal);text-underline-offset:4px}button{cursor:pointer}button:disabled{cursor:wait}a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,[tabindex]:focus-visible{outline:3px solid var(--focus);outline-offset:4px}h1,h2,h3,h4,p{margin-top:0}h1,h2{font-family:Georgia,"Times New Roman",serif;font-weight:400;letter-spacing:-.025em;line-height:1.18}h1{font-size:clamp(2rem,3vw,2.8rem);margin-bottom:16px}h2{font-size:1.65rem;margin-bottom:20px}h3{font-size:1.05rem}h4{font-size:1rem}p{margin-bottom:16px}.icon{width:22px;height:22px;flex-shrink:0;vertical-align:middle}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}.skip-link{position:fixed;z-index:100;left:12px;top:-100px;background:var(--surface);padding:12px 20px;color:var(--ink);border:2px solid var(--teal)}.skip-link:focus{top:12px}.button{display:inline-flex;align-items:center;justify-content:center;gap:12px;min-height:46px;padding:10px 18px;border:1px solid transparent;border-radius:6px;text-decoration:none;font-weight:600;line-height:1.4;transition:background-color .15s,border-color .15s}.button-primary{background:var(--teal);color:#fff;border-color:var(--teal)}.button-primary:hover{background:var(--teal-hover)}.button-secondary{background:var(--surface);color:var(--ink);border-color:#a4b3ad}.button-secondary:hover{background:var(--soft)}.button-full{width:100%;justify-content:space-between;padding:14px 18px}.button-row{display:flex;gap:12px;flex-wrap:wrap;margin-top:26px}.button[aria-disabled=true]{opacity:.7;cursor:wait}.intro{color:var(--muted);max-width:650px;font-size:1.0625rem;line-height:1.7}.eyebrow,.small-label{display:block;letter-spacing:.12em;font-size:.75rem;line-height:1.5;font-weight:700;color:var(--teal)}.eyebrow{margin-bottom:14px}.muted{color:var(--muted)}.breadcrumb{display:flex;gap:12px;color:var(--muted);font-size:.875rem;margin-bottom:35px}.breadcrumb span{color:#788780}.stack{display:grid;gap:22px}.field{display:grid;gap:8px}.field label{font-weight:600}.field-help{margin:0;font-size:.875rem;color:var(--muted)}.field-error{margin:0;font-size:.875rem;color:#a13030}input:not([type=checkbox]):not([type=hidden]),select,textarea{width:100%;background:var(--surface);color:var(--ink);border:1px solid #a4b3ad;border-radius:5px;min-height:48px;padding:11px 13px}input::placeholder{color:#64756e;opacity:1}textarea{resize:vertical}input[aria-invalid=true]{border-color:#a13030;background:#fff8f5}.checkbox{display:flex;gap:10px;align-items:flex-start;min-height:44px}input[type=checkbox]{width:20px;height:20px;accent-color:var(--teal);margin-top:3px}.alert{padding:16px 18px;border:1px solid #bfd2ce;border-left:3px solid var(--teal);border-radius:5px;background:#edf4f0;color:#264e4b;margin-bottom:22px}.alert-success{background:#edf3eb;border-color:#c0d4bd;color:#285536}.alert-error{background:#fff0ec;border-color:#e5bcb1;border-left-color:#a13030;color:#822b26}.badge{display:inline-flex;align-items:center;gap:7px;padding:5px 10px;border-radius:5px;font-size:.8125rem;font-weight:600;line-height:1.5;white-space:nowrap}.status-dot{width:6px;height:6px;border-radius:50%;background:currentColor}.badge-neutral{color:#52636a;background:#edf0ed}.badge-progress{color:#295d85;background:#e8f0f7}.badge-ready{color:#07635b;background:#e2f0e9}.badge-approved{color:#35612c;background:#e9f0df}.badge-blocked{color:#875014;background:#f8ecd6}.text-link{display:inline-flex;gap:12px;align-items:center;font-weight:600;text-decoration:none;min-height:44px}.text-link:hover{text-decoration:underline}
/* Shared frame */
.app-layout{display:grid;grid-template-columns:248px minmax(0,1fr);min-height:100vh}.sidebar{background:var(--navy);color:#fff;padding:34px 20px 24px;display:flex;flex-direction:column;position:sticky;top:0;height:100vh}.brand{display:flex;align-items:center;gap:12px;color:#fff;text-decoration:none;font-size:1.65rem;font-weight:650;letter-spacing:.1em;line-height:1.2}.brand>.icon{width:34px;height:38px;color:#a8cebd}.brand small{display:block;font-size:.7rem;letter-spacing:.05em;font-weight:400;margin-top:7px;color:#c0d0d8}.desktop-brand{margin:0 10px 57px}.nav-caption{color:#a5bcc6;letter-spacing:.15em;font-size:.7rem;margin:0 14px 15px;font-weight:700}.nav-link{display:flex;align-items:center;gap:12px;padding:13px 14px;border-radius:6px;min-height:48px;color:#c5d2da;text-decoration:none;margin-bottom:6px;font-size:.9375rem}.nav-link:hover{background:var(--navy-soft);color:#fff}.nav-link.is-active{background:#274451;color:#fff;box-shadow:inset 3px 0 #99c8b3}.sidebar-note{margin:44px 14px 20px;padding-top:24px;border-top:1px solid #395262}.sidebar-note .small-label{font-size:.625rem;color:#a5cbb8;letter-spacing:.09em}.sidebar-note p{font-family:Georgia,serif;font-size:1.23rem;line-height:1.65;color:#d5dedb;margin:15px 0}.sidebar-bottom{margin-top:auto;padding:20px 10px 0}.sidebar-role{display:flex;gap:9px;align-items:center;color:#bfd0d8;font-size:.8125rem;margin-bottom:14px}.sidebar-role .icon{width:15px;height:15px}.button-nav{background:transparent;border-color:#516977;color:#e2ebee;font-size:.875rem;min-height:44px}.button-nav:hover{background:var(--navy-soft)}.signout{width:100%;justify-content:flex-start}.workspace{min-width:0;display:flex;flex-direction:column}.topbar{min-height:78px;border-bottom:1px solid var(--line);padding:18px 42px;display:flex;justify-content:space-between;align-items:center;gap:16px;font-size:.875rem;background:#f7f8f3;color:var(--muted)}.topbar-suffix{color:var(--ink);font-weight:500}.workspace-label{font-size:.75rem;background:#e8ede7;border:1px solid #d5dfd5;border-radius:20px;padding:5px 12px;white-space:nowrap;color:#445e51}.main{padding:30px 42px 40px;max-width:1600px;width:100%;margin:0 auto;flex:1}.main:focus{outline:none}.footer{padding:22px 42px;border-top:1px solid var(--line);display:flex;gap:20px;justify-content:space-between;color:var(--muted);font-size:.75rem}.mobile-bar{display:none}.page-heading{display:flex;justify-content:space-between;gap:30px;align-items:flex-start;margin-bottom:22px}.page-heading .intro{margin-bottom:0}.batch-marker{font-family:Georgia,serif;font-size:4.5rem;line-height:1;color:#7c9185;display:grid;text-align:center;margin-top:9px}.batch-marker span{font-family:"Segoe UI",sans-serif;font-size:.6rem;letter-spacing:.16em;margin-top:9px;color:var(--muted)}
/* Directory: editorial groups and readable rows, not a repeated card grid. */
.directory-intro{background:#e6eee5;border:1px solid #d2ddcf;border-radius:var(--radius);padding:24px 28px;margin:30px 0 0;display:flex;justify-content:space-between;gap:25px;align-items:center}.directory-description{display:flex;align-items:flex-start;gap:18px}.directory-description>.icon{color:var(--teal);width:30px;height:30px;margin-top:3px}.directory-description strong{font-size:1rem}.directory-description p{font-size:.9375rem;color:#4a6052;margin:5px 0 0}.progress-summary{display:grid;flex-shrink:0;min-width:155px;border-left:1px solid #bbcdbb;padding-left:30px}.progress-summary>strong{font-family:Georgia,serif;font-size:2.4rem;line-height:1.1;font-weight:400;color:#245f51}.progress-summary strong span{font-size:1.45rem;color:#405e4b}.progress-summary>span{font-size:.75rem;color:#466151;margin-top:5px}.review-strip{display:flex;justify-content:space-between;gap:20px;align-items:center;padding:22px 4px 24px;border-bottom:1px solid var(--line);margin-bottom:32px}.review-strip p{margin:5px 0 0;font-size:.9375rem}.review-strip .small-label{font-size:.625rem;color:var(--muted)}.section-heading{display:flex;justify-content:space-between;gap:20px;align-items:center;margin-bottom:18px}.section-heading h2{margin-bottom:0}.section-heading>p{color:var(--muted);margin:0;font-size:.875rem}.filter-bar{display:flex;gap:16px;padding:14px;background:#eaeeea;border:1px solid var(--line);border-radius:7px;margin-bottom:26px;align-items:center}.search-field{position:relative;flex:1}.search-field .icon{position:absolute;left:12px;top:14px;width:20px;height:20px;color:var(--muted)}.search-field input{padding-left:42px!important}.select-field{display:flex;align-items:center;gap:12px;font-size:.875rem}.select-field select{width:200px}.page-group{margin-bottom:28px}.group-title{display:flex;align-items:center;gap:12px;margin-bottom:10px}.group-title h3{margin:0;font-size:.8125rem;text-transform:uppercase;letter-spacing:.08em}.group-title>span{color:var(--muted);font-size:.75rem}.directory-rows{border-top:1px solid var(--line)}.directory-row{display:grid;grid-template-columns:38px minmax(130px,1fr) 157px 85px;gap:16px;align-items:center;padding:17px 15px;border-bottom:1px solid var(--line);background:#f9faf6}.directory-row:nth-child(even){background:#f2f5ef}.page-icon{width:35px;height:35px;border:1px solid #d5ded6;border-radius:7px;display:grid;place-items:center;color:#507264;background:#eef2ea}.page-icon .icon{width:18px;height:18px}.page-detail h4{margin:0 0 3px;font-weight:600;line-height:1.5}.page-detail p{margin:0;color:var(--muted);font-size:.875rem}.page-action{text-align:right}.open-link{display:inline-flex;align-items:center;gap:7px;min-height:44px;font-weight:600;font-size:.875rem;text-decoration:none}.open-link:hover{text-decoration:underline}.open-link .icon{width:18px;height:18px}.pending-action{color:var(--muted);font-size:.8125rem}.status-key{display:flex;gap:12px;align-items:center;flex-wrap:wrap;padding-top:5px}.status-key .small-label{margin-right:5px;font-size:.625rem;color:var(--muted)}.empty-state{text-align:center;background:var(--surface);padding:40px 20px;border:1px dashed #a5b7ad;border-radius:8px}.empty-state p{color:var(--muted)}
/* Authentication */
.login-layout{display:grid;grid-template-columns:minmax(0,1.05fr) minmax(0,1fr);min-height:100vh}.login-story{background:var(--navy);padding:52px 9%;color:#fff;display:flex;flex-direction:column;position:relative;overflow:hidden}.login-story .brand{font-size:1.85rem}.login-story .brand small{font-size:.625rem;letter-spacing:.03em}.story-copy{margin:auto 0;position:relative;z-index:1;padding:90px 0}.eyebrow.light{color:#b7d1bf;font-size:.7rem}.story-copy h1{font-size:clamp(2.5rem,4.5vw,4.5rem);line-height:1.17;font-weight:400;letter-spacing:-.03em;margin:22px 0 28px}.story-copy em{font-weight:400;color:#b7d1bf}.story-copy p{color:#c4d1d7;font-size:1.0625rem;line-height:1.7}.story-footer{font-size:.8125rem;color:#b0c4ca;margin:0;z-index:1}.building-lines{position:absolute;right:-10%;bottom:65px;width:68%;height:260px;opacity:.2;display:flex;align-items:flex-end;gap:15px;transform:skewY(-18deg);pointer-events:none}.building-lines span{display:block;width:22%;height:100%;border:1px solid #89b9ad;background:repeating-linear-gradient(0deg,transparent,transparent 43px,#89b9ad 44px,transparent 45px)}.building-lines span:nth-child(2){height:76%}.building-lines span:nth-child(3){height:89%}.building-lines span:nth-child(4){height:64%}.login-main{background:#f1f3ed;display:flex;flex-direction:column;padding:60px 12% 26px;justify-content:center}.login-card{max-width:425px;width:100%;margin:auto}.login-overline{display:flex;gap:9px;align-items:center;font-size:.7rem;font-weight:700;letter-spacing:.12em;color:var(--teal);margin-bottom:25px}.login-overline .icon{width:16px;height:16px}.login-card h2{font-size:2.8rem;margin-bottom:12px}.login-card>.intro{font-size:1rem;margin-bottom:30px}.login-card .stack{gap:22px}.login-card input{background:#fbfcf8}.password-field{position:relative}.password-field input{padding-right:73px!important}.password-toggle{position:absolute;right:8px;top:35px;background:none;border:0;color:var(--teal);font-size:.8125rem;min-height:44px;min-width:48px;font-weight:600}.login-help{font-size:.875rem;color:var(--muted);line-height:1.7;margin:24px 0}.login-divider{height:1px;background:var(--line);margin:28px 0 20px}.login-small{display:flex;align-items:center;gap:8px;color:var(--muted);font-size:.75rem}.login-small .icon{width:14px;height:14px}.login-footer{display:flex;justify-content:space-between;gap:14px;font-size:.65rem;color:var(--muted);margin-top:60px}.login-footer span{letter-spacing:.13em;font-weight:700}.preview-note{border-left:2px solid #709680;padding:8px 13px;background:#e5ece1;margin-bottom:24px;color:#375746}.preview-note strong{display:block;font-size:.8125rem}.preview-note span{font-size:.75rem;display:block;margin-top:3px}
/* Reusable surfaces, table and native confirmation modal */
.surface{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:28px;box-shadow:var(--shadow)}.surface>.small-label{margin-bottom:15px}.component-grid{display:grid;grid-template-columns:1fr 1fr;gap:24px;margin:24px 0}.badge-stack{display:flex;flex-wrap:wrap;gap:12px;margin:22px 0 28px}.table-surface{margin-top:25px}.table-scroll{overflow-x:auto;max-width:100%}table{border-collapse:collapse;width:100%;text-align:left;font-size:1rem}caption{text-align:left;color:var(--muted);font-size:.875rem;padding:10px 0 16px}th,td{padding:17px 16px;border-bottom:1px solid var(--line);vertical-align:middle}thead th{background:#eaf0e8;color:#435e4d;font-size:.8125rem;letter-spacing:.015em}tbody th{font-weight:500}tbody tr:nth-child(even){background:#f3f6ef}.table-scroll table{min-width:640px}.welcome-panel{background:#e8eee3;border:1px solid #d2ddc9;padding:clamp(25px,5vw,65px);border-radius:12px;margin-top:45px}.welcome-panel h1{font-size:clamp(2rem,3.5vw,3.7rem);max-width:760px}.welcome-panel .intro{margin-bottom:30px}.welcome-panel>.muted{font-size:.875rem;margin-top:32px}.modal{max-width:460px;width:calc(100% - 32px);border:1px solid #bccfc3;padding:32px;border-radius:14px;background:var(--surface);color:var(--ink);box-shadow:0 24px 80px #142a3c40}.modal::backdrop{background:#10253699}.modal h2{font-size:1.85rem;margin:20px 0 12px}.modal p{color:var(--muted)}.modal-symbol{width:42px;height:42px;display:grid;place-items:center;border-radius:50%;background:#e5efe6;color:var(--teal)}.modal .button-row{justify-content:flex-end}
@media(min-width:1500px){.main{padding:42px 60px}.topbar,.footer{padding-left:60px;padding-right:60px}.directory-row{padding-top:20px;padding-bottom:20px}}
@media(max-width:1100px){.app-layout{grid-template-columns:220px minmax(0,1fr)}.sidebar{padding-left:14px;padding-right:14px}.main{padding:26px}.topbar,.footer{padding-left:26px;padding-right:26px}.directory-row{grid-template-columns:32px minmax(110px,1fr) 147px 63px;gap:10px;padding-left:10px;padding-right:10px}.directory-intro{padding:22px}.progress-summary{min-width:135px;padding-left:20px}.login-story{padding:40px 9%}.login-main{padding-left:9%;padding-right:9%}.topbar-suffix{display:none}}
@media(max-width:800px){.app-layout{display:block}.mobile-bar{display:flex;justify-content:space-between;align-items:center;background:var(--navy);padding:14px 20px}.mobile-bar .brand{font-size:1.3rem}.mobile-bar .brand .icon{width:25px;height:28px}.sidebar{position:static;height:auto;padding:12px 20px 22px}.desktop-brand,.sidebar-note,.sidebar .nav-caption{display:none}.sidebar-bottom{padding:10px 0 0;margin:0}.sidebar-role{display:none}.sidebar nav{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.nav-link{font-size:.8125rem;padding:10px;gap:8px}.signout{width:auto}.topbar{min-height:54px;padding:12px 22px}.main{padding:24px 22px 34px}.breadcrumb{margin-bottom:26px}.footer{padding:20px 22px}.component-grid{grid-template-columns:1fr}.login-story{padding:30px 8%}.story-copy h1{font-size:3rem}.login-main{padding:40px 8% 24px}.login-card h2{font-size:2.3rem}.story-copy{padding:75px 0}.batch-marker{font-size:3.5rem}}
@media(max-width:600px){.login-layout{display:block}.login-story{padding:24px}.login-story .brand{font-size:1.3rem}.login-story .brand>.icon{width:28px;height:32px}.story-copy{padding:36px 0 14px}.story-copy .eyebrow{font-size:.625rem;margin-bottom:10px}.story-copy h1{font-size:2.4rem;margin:12px 0 14px}.story-copy p,.story-footer{display:none}.building-lines{height:170px;bottom:0;width:45%}.login-main{padding:34px 24px 22px}.login-overline{margin-bottom:16px}.login-footer{margin-top:35px}.login-card{max-width:none}.sidebar nav{display:block}.topbar{font-size:.75rem}.workspace-label{font-size:.65rem;padding:4px 8px}.main{padding:22px 16px 32px}.breadcrumb{font-size:.75rem;margin-bottom:24px}.page-heading{gap:12px}.page-heading h1{font-size:2rem}.page-heading .intro{font-size:1rem}.batch-marker{display:none}.directory-intro{display:block;padding:20px;margin-top:24px}.directory-description{gap:12px}.directory-description>.icon{width:24px;height:24px}.progress-summary{border-left:0;border-top:1px solid #bbcdbb;padding:15px 0 0;margin-top:18px;display:flex;align-items:baseline;gap:12px}.progress-summary>strong{font-size:2rem}.review-strip{align-items:flex-start;flex-direction:column;gap:6px;padding:20px 0;margin-bottom:26px}.review-strip .text-link{font-size:.875rem}.filter-bar{flex-direction:column;align-items:stretch;gap:10px;padding:10px}.select-field{justify-content:space-between}.select-field select{width:calc(100% - 60px)}.directory-row{grid-template-columns:28px minmax(0,1fr) 65px;gap:9px;padding:15px 8px}.page-icon{width:27px;height:29px}.page-icon .icon{width:16px;height:16px}.page-detail h4{font-size:1rem}.page-detail p{font-size:.8125rem}.page-status{grid-column:2;grid-row:2}.page-action{grid-column:3;grid-row:1 / span 2}.page-status .badge{font-size:.75rem}.page-detail{grid-column:2}.status-key{gap:8px}.status-key>.small-label{width:100%}.surface{padding:20px}.table-surface{padding:16px}.section-heading{align-items:flex-start}.section-heading>.muted{font-size:.75rem}.footer{padding:20px 16px;flex-direction:column;gap:7px}.welcome-panel{margin-top:20px}.modal{padding:24px}.button-row{gap:8px}.desktop-only{display:none}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{scroll-behavior:auto!important;transition:none!important;animation:none!important}}
@media print{.sidebar,.mobile-bar,.topbar,.footer,.filter-bar,.page-action,.skip-link,.button,dialog{display:none!important}.app-layout{display:block}.main{padding:0}.surface,.directory-row{box-shadow:none;break-inside:avoid}.table-scroll{overflow:visible}body{background:#fff;color:#000}.badge{border:1px solid #777}.page-group{break-inside:avoid}}

/* Standard navigation and descriptive body copy stay at the 16px reading size. */
.nav-link,.page-detail p,.directory-description p,.review-strip p{font-size:1rem}

/* Correction 04A shared keyboard and privacy rules. */
.implicit-submit-guard { display:none !important; }
:where(input,select,textarea,button,a):focus-visible { outline:3px solid #187d83; outline-offset:3px; }
@media print { .door-secret, .door-code-controls { display:none !important; } }
@media(min-width:801px){.sidebar{overflow-y:auto}.sidebar>*{flex-shrink:0}}

/* Visible even when scripts are disabled, blocked or fail before readiness. */
.js-readonly-notice { padding: 1rem 1.5rem; background: #fff3d6; color: #44351b; border-bottom: 2px solid #b27b24; font-size: 1rem; line-height: 1.5; }
.js-readonly-notice[hidden] { display: none; }
@media print { .js-readonly-notice { display: none; } }
[data-js-enable]:disabled { cursor: not-allowed; opacity: .65; }
