body{font-size:.92rem}
a{color:var(--bs-link-color)}
.btn-primary,.btn-primary:hover,.btn-primary:focus{background:var(--btn-bg);border-color:var(--btn-bg);color:var(--btn-text)}
.btn-outline-primary{color:var(--bs-primary);border-color:var(--bs-primary)}.btn-outline-primary:hover{background:var(--bs-primary);color:#fff}
.bg-primary{background-color:var(--bs-primary)!important}.text-primary{color:var(--bs-primary)!important}
.progress-bar{background-color:var(--bs-primary)}
.nav-tabs .nav-link.active{border-top:3px solid var(--bs-primary)}
.card{background:var(--card-bg,#fff);border:0;box-shadow:0 1px 3px rgba(0,0,0,.06)}
.table>thead th{background:var(--th-bg,#eef1f5);font-weight:600;font-size:.8rem;text-transform:uppercase;letter-spacing:.02em;white-space:nowrap}
.min-vw-0{min-width:0}
/* admin */
.sidebar{width:250px;min-height:100vh;background:var(--sb-bg);color:var(--sb-text);position:sticky;top:0;height:100vh;overflow-y:auto;flex-shrink:0}
.sidebar .brand{height:58px;color:#fff;border-bottom:1px solid rgba(255,255,255,.08)}
.sidebar .nav-link{color:var(--sb-text);padding:.45rem 1rem;border-radius:6px;margin:1px 8px;font-size:.88rem}
.sidebar .nav-link i{width:22px;display:inline-block}
.sidebar .nav-link:hover{background:rgba(255,255,255,.07);color:#fff}
.sidebar .nav-link.active{background:var(--sb-act-bg);color:var(--sb-act-text)}
.topbar{height:58px;background:var(--tb-bg);color:var(--tb-text);border-bottom:1px solid rgba(0,0,0,.06);position:sticky;top:0;z-index:100}
.stat-card .val{font-size:1.6rem;font-weight:700}
.stat-card .ic{font-size:1.8rem;opacity:.25}
@media(max-width:991px){.sidebar{position:fixed;left:-260px;z-index:1050;transition:left .2s}.sb-open .sidebar{left:0;box-shadow:0 0 30px rgba(0,0,0,.4)}}
/* portal */
.portal-nav{background:var(--hd-bg)}.portal-nav .nav-link,.portal-nav .navbar-brand,.portal-nav .navbar-toggler{color:var(--hd-text)!important}
.portal .btn-primary{background:var(--btn-bg);border-color:var(--btn-bg);color:var(--btn-text)}
.auth-bg{background:linear-gradient(135deg,var(--bs-body-bg),#dfe6ee)}
/* public */
.public{background:var(--bs-body-bg);color:var(--bs-body-color)}
.pub-nav{background:var(--hd-bg)}.pub-nav .nav-link,.pub-nav .navbar-brand{color:var(--hd-text)!important}
.btn-pub,.pub-nav .btn-pub{background:var(--btn-bg);color:var(--btn-text)!important;border-radius:30px}
.btn-pub:hover{filter:brightness(1.08)}
.hero{background:var(--hero-bg);color:var(--hero-text);padding:90px 0;position:relative;overflow:hidden}
.hero h1{font-weight:800;font-size:2.8rem}
.hero .grid-bg{position:absolute;inset:0;opacity:.08;background-image:linear-gradient(#fff 1px,transparent 1px),linear-gradient(90deg,#fff 1px,transparent 1px);background-size:40px 40px}
.sec-alt{background:var(--sec-bg)}
.text-accent{color:var(--a)}
.feature-ic{width:52px;height:52px;border-radius:12px;display:flex;align-items:center;justify-content:center;background:var(--p);color:#fff;font-size:1.4rem}
.plan-card.featured{border:2px solid var(--a)!important;transform:scale(1.03)}
.pub-footer{background:var(--ft-bg);color:var(--ft-text)}.pub-footer a{color:var(--ft-text);opacity:.8}
.portfolio-img{height:220px;object-fit:cover;width:100%;background:#ccd}
/* misc */
.kanban{display:flex;gap:12px;overflow-x:auto}.kanban .col-k{min-width:260px;flex:1;background:rgba(0,0,0,.03);border-radius:8px;padding:8px}
.kanban .task{background:#fff;border-radius:6px;padding:8px;margin-bottom:8px;box-shadow:0 1px 2px rgba(0,0,0,.08)}
.timeline{border-left:2px solid #dde3ea;padding-left:16px}.timeline .ti{position:relative;margin-bottom:14px}.timeline .ti:before{content:'';position:absolute;left:-22px;top:4px;width:10px;height:10px;border-radius:50%;background:var(--bs-primary)}
.stage-row.done{opacity:.75}
.menu-sort li{cursor:move}
.thumb{width:100%;height:150px;object-fit:cover;border-radius:6px;background:#eee}
.chat{max-height:460px;overflow-y:auto}.chat .msg{max-width:75%;padding:8px 12px;border-radius:10px;margin-bottom:8px}.chat .me{background:var(--bs-primary);color:#fff;margin-left:auto}.chat .them{background:#fff;border:1px solid #e5e5e5}
@media print{.sidebar,.topbar,footer,.btn,.d-print-none{display:none!important}.main{width:100%}body{background:#fff}}
.print-doc table{font-size:.9rem}
.portal-nav .nav-link{font-size:.85rem;white-space:nowrap;padding-left:.45rem!important;padding-right:.45rem!important}
