:root{--color-bg: #f4f5f7;--color-surface: #ffffff;--color-border: #d9dce1;--color-text: #1f2328;--color-text-muted: #5b626b;--color-primary: #2f5ecf;--color-primary-dark: #24499e;--color-danger: #c62828;--color-danger-bg: #fdecea;--color-success: #2e7d32;--color-warning: #b26a00;--color-step-progress: #0d9488;--color-step-done: #374151;--color-sidebar-bg: #12162e;--color-sidebar-bg-alt: #171b34;--color-sidebar-text: #aab0d0;--color-sidebar-text-muted: #6b7094;--color-sidebar-active-start: #6d5ff5;--color-sidebar-active-end: #4c3fe0;--radius: 8px;color-scheme:light;font-family:Segoe UI,system-ui,-apple-system,sans-serif}*{box-sizing:border-box}body{margin:0;background:var(--color-bg);color:var(--color-text)}#root{min-height:100vh}a{color:var(--color-primary)}h1,h2,h3{margin:0 0 .5em}.app-shell{min-height:100vh;display:flex}.app-sidebar{flex:0 0 240px;display:flex;flex-direction:column;background:var(--color-sidebar-bg);padding:1.25rem 1rem}.app-sidebar__brand{color:#fff;font-weight:700;font-size:1.15rem;padding:0 .5rem;margin-bottom:1.5rem}.app-sidebar__nav{display:flex;flex-direction:column;gap:.3rem}.app-sidebar__link{display:flex;align-items:center;gap:.65rem;padding:.65rem .75rem;border-radius:10px;color:var(--color-sidebar-text);text-decoration:none;font-size:.9rem;font-weight:500}.app-sidebar__link:hover{background:var(--color-sidebar-bg-alt);color:#fff}.app-sidebar__link--active{background:linear-gradient(135deg,var(--color-sidebar-active-start),var(--color-sidebar-active-end));color:#fff;font-weight:600}.app-sidebar__icon{flex:0 0 auto;width:1.1rem;height:1.1rem}.app-sidebar__footer{margin-top:auto;padding-top:1rem;border-top:1px solid var(--color-sidebar-bg-alt);font-size:.72rem;line-height:1.5;color:var(--color-sidebar-text-muted)}.app-content{flex:1;min-width:0;display:flex;flex-direction:column}.app-topbar{padding:.75rem 0;background:var(--color-surface);border-bottom:1px solid var(--color-border)}.app-topbar__inner{display:flex;align-items:center;justify-content:space-between;max-width:1400px;margin:0 auto;padding:0 1.5rem}.app-header__user{display:flex;align-items:center;gap:.75rem;font-size:.9rem;color:var(--color-text-muted)}.app-main{flex:1;min-width:0;width:100%;max-width:1400px;margin:0 auto;padding:1.5rem}@media(max-width:640px){.app-shell{flex-direction:column}.app-sidebar{flex-direction:row;align-items:center;flex-wrap:wrap}.app-sidebar__brand{margin-bottom:0}.app-sidebar__nav{flex-direction:row}.app-sidebar__footer{display:none}}.btn{display:inline-flex;align-items:center;gap:.4rem;border:1px solid var(--color-border);background:var(--color-surface);color:var(--color-text);border-radius:var(--radius);padding:.5rem .9rem;font-size:.9rem;font-family:inherit;text-decoration:none;cursor:pointer}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-primary{background:var(--color-primary);border-color:var(--color-primary);color:#fff}.btn-primary:hover:not(:disabled){background:var(--color-primary-dark)}.btn-danger{background:var(--color-danger);border-color:var(--color-danger);color:#fff}.btn-link{background:none;border:none;color:var(--color-primary);padding:0}.card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);padding:1.25rem;margin-bottom:1rem}.form-field{margin-bottom:1rem}.form-label{display:block;font-size:.85rem;font-weight:600;margin-bottom:.3rem}.form-input,.form-textarea{width:100%;padding:.5rem .6rem;border:1px solid var(--color-border);border-radius:var(--radius);font-size:.95rem;font-family:inherit}.form-checkbox{display:flex;align-items:center;gap:.5rem;font-size:.9rem}.privacy-toggle{display:inline-flex;align-items:center;justify-content:center;gap:.5rem;min-width:15rem;border:1px solid var(--color-border);background:var(--color-surface);color:var(--color-text-muted);border-radius:var(--radius);padding:.55rem .9rem;font-size:.9rem;font-family:inherit;cursor:pointer}.privacy-toggle:hover{border-color:var(--color-text-muted)}.privacy-toggle--active{background:var(--color-danger-bg);border-color:var(--color-danger);color:var(--color-danger);font-weight:600}.banner{border-radius:var(--radius);padding:.75rem 1rem;margin-bottom:1rem;font-size:.9rem}.banner-error{background:var(--color-danger-bg);color:var(--color-danger);border:1px solid #f5c6c3}.banner-info{background:#eef1fb;color:var(--color-text-muted);border:1px solid var(--color-border)}.spinner{display:inline-block;width:1.2rem;height:1.2rem;border:2px solid var(--color-border);border-top-color:var(--color-primary);border-radius:50%;animation:spin .7s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.status-badge{display:inline-block;padding:.2rem .6rem;border-radius:999px;font-size:.78rem;font-weight:600;background:#e5e7eb;color:var(--color-text-muted)}.status-badge--0{background:#e5e7eb;color:#4b5563}.status-badge--1{background:#dbe6ff;color:var(--color-primary-dark)}.status-badge--2{background:#fff2cc;color:var(--color-warning)}.status-badge--3{background:#dcf3e0;color:var(--color-success)}.status-badge--4{background:#e5e7eb;color:#4b5563}.status-badge--5{background:var(--color-danger-bg);color:var(--color-danger)}.badge-overdue{display:inline-block;padding:.2rem .6rem;border-radius:999px;font-size:.78rem;font-weight:600;background:var(--color-danger-bg);color:var(--color-danger)}.stepper{display:flex;align-items:flex-start;list-style:none;padding:.5rem 0;margin:.5rem 0 0}.stepper__step{display:flex;flex-direction:column;align-items:center;gap:.5rem;flex:0 0 auto}.stepper__connector{flex:1;align-self:flex-start;height:2.1rem;min-width:1.5rem;display:flex;align-items:center}.stepper__connector:before{content:"";display:block;width:100%;height:3px;border-radius:2px;background:var(--color-border)}.stepper__connector--active:before{background:var(--step-color)}.stepper__circle{flex:0 0 auto;width:2.1rem;height:2.1rem;border-radius:50%;border:2px solid var(--color-border);background:var(--color-surface);transition:all .15s ease}.stepper__circle--done{background:var(--step-color);border-color:var(--step-color)}.stepper__circle--current{border-color:var(--step-color);background:color-mix(in srgb,var(--step-color) 18%,var(--color-surface));box-shadow:0 0 0 4px color-mix(in srgb,var(--step-color) 15%,transparent)}.stepper__label{white-space:nowrap;font-size:.75rem;color:var(--color-text-muted)}.stepper__label--current{font-weight:700;color:var(--step-color)}.stepper__label--done{color:var(--color-text)}.request-list{list-style:none;padding:0;margin:0}.request-list-item{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.85rem 1rem;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);margin-bottom:.5rem;text-decoration:none;color:var(--color-text)}.request-list-item:hover{border-color:var(--color-primary)}.request-list-item__title{font-weight:600}.request-list-item__meta{font-size:.8rem;color:var(--color-text-muted)}.table-wrapper{overflow-x:auto;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius)}.table{width:100%;border-collapse:collapse;font-size:.88rem}.table th{text-align:left;padding:.75rem 1rem;font-size:.75rem;text-transform:uppercase;letter-spacing:.03em;color:var(--color-text-muted);border-bottom:1px solid var(--color-border);white-space:nowrap}.table td{padding:.75rem 1rem;border-bottom:1px solid var(--color-border);vertical-align:middle;white-space:nowrap}.table tbody tr:last-child td{border-bottom:none}.table tbody tr:hover{background:var(--color-bg)}.table__title-link{color:var(--color-text);font-weight:600;text-decoration:none}.table__title-link:hover{color:var(--color-primary)}.table__cell--danger{color:var(--color-danger);font-weight:600}.tabs-row{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:.75rem;margin-bottom:1rem;border-bottom:1px solid var(--color-border)}.tabs{display:flex;gap:.5rem}.tabs-row__filters{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap}.tabs-row__search{width:auto;max-width:240px;margin-bottom:.5rem}.tabs-row__filter{width:auto;max-width:220px;margin-bottom:.5rem}.tab{background:none;border:none;padding:.6rem .9rem;font-size:.9rem;font-family:inherit;cursor:pointer;color:var(--color-text-muted);border-bottom:2px solid transparent}.tab--active{color:var(--color-primary);border-bottom-color:var(--color-primary);font-weight:600}.countdown{display:flex;flex-direction:column;align-items:flex-end;gap:.1rem;font-variant-numeric:tabular-nums;text-align:right}.countdown__value{font-size:2rem;font-weight:700;line-height:1.1;color:var(--color-step-progress)}.countdown--overdue .countdown__value{color:var(--color-danger)}.countdown__label{font-size:.8rem;color:var(--color-text-muted)}.timeline{list-style:none;padding:0;margin:0;border-left:2px solid var(--color-border)}.timeline-item{padding:0 0 1rem 1rem;position:relative}.timeline-item:before{content:"";position:absolute;left:-5px;top:4px;width:8px;height:8px;border-radius:50%;background:var(--dot-color, var(--color-primary))}.timeline-item__meta{font-size:.78rem;color:var(--color-text-muted)}.comment-item{padding:.75rem 0;border-bottom:1px solid var(--color-border)}.comment-item__meta{font-size:.78rem;color:var(--color-text-muted);margin-bottom:.25rem}.comment-type-badge{display:inline-block;margin-left:.5rem;padding:.1rem .5rem;border-radius:999px;font-size:.72rem;font-weight:600}.comment-type-badge--1{background:#fff2cc;color:var(--color-warning)}.comment-type-badge--2{background:var(--color-danger-bg);color:var(--color-danger)}.login-page{min-height:100vh;display:flex;align-items:center;justify-content:center;background:var(--color-bg)}.login-card{width:100%;max-width:360px}.section-title{font-size:1rem;font-weight:600;margin:1.5rem 0 .75rem}.dropzone{border:2px dashed var(--color-border);border-radius:var(--radius);padding:1.5rem;text-align:center;color:var(--color-text-muted);font-size:.9rem}.breadcrumb{display:inline-block;margin-bottom:.75rem;font-size:.85rem;color:var(--color-text-muted);text-decoration:none}.breadcrumb:hover{color:var(--color-primary)}.detail-header__top{display:flex;justify-content:space-between;align-items:flex-start;gap:1rem}.detail-grid{display:grid;grid-template-columns:minmax(0,2fr) minmax(260px,1fr);gap:1rem;align-items:start}.detail-grid__main,.detail-grid__side{min-width:0}@media(max-width:720px){.detail-grid{grid-template-columns:1fr}}
