:root{--color-bg: #f5f6f5;--color-surface: #ffffff;--color-surface-muted: #f0f2f0;--color-border: #d8ddd8;--color-border-strong: #b9c2ba;--color-text: #1b211d;--color-text-muted: #5b665e;--color-text-inverse: #ffffff;--color-primary: #14532d;--color-primary-strong: #0b3d20;--color-primary-soft: #e6f0e8;--color-on-primary: #ffffff;--color-success: #1a7f4b;--color-success-soft: #e4f3ea;--color-warning: #9a6700;--color-warning-soft: #fdf3d8;--color-danger: #b42318;--color-danger-soft: #fdeceb;--color-info: #1e5f8a;--color-info-soft: #e7f1f8;--color-neutral: #4b5563;--color-neutral-soft: #eceff1;--font-sans: "Inter", "Segoe UI", system-ui, -apple-system, "Helvetica Neue", Arial, sans-serif;--font-mono: ui-monospace, "SFMono-Regular", "Menlo", monospace;--text-xs: .75rem;--text-sm: .875rem;--text-base: 1rem;--text-lg: 1.125rem;--text-xl: 1.375rem;--text-2xl: 1.75rem;--leading: 1.55;--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-5: 24px;--space-6: 32px;--space-7: 48px;--radius-sm: 6px;--radius-md: 10px;--radius-lg: 14px;--shadow-sm: 0 1px 2px rgb(16 24 20 / 6%);--shadow-md: 0 6px 20px rgb(16 24 20 / 10%);--ring: 0 0 0 3px rgb(20 83 45 / 22%);--sidebar-width: 244px;--content-max: 1120px;--tap-min: 44px}*,*:before,*:after{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;background:var(--color-bg);color:var(--color-text);font-family:var(--font-sans);font-size:var(--text-base);line-height:var(--leading);-webkit-font-smoothing:antialiased;text-size-adjust:100%}h1,h2,h3,h4{margin:0;line-height:1.28;font-weight:650;letter-spacing:-.01em}h1{font-size:var(--text-2xl)}h2{font-size:var(--text-xl)}h3{font-size:var(--text-lg)}p{margin:0}a{color:var(--color-primary);text-underline-offset:2px}:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}button,input,select,textarea{font:inherit;color:inherit}table{border-collapse:collapse;width:100%}.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}.stack{display:flex;flex-direction:column;gap:var(--space-4)}.row{display:flex;align-items:center;gap:var(--space-3);flex-wrap:wrap}.muted{color:var(--color-text-muted)}.text-sm{font-size:var(--text-sm)}.text-xs{font-size:var(--text-xs)}.grid-cards{display:grid;gap:var(--space-4);grid-template-columns:repeat(auto-fill,minmax(240px,1fr))}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);min-height:var(--tap-min);padding:0 var(--space-4);border-radius:var(--radius-sm);border:1px solid transparent;background:var(--color-primary);color:var(--color-on-primary);font-weight:600;font-size:var(--text-sm);cursor:pointer;transition:background .12s ease,border-color .12s ease;text-decoration:none}.btn:hover:not(:disabled){background:var(--color-primary-strong)}.btn:disabled{opacity:.6;cursor:not-allowed}.btn--secondary{background:var(--color-surface);border-color:var(--color-border-strong);color:var(--color-text)}.btn--secondary:hover:not(:disabled){background:var(--color-surface-muted)}.btn--ghost{background:transparent;color:var(--color-text)}.btn--ghost:hover:not(:disabled){background:var(--color-surface-muted)}.btn--danger{background:var(--color-danger)}.btn--danger:hover:not(:disabled){background:#8f1d13}.btn--sm{min-height:34px;padding:0 var(--space-3);font-size:var(--text-xs)}.btn--block{width:100%}.card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);box-shadow:var(--shadow-sm)}.card__header{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--space-3);padding:var(--space-4) var(--space-5);border-bottom:1px solid var(--color-border)}.card__body{padding:var(--space-4) var(--space-5)}.card__footer{padding:var(--space-3) var(--space-5);border-top:1px solid var(--color-border);background:var(--color-surface-muted);border-radius:0 0 var(--radius-md) var(--radius-md)}.badge{display:inline-flex;align-items:center;gap:6px;padding:2px 9px;border-radius:999px;font-size:var(--text-xs);font-weight:600;line-height:1.7;border:1px solid transparent;white-space:nowrap}.badge:before{content:"";width:6px;height:6px;border-radius:50%;background:currentcolor}.badge--neutral{background:var(--color-neutral-soft);color:var(--color-neutral)}.badge--info{background:var(--color-info-soft);color:var(--color-info)}.badge--success{background:var(--color-success-soft);color:var(--color-success)}.badge--warning{background:var(--color-warning-soft);color:var(--color-warning)}.badge--danger{background:var(--color-danger-soft);color:var(--color-danger)}.badge--primary{background:var(--color-primary-soft);color:var(--color-primary)}.field{display:flex;flex-direction:column;gap:6px}.field__label{font-size:var(--text-sm);font-weight:600}.field__hint{font-size:var(--text-xs);color:var(--color-text-muted)}.field__error{font-size:var(--text-xs);color:var(--color-danger);font-weight:600}.input,.select,.textarea{width:100%;min-height:var(--tap-min);padding:9px var(--space-3);border:1px solid var(--color-border-strong);border-radius:var(--radius-sm);background:var(--color-surface);color:var(--color-text)}.textarea{min-height:104px;resize:vertical;line-height:1.5}.input:focus,.select:focus,.textarea:focus{outline:none;border-color:var(--color-primary);box-shadow:var(--ring)}.input[aria-invalid=true],.select[aria-invalid=true],.textarea[aria-invalid=true]{border-color:var(--color-danger)}.form-grid{display:grid;gap:var(--space-4);grid-template-columns:repeat(auto-fit,minmax(220px,1fr))}.state-panel{display:flex;flex-direction:column;align-items:center;gap:var(--space-3);padding:var(--space-6) var(--space-4);text-align:center;border:1px dashed var(--color-border-strong);border-radius:var(--radius-md);background:var(--color-surface);color:var(--color-text-muted)}.state-panel--error{border-color:#efc4c0;background:var(--color-danger-soft);color:var(--color-danger)}.state-panel__title{font-weight:650;color:var(--color-text);font-size:var(--text-base)}.state-panel--error .state-panel__title{color:var(--color-danger)}.spinner{width:20px;height:20px;border-radius:50%;border:2.5px solid rgb(20 83 45 / 18%);border-top-color:var(--color-primary);animation:pk-spin .7s linear infinite}@keyframes pk-spin{to{transform:rotate(360deg)}}@media(prefers-reduced-motion:reduce){.spinner{animation-duration:2s}}.page-header{display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:var(--space-3);margin-bottom:var(--space-5)}.page-header__subtitle{color:var(--color-text-muted);font-size:var(--text-sm);margin-top:4px}.table-wrap{overflow-x:auto;border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface)}.table{font-size:var(--text-sm);min-width:640px}.table th{text-align:left;font-size:var(--text-xs);text-transform:uppercase;letter-spacing:.04em;color:var(--color-text-muted);background:var(--color-surface-muted);padding:var(--space-3) var(--space-4);border-bottom:1px solid var(--color-border);font-weight:700;white-space:nowrap}.table td{padding:var(--space-3) var(--space-4);border-bottom:1px solid var(--color-border);vertical-align:top}.table tr:last-child td{border-bottom:0}.table tbody tr:hover{background:#fafbfa}.table a{font-weight:600}.list{display:flex;flex-direction:column;gap:var(--space-3);list-style:none;margin:0;padding:0}.list__item{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);padding:var(--space-4);display:flex;flex-direction:column;gap:var(--space-2)}.list__title{font-weight:650;font-size:var(--text-base)}.list__meta{display:flex;flex-wrap:wrap;gap:var(--space-2) var(--space-3);font-size:var(--text-xs);color:var(--color-text-muted)}.modal-backdrop{position:fixed;inset:0;background:#0c140f7a;display:flex;align-items:center;justify-content:center;padding:var(--space-4);z-index:60}.modal{width:min(720px,100%);max-height:90vh;overflow-y:auto;background:var(--color-surface);border-radius:var(--radius-lg);box-shadow:var(--shadow-md)}.modal__header{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);padding:var(--space-4) var(--space-5);border-bottom:1px solid var(--color-border);position:sticky;top:0;background:var(--color-surface)}.modal__body{padding:var(--space-5)}.modal__footer{display:flex;justify-content:flex-end;gap:var(--space-3);padding:var(--space-4) var(--space-5);border-top:1px solid var(--color-border)}.icon-btn{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;border:0;border-radius:var(--radius-sm);background:transparent;color:var(--color-text-muted);cursor:pointer}.icon-btn:hover{background:var(--color-surface-muted);color:var(--color-text)}.alert{border-radius:var(--radius-sm);padding:var(--space-3) var(--space-4);font-size:var(--text-sm);border:1px solid transparent}.alert--error{background:var(--color-danger-soft);border-color:#f0c8c4;color:var(--color-danger)}.alert--success{background:var(--color-success-soft);border-color:#bfe3cd;color:var(--color-success)}.alert--info{background:var(--color-info-soft);border-color:#c3dced;color:var(--color-info)}.alert--warning{background:var(--color-warning-soft);border-color:#f0dcae;color:var(--color-warning)}.app-shell{display:flex;min-height:100vh}.sidebar{width:var(--sidebar-width);flex:0 0 var(--sidebar-width);background:var(--color-surface);border-right:1px solid var(--color-border);display:flex;flex-direction:column;position:sticky;top:0;height:100vh}.sidebar__brand{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-5);border-bottom:1px solid var(--color-border)}.brand__mark{width:36px;height:36px;border-radius:10px;background:var(--color-primary);color:var(--color-on-primary);display:grid;place-items:center;font-weight:700;font-size:var(--text-sm);letter-spacing:.02em}.brand__name{font-weight:700;font-size:var(--text-base);line-height:1.2}.brand__sub{font-size:var(--text-xs);color:var(--color-text-muted)}.sidebar__nav{padding:var(--space-3);display:flex;flex-direction:column;gap:2px;overflow-y:auto;flex:1}.nav-link{display:flex;align-items:center;gap:var(--space-3);padding:10px var(--space-3);border-radius:var(--radius-sm);color:var(--color-text);text-decoration:none;font-size:var(--text-sm);font-weight:550;min-height:var(--tap-min)}.nav-link:hover{background:var(--color-surface-muted)}.nav-link--active{background:var(--color-primary-soft);color:var(--color-primary);font-weight:650}.sidebar__footer{border-top:1px solid var(--color-border);padding:var(--space-4);display:flex;flex-direction:column;gap:var(--space-2)}.user-chip{display:flex;align-items:center;gap:var(--space-3);min-width:0}.avatar{width:34px;height:34px;border-radius:50%;background:var(--color-primary-soft);color:var(--color-primary);display:grid;place-items:center;font-weight:700;font-size:var(--text-xs);flex:0 0 auto}.user-chip__name{font-size:var(--text-sm);font-weight:650;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.user-chip__role{font-size:var(--text-xs);color:var(--color-text-muted)}.main{flex:1;min-width:0;display:flex;flex-direction:column}.topbar{display:none;align-items:center;justify-content:space-between;gap:var(--space-3);padding:var(--space-3) var(--space-4);background:var(--color-surface);border-bottom:1px solid var(--color-border);position:sticky;top:0;z-index:40}.content{width:100%;max-width:var(--content-max);margin:0 auto;padding:var(--space-6) var(--space-5) var(--space-7)}.drawer-backdrop{display:none}@media(max-width:900px){.sidebar{position:fixed;inset:0 auto 0 0;z-index:70;transform:translate(-102%);transition:transform .16s ease;box-shadow:var(--shadow-md);height:100dvh}.sidebar--open{transform:translate(0)}.drawer-backdrop--open{display:block;position:fixed;inset:0;background:#0c140f66;z-index:65}.topbar{display:flex}.content{padding:var(--space-4) var(--space-4) var(--space-6)}}.auth-shell{min-height:100vh;display:grid;place-items:center;padding:var(--space-5);background:radial-gradient(1000px 500px at 12% -10%,#e7efe9 0%,transparent 60%),var(--color-bg)}.auth-card{width:min(420px,100%);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-md);padding:var(--space-6);display:flex;flex-direction:column;gap:var(--space-4)}.auth-card__brand{display:flex;align-items:center;gap:var(--space-3)}
