:root{--brand:#2f6b4f;--brand-d:#1f4a37;--brand-l:#e8f2ec;--side:#17332a;--bg:#f5f7f6;--bs-primary:#2f6b4f;--bs-primary-rgb:47,107,79;--bs-link-color:#2f6b4f;--bs-link-hover-color:#1f4a37}
body{background:var(--bg);font-size:.925rem;color:#1d2a25}
.btn-primary{--bs-btn-bg:var(--brand);--bs-btn-border-color:var(--brand);--bs-btn-hover-bg:var(--brand-d);--bs-btn-hover-border-color:var(--brand-d);--bs-btn-active-bg:var(--brand-d)}
.btn-outline-primary{--bs-btn-color:var(--brand);--bs-btn-border-color:var(--brand);--bs-btn-hover-bg:var(--brand);--bs-btn-hover-border-color:var(--brand);--bs-btn-active-bg:var(--brand)}
.text-primary{color:var(--brand)!important}.bg-primary{background:var(--brand)!important}
.app{display:flex;min-height:100vh}
.sidebar{width:240px;background:var(--side);color:#fff;display:flex;flex-direction:column;position:fixed;inset:0 auto 0 0;z-index:1030;overflow-y:auto}
.sidebar .brand{display:flex;gap:.5rem;align-items:center;padding:1.1rem 1.2rem;font-weight:700;font-size:1.1rem;color:#fff;text-decoration:none;border-bottom:1px solid rgba(255,255,255,.08)}
.sidebar .brand i{color:#8fd3ae;font-size:1.4rem}
.sidebar nav{padding:.6rem 0;flex:1}
.sidebar nav a{display:flex;gap:.65rem;align-items:center;color:rgba(255,255,255,.78);text-decoration:none;padding:.5rem 1.2rem;border-left:3px solid transparent}
.sidebar nav a:hover{background:rgba(255,255,255,.05);color:#fff}
.sidebar nav a.active{background:rgba(143,211,174,.12);color:#fff;border-left-color:#8fd3ae}
.nav-sep{font-size:.7rem;text-transform:uppercase;letter-spacing:.08em;color:rgba(255,255,255,.4);padding:1rem 1.2rem .3rem}
.sidebar-user{padding:1rem 1.2rem;border-top:1px solid rgba(255,255,255,.08)}
.sidebar-user a{color:#fff;text-decoration:none}
.main{flex:1;margin-left:240px;min-width:0}
.topbar{display:flex;gap:1rem;align-items:center;padding:.7rem 1.5rem;background:#fff;border-bottom:1px solid #e3e8e5;position:sticky;top:0;z-index:1020}
.topsearch{flex:1;display:flex;align-items:center;gap:.5rem;background:var(--bg);border-radius:8px;padding:.35rem .8rem;max-width:520px}
.topsearch input{border:0;background:transparent;outline:0;width:100%}
.content{padding:1.5rem;max-width:1500px}
@media(max-width:991px){.sidebar{transform:translateX(-100%);transition:.2s}.sidebar.open{transform:none}.main{margin-left:0}.content{padding:1rem}}
.card{border:1px solid #e3e8e5;border-radius:10px;box-shadow:0 1px 2px rgba(0,0,0,.03)}
.card-header{background:#fff;font-weight:600;border-bottom:1px solid #eef1ef}
.page-head{display:flex;justify-content:space-between;align-items:flex-start;gap:1rem;margin-bottom:1.2rem;flex-wrap:wrap}
.page-head h1{font-size:1.45rem;margin:0;font-weight:700}
.page-head .sub{color:#6b7a73;font-size:.875rem}
.stat{padding:1rem 1.2rem}.stat .v{font-size:1.7rem;font-weight:700;line-height:1.1}.stat .l{color:#6b7a73;font-size:.8rem;text-transform:uppercase;letter-spacing:.04em}
.stat i{font-size:1.6rem;color:var(--brand);opacity:.7}
.table{--bs-table-bg:transparent}.table>:not(caption)>*>*{padding:.55rem .7rem}
.table thead th{font-size:.75rem;text-transform:uppercase;letter-spacing:.04em;color:#6b7a73;font-weight:600;border-bottom-width:1px}
.grade{display:inline-flex;width:20px;height:20px;border-radius:4px;font-size:.7rem;font-weight:700;align-items:center;justify-content:center}
.grade.g1{background:#e9ecef;color:#495057}.grade.g2{background:#cfe6d8;color:#1f4a37}.grade.g3{background:#2f6b4f;color:#fff}
.rem-g3{font-weight:700;text-transform:uppercase}.rem-g2{font-style:italic;font-weight:600}.rem-g1{}
.wizard{display:flex;gap:0;margin-bottom:1.2rem;background:#fff;border:1px solid #e3e8e5;border-radius:10px;overflow:hidden}
.wizard a,.wizard span{flex:1;padding:.7rem 1rem;text-decoration:none;color:#6b7a73;display:flex;gap:.5rem;align-items:center;border-right:1px solid #eef1ef;font-weight:500}
.wizard .n{width:24px;height:24px;border-radius:50%;background:#e9ecef;display:inline-flex;align-items:center;justify-content:center;font-size:.75rem;font-weight:700}
.wizard .done{color:var(--brand)}.wizard .done .n{background:var(--brand-l);color:var(--brand)}
.wizard .cur{background:var(--brand-l);color:var(--brand-d)}.wizard .cur .n{background:var(--brand);color:#fff}
.alerts-box .alert{padding:.4rem .7rem;margin-bottom:.35rem;font-size:.85rem}
.sym-chip{display:inline-flex;align-items:center;gap:.35rem;background:var(--brand-l);border-radius:20px;padding:.15rem .6rem;margin:.15rem;font-size:.8rem}
.chart-wrap{overflow-x:auto}
table.rep-chart{font-size:.8rem;border-collapse:collapse}
table.rep-chart th,table.rep-chart td{border:1px solid #e3e8e5;padding:.25rem .4rem;text-align:center;white-space:nowrap}
table.rep-chart th.rot{writing-mode:vertical-rl;transform:rotate(180deg);font-weight:600;height:90px;vertical-align:bottom}
table.rep-chart td.sym{text-align:left;max-width:260px;white-space:normal}
.sugg{border-left:4px solid var(--brand)}.sugg.blocked{border-left-color:#dc3545;opacity:.75}
.sugg .rank{font-size:1.4rem;font-weight:800;color:var(--brand);width:42px}
.score-bar{height:6px;background:#eef1ef;border-radius:3px;overflow:hidden}.score-bar>div{height:100%;background:var(--brand)}
.kv{display:grid;grid-template-columns:minmax(120px,38%) 1fr;gap:.3rem .8rem;font-size:.875rem}.kv dt{color:#6b7a73;font-weight:500}.kv dd{margin:0}
.nav-tabs .nav-link{color:#6b7a73}.nav-tabs .nav-link.active{color:var(--brand-d);font-weight:600}
.form-label{font-weight:500;font-size:.83rem;color:#46544e;margin-bottom:.2rem}
.section-title{font-size:.78rem;text-transform:uppercase;letter-spacing:.06em;color:var(--brand);font-weight:700;margin:1rem 0 .5rem;border-bottom:1px solid #eef1ef;padding-bottom:.3rem}
.timeline{border-left:2px solid #e3e8e5;margin-left:.5rem;padding-left:1rem}
.timeline .item{position:relative;margin-bottom:1rem}.timeline .item:before{content:'';position:absolute;left:-1.42rem;top:.35rem;width:10px;height:10px;border-radius:50%;background:var(--brand)}
.badge-soft{background:var(--brand-l);color:var(--brand-d)}
.ai-box{background:linear-gradient(135deg,#f3f0ff,#eef7f2);border:1px solid #ddd6f5}
.bare{background:linear-gradient(135deg,#17332a,#2f6b4f)}
.login-card{max-width:400px;margin:10vh auto}
.disclaimer{font-size:.75rem;color:#6b7a73}
@media print{.sidebar,.topbar,.no-print{display:none!important}.main{margin:0}.content{padding:0}body{background:#fff}}
