:root{--color-primary: #00a254;--color-primary-hover: #00552e;--color-primary-soft: #dff4e8;--color-background: #f5f8f4;--color-surface: #ffffff;--color-border: #ceddd4;--color-text: #032650;--color-text-muted: #536779;--color-warning: #a15c12;--color-danger: #9b2c2c;--color-success: #007a42;--color-accent: #e8ae04;--radius-sm: 8px;--radius-md: 12px;--radius-lg: 16px;--shadow-sm: 0 1px 2px rgba(23, 32, 25, .05);--space-1: .25rem;--space-2: .5rem;--space-3: .75rem;--space-4: 1rem;--space-5: 1.5rem;--space-6: 2rem;--space-7: 2.5rem;--space-8: 3rem;--brand: var(--color-primary);--brand-mid: #007a42;--brand-soft: var(--color-primary-soft);--brand-ink: var(--color-primary-hover);--bg: var(--color-background);--bg-elev: var(--color-surface);--bg-muted: #edf4ef;--ink: var(--color-text);--muted: var(--color-text-muted);--accent: var(--color-accent);--accent-soft: #fff3c5;--ok: var(--color-success);--ok-soft: #d9eadc;--warn: var(--color-warning);--warn-soft: #f3e1c8;--danger: var(--color-danger);--danger-soft: #f3d4d4;--border: var(--color-border);--border-strong: #a9c5b4;--focus: var(--color-primary);--shadow: 0 4px 16px rgba(23, 32, 25, .07);--radius: var(--radius-md);--font: "Source Sans 3", "Segoe UI", system-ui, sans-serif;--display: "Fraunces", Georgia, "Times New Roman", serif;--text-xs: .8rem;--text-sm: .9rem;--text-md: 1rem;--text-lg: 1.15rem;--text-xl: 1.35rem;--text-2xl: 1.65rem;--text-3xl: 2.1rem;--sidebar-w: 252px;--sidebar-collapsed-w: 72px;--header-h: 52px;--bottom-nav-h: 64px;--fab-size: 56px;--assistant-dock-w: 420px;--touch: 44px;--app-version: "1.0.0";--page-max: 1480px;--form-max: 960px}*,*:before,*:after{box-sizing:border-box}html,body{margin:0;padding:0;min-height:100%}html{scroll-behavior:smooth}body{font-family:var(--font);font-size:var(--text-md);line-height:1.5;color:var(--ink);background:var(--bg);-webkit-font-smoothing:antialiased}img,svg{max-width:100%;display:block}.brand-mark{width:100%;height:100%;object-fit:contain}.brand-lockup{display:block;width:min(320px,100%);height:auto;object-fit:contain}a{color:var(--brand);text-decoration:none}a:hover{text-decoration:underline}button,input,select,textarea{font:inherit;color:inherit}:focus-visible{outline:3px solid color-mix(in srgb,var(--focus) 55%,white);outline-offset:2px}h1,h2,h3,h4{margin:0 0 var(--space-2);line-height:1.2;letter-spacing:-.02em;color:var(--ink);font-family:var(--font);font-weight:700}h1{font-size:var(--text-2xl)}h2{font-size:var(--text-xl)}h3{font-size:var(--text-lg)}.display{font-family:var(--display);font-weight:700;letter-spacing:-.03em}.page{width:100%;max-width:var(--page-max);margin:0 auto;padding:var(--space-4)}.page-wide{max-width:var(--page-max)}.page-form{max-width:var(--form-max)}.page-container{width:100%;max-width:var(--page-max);margin:0 auto;padding:24px 32px 48px}@media(max-width:767px){.page-container{padding:16px 16px calc(var(--bottom-nav-h) + 72px)}}.card{background:var(--bg-elev);border:1px solid var(--border);border-radius:var(--radius);padding:var(--space-4);box-shadow:none}.card.flush{padding:0;overflow:hidden}.stack{display:grid;gap:var(--space-3);align-content:start}.stack-lg{display:grid;gap:var(--space-4);align-content:start}.row{display:flex;gap:var(--space-3);flex-wrap:wrap;align-items:center}.row-between{display:flex;gap:var(--space-3);flex-wrap:wrap;align-items:center;justify-content:space-between}.grid-2,.grid-3,.grid-4{display:grid;gap:var(--space-3)}@media(min-width:640px){.grid-2{grid-template-columns:1fr 1fr}.grid-4{grid-template-columns:repeat(2,1fr)}}@media(min-width:1024px){.grid-3{grid-template-columns:repeat(3,1fr)}.grid-4{grid-template-columns:repeat(4,1fr)}.layout-60-40{display:grid;grid-template-columns:1.5fr 1fr;gap:var(--space-4);align-items:start}.layout-70-30{display:grid;grid-template-columns:1.8fr 1fr;gap:var(--space-4);align-items:start}}.muted{color:var(--muted)}.tiny{font-size:var(--text-xs)}.error{color:var(--danger)}.success{color:var(--ok)}.warn-text{color:var(--warn)}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.btn{appearance:none;display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);border:1px solid transparent;border-radius:var(--radius-sm);padding:.7rem 1.05rem;min-height:var(--touch);background:var(--brand);color:#fff;font-weight:600;cursor:pointer;text-decoration:none;transition:background .15s ease,border-color .15s ease,transform .1s ease}.btn:hover{background:var(--brand-ink);text-decoration:none}.btn:active{transform:translateY(1px)}.btn:disabled{opacity:.55;cursor:not-allowed;transform:none}.btn.secondary{background:var(--bg-elev);color:var(--ink);border-color:var(--border-strong)}.btn.secondary:hover{background:var(--bg-muted)}.btn.ghost{background:transparent;color:var(--brand);border-color:transparent}.btn.danger{background:var(--danger)}.btn.accent{background:var(--accent);color:#1a1408}.btn.sm{min-height:40px;padding:.45rem .8rem;font-size:var(--text-sm)}.btn.block{width:100%}.quick-actions{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-3)}.quick-actions .btn{width:100%;text-align:center;white-space:normal;line-height:1.25;min-height:48px}@media(max-width:420px){.quick-actions{grid-template-columns:1fr}}.badge{display:inline-flex;align-items:center;gap:.3rem;padding:.2rem .55rem;border-radius:999px;background:var(--brand-soft);color:var(--brand-ink);font-size:var(--text-xs);font-weight:700;line-height:1.3;white-space:nowrap}.badge.warn{background:var(--warn-soft);color:var(--warn)}.badge.danger{background:var(--danger-soft);color:var(--danger)}.badge.ok{background:var(--ok-soft);color:var(--ok)}.badge.accent{background:var(--accent-soft);color:#7a5a18}.badge.neutral{background:var(--bg-muted);color:var(--muted)}.field{display:grid;gap:.35rem}.field>span,.field>label,label.field{font-weight:600;font-size:var(--text-sm);color:var(--ink)}.field input,.field select,.field textarea,input.control,select.control,textarea.control{width:100%;border:1px solid var(--border-strong);border-radius:var(--radius-sm);padding:.7rem .85rem;background:#fff;min-height:var(--touch)}.field textarea,textarea.control{min-height:96px;resize:vertical}.field input:invalid:not(:placeholder-shown),.field.invalid input,.field.invalid select{border-color:var(--danger)}.field-error{color:var(--danger);font-size:var(--text-sm);margin:0}.filters{display:grid;gap:var(--space-3);padding:var(--space-4);background:var(--bg-elev);border:1px solid var(--border);border-radius:var(--radius)}@media(min-width:768px){.filters{grid-template-columns:repeat(auto-fit,minmax(160px,1fr));align-items:end}}.table-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch}.data-table{width:100%;border-collapse:collapse;font-size:var(--text-sm)}.data-table th,.data-table td{text-align:left;padding:.7rem .75rem;border-bottom:1px solid var(--border);vertical-align:middle;height:50px}.data-table thead th{position:sticky;top:0;z-index:1}.data-table th{color:var(--muted);font-weight:700;font-size:var(--text-xs);text-transform:uppercase;letter-spacing:.04em;background:var(--bg-muted)}.data-table tbody tr{cursor:pointer;transition:background .12s ease}.data-table tbody tr:hover{background:color-mix(in srgb,var(--brand-soft) 55%,white)}.data-table .actions{white-space:nowrap}.mobile-cards{display:grid;gap:var(--space-3)}.entity-card{display:grid;gap:.35rem;padding:var(--space-4);background:var(--bg-elev);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-sm);cursor:pointer;color:inherit;text-decoration:none}.entity-card:hover{border-color:var(--brand-mid);text-decoration:none}.entity-card .title{font-weight:700;font-size:var(--text-lg)}.entity-card-head{align-items:flex-start;gap:.5rem}.entity-card .shrink-0{flex-shrink:0}.entity-card .card-link{margin-top:.25rem;font-weight:600;font-size:var(--text-sm);color:var(--brand)}.priority-summary{margin-bottom:.25rem}.desktop-only{display:none}.mobile-only{display:block}@media(min-width:768px){.desktop-only{display:block}.mobile-only{display:none!important}}.kpi-card{display:grid;gap:var(--space-2);padding:var(--space-3) var(--space-4);background:var(--bg-elev);border:1px solid var(--border);border-radius:var(--radius);box-shadow:none;text-decoration:none;color:inherit;min-height:96px;transition:border-color .15s ease}.kpi-card:hover{border-color:var(--brand-mid);text-decoration:none}.kpi-card .kpi-value{font-size:1.75rem;font-weight:700;color:var(--brand);line-height:1}.kpi-card .kpi-label{color:var(--muted);font-weight:600;font-size:var(--text-sm)}.kpi-card .kpi-meta{color:var(--muted);font-size:var(--text-xs)}.kpi-card .kpi-icon{width:32px;height:32px;border-radius:8px;display:grid;place-items:center;background:var(--brand-soft);color:var(--brand);font-size:1rem}.kpi-card.warn .kpi-value{color:var(--warn)}.kpi-card.warn .kpi-icon{background:var(--warn-soft);color:var(--warn)}.kpi-card.danger .kpi-value{color:var(--danger)}.kpi-card.danger .kpi-icon{background:var(--danger-soft);color:var(--danger)}.empty-state{display:grid;gap:var(--space-2);justify-items:center;text-align:center;padding:var(--space-5) var(--space-4);color:var(--muted)}.empty-state.compact{padding:var(--space-4);justify-items:start;text-align:left;border:1px dashed var(--border);border-radius:var(--radius);background:color-mix(in srgb,var(--bg-muted) 60%,white)}.empty-state.compact .empty-icon{width:40px;height:40px;border-radius:10px;font-size:1.1rem}.empty-state .empty-icon{width:48px;height:48px;border-radius:12px;display:grid;place-items:center;background:var(--bg-muted);font-size:1.25rem}.empty-state h3{color:var(--ink);margin:0;font-size:var(--text-lg)}.page-header{display:flex;justify-content:space-between;align-items:flex-start;gap:var(--space-3);flex-wrap:wrap;margin-bottom:var(--space-4)}.page-header h1{margin:0;font-size:var(--text-xl)}.page-header .lede{margin:.25rem 0 0;color:var(--muted);max-width:52ch}.qa-grid{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-3)}.qa-card{display:flex;gap:var(--space-3);align-items:center;min-height:64px;padding:var(--space-3);border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-elev);text-decoration:none;color:inherit;font-weight:600}.qa-card:hover{border-color:var(--brand-mid);text-decoration:none}.qa-card .qa-icon{width:40px;height:40px;border-radius:10px;flex-shrink:0;display:grid;place-items:center;background:var(--brand-soft);color:var(--brand)}.fab-assistant{position:fixed;right:24px;bottom:24px;z-index:60;display:inline-flex;align-items:center;gap:.5rem;min-height:var(--fab-size);padding:0 1.1rem 0 .85rem;border:none;border-radius:999px;background:var(--color-primary);color:#fff;font-weight:700;box-shadow:var(--shadow);cursor:pointer}.fab-assistant .fab-ico{width:32px;height:32px;border-radius:999px;background:#ffffff2e;display:grid;place-items:center}.assistant-dock{position:fixed;right:24px;bottom:96px;width:min(var(--assistant-dock-w),calc(100vw - 32px));height:calc(100vh - 110px);max-height:820px;z-index:61;display:flex;flex-direction:column;background:var(--bg-elev);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow);overflow:hidden}.assistant-dock.hidden{display:none}.assistant-dock-header{display:flex;align-items:center;gap:.5rem;padding:.75rem .85rem;border-bottom:1px solid var(--border);background:var(--bg-muted);flex-shrink:0}.assistant-dock-header strong{flex:1}.assistant-dock-body{flex:1;min-height:0;overflow-y:auto;padding:.85rem}.assistant-dock-footer{border-top:1px solid var(--border);padding:.75rem;flex-shrink:0;display:grid;gap:.5rem}.context-chip{display:inline-flex;align-items:center;gap:.35rem;padding:.35rem .65rem;border-radius:999px;background:var(--brand-soft);color:var(--brand-ink);font-size:var(--text-xs);font-weight:600}.context-chip button{border:none;background:transparent;cursor:pointer;color:inherit;font-weight:700}@media(max-width:767px){.fab-assistant{right:16px;bottom:calc(var(--bottom-nav-h) + env(safe-area-inset-bottom,0px) + 12px)}.fab-assistant .fab-label{display:none}.assistant-dock{inset:0;width:100%;height:100%;max-height:none;border-radius:0}}.skeleton{height:1rem;border-radius:8px;background:linear-gradient(90deg,#e5ece2,#f5f8f3,#e5ece2);background-size:200% 100%;animation:shimmer 1.2s infinite}@keyframes shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.pagination{display:flex;flex-wrap:wrap;gap:var(--space-3);align-items:center;justify-content:space-between;padding-top:var(--space-3)}.pagination .pager{display:flex;gap:.35rem;flex-wrap:wrap;align-items:center}.pagination .pager button{min-width:var(--touch);min-height:var(--touch);border:1px solid var(--border-strong);background:var(--bg-elev);border-radius:var(--radius-sm);cursor:pointer;font-weight:600}.pagination .pager button:disabled{opacity:.45;cursor:not-allowed}.pagination .pager button.active{background:var(--brand);color:#fff;border-color:var(--brand)}.banner{display:flex;gap:var(--space-3);align-items:center;flex-wrap:wrap;padding:.75rem 1rem;background:var(--warn-soft);color:var(--warn);border-bottom:1px solid color-mix(in srgb,var(--warn) 25%,white)}.banner.info{background:var(--brand-soft);color:var(--brand-ink)}.banner.danger{background:var(--danger-soft);color:var(--danger)}.section-title{display:flex;justify-content:space-between;align-items:baseline;gap:var(--space-3);flex-wrap:wrap}.tabs{display:flex;gap:.25rem;border-bottom:1px solid var(--border);margin-bottom:var(--space-4);overflow-x:auto}.tabs button{border:none;background:transparent;padding:.75rem 1rem;min-height:var(--touch);cursor:pointer;color:var(--muted);font-weight:600;border-bottom:2px solid transparent;white-space:nowrap}.tabs button.active{color:var(--brand);border-bottom-color:var(--brand)}.menu{position:relative}.menu-panel{position:absolute;right:0;top:calc(100% + 6px);min-width:200px;background:var(--bg-elev);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);padding:.4rem;z-index:40}.menu-panel button,.menu-panel a{display:block;width:100%;text-align:left;border:none;background:transparent;padding:.75rem .85rem;border-radius:var(--radius-sm);cursor:pointer;color:var(--ink);text-decoration:none;font-weight:600}.menu-panel button:hover,.menu-panel a:hover{background:var(--bg-muted);text-decoration:none}@media(max-width:359px){.page{padding:.75rem}h1{font-size:1.5rem}}
