:root{--color-primary: #0f4c3a;--color-primary-hover: #0d3f30;--color-primary-light: #1a6b52;--color-primary-muted: #e8f3ef;--color-accent: #2d9f6f;--color-bg: #f1f5f4;--color-surface: #ffffff;--color-surface-muted: #f8faf9;--color-border: #e2e8e6;--color-border-strong: #c5d0cc;--color-text: #1a2e28;--color-text-secondary: #4a635c;--color-text-muted: #7a9189;--color-text-inverse: #ffffff;--color-sidebar-bg: linear-gradient(180deg, #0a3d2e 0%, #0f4c3a 50%, #0d4234 100%);--color-sidebar-text: rgba(255, 255, 255, .85);--color-sidebar-text-muted: rgba(255, 255, 255, .55);--color-sidebar-hover: rgba(255, 255, 255, .08);--color-sidebar-active: rgba(255, 255, 255, .12);--sidebar-width: 260px;--color-danger: #c62828;--color-danger-bg: #fdecea;--color-success: #2e7d32;--font-family: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;--font-size-xs: .75rem;--font-size-sm: .875rem;--font-size-base: 1rem;--font-size-lg: 1.125rem;--font-size-xl: 1.25rem;--font-size-2xl: 1.5rem;--font-size-3xl: 2rem;--space-1: .25rem;--space-2: .5rem;--space-3: .75rem;--space-4: 1rem;--space-5: 1.25rem;--space-6: 1.5rem;--space-8: 2rem;--space-10: 2.5rem;--space-12: 3rem;--radius-sm: 6px;--radius-md: 8px;--radius-lg: 12px;--radius-xl: 16px;--radius-full: 9999px;--shadow-sm: 0 1px 2px rgba(15, 76, 58, .06);--shadow-md: 0 4px 12px rgba(15, 76, 58, .08);--shadow-lg: 0 8px 24px rgba(15, 76, 58, .12);--shadow-card: 0 1px 3px rgba(0, 0, 0, .06), 0 1px 2px rgba(0, 0, 0, .04);--header-height: 64px;--content-max-width: 1200px;--transition-fast: .15s ease}*,*:before,*:after{box-sizing:border-box}html{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{margin:0;font-family:var(--font-family);font-size:var(--font-size-base);line-height:1.5;color:var(--color-text);background:var(--color-bg)}button,input,select,textarea{font-family:inherit;font-size:inherit}a{color:inherit}img{max-width:100%;display:block}h1,h2,h3,h4,h5,h6{margin:0;font-weight:600;line-height:1.25;color:var(--color-text)}h1{font-size:var(--font-size-2xl)}h2{font-size:var(--font-size-xl)}h3{font-size:var(--font-size-lg)}p{margin:0}.text-muted{color:var(--color-text-muted)}.text-secondary{color:var(--color-text-secondary)}.text-sm{font-size:var(--font-size-sm)}.text-xs{font-size:var(--font-size-xs)}.font-medium{font-weight:500}.font-semibold{font-weight:600}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);padding:var(--space-3) var(--space-5);border:1px solid transparent;border-radius:var(--radius-md);font-size:var(--font-size-sm);font-weight:500;line-height:1.25;cursor:pointer;transition:background var(--transition-fast),border-color var(--transition-fast),color var(--transition-fast),opacity var(--transition-fast);white-space:nowrap}.btn:disabled{opacity:.6;cursor:not-allowed}.btn--primary{background:var(--color-primary);color:var(--color-text-inverse)}.btn--primary:hover:not(:disabled){background:var(--color-primary-hover)}.btn--ghost{background:transparent;color:var(--color-text-secondary);border-color:var(--color-border)}.btn--ghost:hover:not(:disabled){background:var(--color-bg);border-color:var(--color-border-strong)}.btn--danger{background:var(--color-danger);color:var(--color-text-inverse)}.btn--danger:hover:not(:disabled){background:#b71c1c}.btn--sidebar-ghost{background:transparent;color:var(--color-sidebar-text);border-color:#fff3;width:100%}.btn--sidebar-ghost:hover:not(:disabled){background:var(--color-sidebar-hover);border-color:#ffffff4d}.btn--block{width:100%}.btn--lg{padding:var(--space-4) var(--space-6);font-size:var(--font-size-base)}.btn--sm{padding:.3125rem .625rem;font-size:.8125rem;gap:.375rem;border-radius:var(--radius-sm)}.btn__spinner{width:1rem;height:1rem;border:2px solid rgba(255,255,255,.3);border-top-color:#fff;border-radius:50%;animation:btn-spin .6s linear infinite}@keyframes btn-spin{to{transform:rotate(360deg)}}.field{display:flex;flex-direction:column;gap:var(--space-2)}.field__label{font-size:var(--font-size-sm);font-weight:500;color:var(--color-text-secondary)}.field__input,.field input:not([type=checkbox]):not([type=radio]),.field select,.field textarea{width:100%;padding:var(--space-3) var(--space-4);border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface);color:var(--color-text);font:inherit;font-size:var(--font-size-sm);line-height:1.5;transition:border-color var(--transition-fast),box-shadow var(--transition-fast),background-color var(--transition-fast)}.field textarea{min-height:5.5rem;resize:vertical}.field select{appearance:none;padding-right:2.25rem;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none'%3E%3Cpath d='M6 9l6 6 6-6' stroke='%237a9189' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right .75rem center;cursor:pointer}.field__input::placeholder,.field input::placeholder,.field textarea::placeholder{color:var(--color-text-muted)}.field__input:hover,.field input:not([type=checkbox]):not([type=radio]):hover,.field select:hover,.field textarea:hover{border-color:var(--color-border-strong)}.field__input:focus,.field input:not([type=checkbox]):not([type=radio]):focus,.field select:focus,.field textarea:focus{outline:none;border-color:var(--color-primary-light);box-shadow:0 0 0 3px var(--color-primary-muted)}.stack-form{display:flex;flex-direction:column;gap:var(--space-5)}.stack-form--compact{gap:var(--space-4)}.field--error .field__input,.field--error input:not([type=checkbox]):not([type=radio]),.field--error select,.field--error textarea{border-color:var(--color-danger)}.field--error .field__input:focus,.field--error input:not([type=checkbox]):not([type=radio]):focus,.field--error select:focus,.field--error textarea:focus{box-shadow:0 0 0 3px var(--color-danger-bg)}.field--error .select__trigger,.field--error .multi-select__trigger{border-color:var(--color-danger)}.field--error .select__trigger:focus-visible,.field--error .multi-select__trigger:focus-visible{box-shadow:0 0 0 3px var(--color-danger-bg)}.field__hint{margin:var(--space-1) 0 0;font-size:var(--font-size-xs);color:var(--color-text-muted)}.field__error{font-size:var(--font-size-xs);color:var(--color-danger)}.alert{display:flex;align-items:flex-start;gap:var(--space-3);padding:var(--space-3) var(--space-4);border-radius:var(--radius-md);font-size:var(--font-size-sm)}.alert--error{background:var(--color-danger-bg);color:var(--color-danger);border:1px solid #f5c6c6}.alert--success{background:#e8f5e9;color:var(--color-success);border:1px solid #c8e6c9}.card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-card)}.card__header{padding:var(--space-5) var(--space-6);border-bottom:1px solid var(--color-border)}.card__body{padding:var(--space-6)}.stat-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:var(--space-5) var(--space-6);box-shadow:var(--shadow-card);display:flex;flex-direction:column;gap:var(--space-2)}.stat-card__label{font-size:var(--font-size-sm);font-weight:500;color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.04em}.stat-card__value{font-size:var(--font-size-3xl);font-weight:700;color:var(--color-primary);line-height:1}.stat-card__hint{font-size:var(--font-size-xs);color:var(--color-text-muted)}.module-card{background:var(--color-surface);border:1px dashed var(--color-border-strong);border-radius:var(--radius-lg);padding:var(--space-6);display:flex;flex-direction:column;gap:var(--space-2);opacity:.85}.module-card__badge{display:inline-flex;align-self:flex-start;padding:var(--space-1) var(--space-3);background:var(--color-bg);border-radius:var(--radius-full);font-size:var(--font-size-xs);font-weight:500;color:var(--color-text-muted)}.badge{display:inline-flex;align-items:center;gap:var(--space-2);padding:var(--space-1) var(--space-3);background:var(--color-primary-muted);color:var(--color-primary);border-radius:var(--radius-full);font-size:var(--font-size-xs);font-weight:500}.avatar{display:inline-flex;align-items:center;justify-content:center;border-radius:var(--radius-full);font-weight:600;flex-shrink:0;background:var(--color-primary-muted);color:var(--color-primary)}.avatar--sm{width:2rem;height:2rem;font-size:var(--font-size-xs)}.avatar--md{width:2.5rem;height:2.5rem;font-size:var(--font-size-sm)}.avatar--sidebar{background:#ffffff26;color:#fff}.app-shell{display:flex;height:100vh;overflow:hidden}.app-shell__sidebar{flex-shrink:0;height:100vh;overflow:hidden}.app-shell__column{flex:1;display:flex;flex-direction:column;min-width:0;min-height:0;overflow:hidden}.app-shell__main{flex:1;min-height:0;padding:var(--space-6) var(--space-8);overflow-y:auto}.app-shell__content{max-width:var(--content-max-width);margin:0 auto}.app-header{position:sticky;top:0;z-index:10;display:flex;align-items:center;justify-content:space-between;height:var(--header-height);padding:0 var(--space-8);background:var(--color-surface);border-bottom:1px solid var(--color-border)}.app-header__title{font-size:var(--font-size-lg);font-weight:600;color:var(--color-text)}.app-header__right{display:flex;align-items:center;gap:var(--space-4)}@media(max-width:768px){.app-shell__main{padding:var(--space-4)}.app-header{padding:0 var(--space-4)}}.page__header{display:flex;justify-content:space-between;align-items:flex-start;gap:var(--space-4);margin-bottom:var(--space-6)}.page__header h1{margin:0 0 var(--space-1);font-size:var(--font-size-2xl);font-weight:600;color:var(--color-text)}.page__header p{margin:0;font-size:var(--font-size-sm);color:var(--color-text-muted);line-height:1.5}.page__header>app-button,.page__header>.page__header-actions{flex-shrink:0;margin-top:var(--space-1)}.page__toolbar{display:flex;align-items:center;gap:var(--space-3);margin-bottom:var(--space-4)}.page__feedback{display:flex;flex-direction:column;gap:var(--space-3);margin-bottom:var(--space-5)}.page__feedback:empty{display:none;margin:0}.page__toolbar app-search-input{flex:1;min-width:0}@media(max-width:640px){.page__header{flex-direction:column;align-items:stretch}.page__header>app-button{align-self:flex-start;margin-top:0}}
