/* Bloomcend portal styles */
:root{--ink:#0F2A22;--ever:#0F5C43;--sprout:#34C77B;--petal:#FF6B4A;--cream:#F7F5EE;--paper:#fff;--text:#17201C;--muted:#64706A;--line:#E3E1D6;--red:#C8372D;--amber:#B7791F}
*{box-sizing:border-box}
html{font-size:14.5px}
body{margin:0;font-family:"Plus Jakarta Sans",Inter,ui-sans-serif,system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;color:var(--text);background:var(--cream);line-height:1.5}
a{color:var(--ever);text-decoration:none}a:hover{text-decoration:underline}
code,.mono,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.86rem}
code{background:#EEECE2;padding:1px 5px;border-radius:4px}
h1,h2,h3{margin:0;line-height:1.25}h3{font-size:1rem;margin:22px 0 10px}
.muted{color:var(--muted)}.big{font-size:2rem;font-weight:700;margin:0;color:var(--ink)}
.wrap{word-break:break-all;white-space:normal}

.side{position:fixed;inset:0 auto 0 0;width:232px;background:var(--ink);color:#C9D6D0;display:flex;flex-direction:column;padding:18px 12px;overflow-y:auto}
.brand{display:flex;align-items:center;gap:10px;color:#fff;font-weight:800;font-size:1.25rem;letter-spacing:-.02em;padding:0 8px}
.brand:hover{text-decoration:none}.brand.dark{color:var(--ink);justify-content:center}
.brand-sub{font-size:.7rem;letter-spacing:.14em;text-transform:uppercase;color:#7FA394;padding:6px 8px 14px;border-bottom:1px solid #214439;margin-bottom:8px}
.nav-h{font-size:.68rem;letter-spacing:.12em;text-transform:uppercase;color:#7FA394;padding:14px 10px 4px}
.nav-a{display:flex;align-items:center;gap:10px;padding:8px 10px;border-radius:8px;color:#C9D6D0;font-weight:500}
.nav-a:hover{background:#17392F;color:#fff;text-decoration:none}.nav-a.on{background:var(--ever);color:#fff}
.ic{width:17px;height:17px;flex:none}
.side-foot{margin-top:auto;border-top:1px solid #214439;padding-top:10px}
.who{padding:4px 10px 6px;display:flex;flex-direction:column}.who b{color:#fff}.who span{font-size:.8rem;color:#7FA394;overflow:hidden;text-overflow:ellipsis}

.main{margin-left:232px;padding:22px 28px 60px;max-width:1500px}
.top{margin-bottom:16px}.top h1{font-size:1.5rem;letter-spacing:-.02em}
.imp{background:var(--petal);color:#2A0F07;padding:8px 14px;border-radius:8px;margin-bottom:14px;font-weight:600}.imp a{color:#2A0F07;text-decoration:underline}
.flash{padding:10px 14px;border-radius:8px;margin-bottom:14px;background:#E3F6EC;border:1px solid #A9DFC2;color:#0B4A35;word-break:break-word}
.flash.err{background:#FDECEA;border-color:#F3B9B3;color:#8C231B}

.card{background:var(--paper);border:1px solid var(--line);border-radius:12px;margin-bottom:18px;overflow:hidden}
.card-h{display:flex;justify-content:space-between;align-items:center;padding:12px 16px;border-bottom:1px solid var(--line);background:#FBFAF5}
.card-h h2{font-size:1rem}.card-b{padding:16px}
.cols{display:grid;grid-template-columns:minmax(0,1.6fr) minmax(0,1fr);gap:18px;align-items:start}.cols.even{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}
.kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(165px,1fr));gap:12px;margin-bottom:18px}
.kpi{background:var(--paper);border:1px solid var(--line);border-radius:12px;padding:14px 16px;display:flex;flex-direction:column;gap:2px}
.kpi span{font-size:.78rem;color:var(--muted)}.kpi b{font-size:1.45rem;letter-spacing:-.02em;color:var(--ink)}

.tbl-wrap{overflow-x:auto;margin:-16px;margin-bottom:0}.card-b>.tbl-wrap:not(:last-child){margin-bottom:16px}
.card-b>:not(.tbl-wrap):first-child~.tbl-wrap{margin-top:0}
.tbl{width:100%;border-collapse:collapse}
.tbl th{text-align:left;font-size:.76rem;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);padding:9px 14px;background:#FBFAF5;border-bottom:1px solid var(--line);white-space:nowrap}
.tbl td{padding:9px 14px;border-bottom:1px solid #EFEDE3;vertical-align:top}
.tbl tr:last-child td{border-bottom:0}.tbl tbody tr:hover{background:#FCFBF7}
.tbl .r{text-align:right;font-variant-numeric:tabular-nums}.tbl .empty{text-align:center;color:var(--muted);font-style:italic;padding:22px}

.badge{display:inline-block;padding:2px 9px;border-radius:99px;font-size:.76rem;font-weight:600;white-space:nowrap}
.badge.g{background:#DDF4E7;color:#0B5A3E}.badge.y{background:#FCEFCF;color:#8A5A0B}.badge.r{background:#FBE0DD;color:#9B2A21}.badge.m{background:#ECEBE4;color:#59635E}

.btn{display:inline-block;background:var(--ever);color:#fff;border:1px solid var(--ever);border-radius:8px;padding:9px 16px;font:inherit;font-weight:600;cursor:pointer}
.btn:hover{background:#0B4A35;text-decoration:none}.btn.sm{padding:5px 11px;font-size:.84rem}
.btn.ghost{background:#fff;color:var(--ever);border-color:var(--line)}.btn.ghost:hover{background:#F2F0E7}
.btn.danger{background:#fff;color:var(--red);border-color:#EBC5C1}.btn.danger:hover{background:#FDECEA}
form.inline{display:inline-flex;gap:6px;margin:0 4px 4px 0;vertical-align:middle}.actions{margin-top:12px}
.form .f,.rowform .f,.filters .f{display:flex;flex-direction:column;gap:4px;margin-bottom:12px}
.f span{font-size:.82rem;font-weight:600;color:#3B4842}.f small{color:var(--muted);font-size:.8rem}
input,select,textarea{font:inherit;color:inherit;border:1px solid #CFCDC0;border-radius:8px;padding:8px 10px;background:#fff;width:100%;min-width:0}
input:focus,select:focus,textarea:focus{outline:2px solid #9ADBB8;border-color:var(--ever)}
input[type=checkbox]{width:auto}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:0 14px}.grid5{display:grid;grid-template-columns:1.4fr 1fr .8fr 1fr .8fr;gap:0 10px}
.form-a{margin-top:6px}.chk{display:flex;gap:8px;align-items:flex-start;margin:0 0 12px}.hp{position:absolute;left:-9999px}
.rowform{border:1px solid var(--line);border-radius:10px;padding:12px 12px 8px;margin-bottom:10px;background:#FCFBF7}
.rowform-a{display:flex;justify-content:space-between;align-items:center;gap:8px}
.filters{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:14px;align-items:center}.filters input,.filters select{width:auto;max-width:220px}
.tabs{display:flex;gap:2px;flex-wrap:wrap;border-bottom:1px solid var(--line);margin-bottom:14px}
.tabs a{padding:8px 13px;color:var(--muted);font-weight:600;border-bottom:2px solid transparent;margin-bottom:-1px}
.tabs a.on{color:var(--ink);border-color:var(--petal)}.tabs a:hover{text-decoration:none;color:var(--ink)}

.dl{margin:0 0 4px;display:grid;gap:8px}.dl>div{display:grid;grid-template-columns:150px 1fr;gap:10px}
.dl dt{color:var(--muted);font-size:.86rem}.dl dd{margin:0;min-width:0;word-break:break-word}
.copy{display:flex;gap:8px;align-items:flex-start;background:#F1F6F3;border:1px solid #D5E5DC;border-radius:8px;padding:10px;margin-bottom:12px}
.copy code{background:none;flex:1;word-break:break-all;padding:0}.copy-l{font-size:.82rem;font-weight:600;margin-bottom:4px}
.pre{background:#10231C;color:#D7EBDF;padding:12px;border-radius:8px;overflow:auto;white-space:pre-wrap;word-break:break-word;margin:0 0 10px}
.macros code{display:inline-block;margin:2px 0}.steps{padding-left:18px}.steps li{margin-bottom:6px}
.chart{width:100%;height:auto;display:block}.chart text{font-size:11px;fill:#64706A}
.legend{display:flex;gap:16px;font-size:.84rem;color:var(--muted);margin-top:6px}.legend i{display:inline-block;width:10px;height:10px;border-radius:2px;margin-right:6px}
.todos{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px}
.todo{border:1px solid var(--line);border-radius:10px;padding:10px 12px;display:flex;flex-direction:column;color:var(--muted)}
.todo b{font-size:1.4rem;color:var(--ink)}.todo.hot{border-color:#F6B9A9;background:#FFF4F0}.todo.hot b{color:#C7401F}.todo:hover{text-decoration:none;border-color:var(--ever)}

body.auth{display:grid;place-items:start center;padding:48px 16px;background:radial-gradient(1200px 500px at 50% -10%,#DDEFE4,var(--cream))}
.auth-box{width:100%;max-width:560px;background:#fff;border:1px solid var(--line);border-radius:16px;padding:30px}
.auth-sub{text-align:center;font-size:.72rem;letter-spacing:.14em;text-transform:uppercase;color:var(--muted);margin:6px 0 20px}
.auth-h{margin-bottom:4px}.auth-alt{text-align:center;margin:14px 0 0}.auth-box .btn{width:100%}

@media (max-width:980px){.side{position:static;width:auto}.main{margin-left:0;padding:16px}.cols,.cols.even,.grid2,.grid5{grid-template-columns:1fr}.dl>div{grid-template-columns:1fr;gap:0}}
.chk input{flex:none;margin-top:4px}
