:root{
  --ink:#0d2233;--ink-soft:#46617a;--muted:#7b8fa3;--line:#e2eaf2;--bg:#f5f8fb;
  --brand:#0f4c81;--brand-2:#1b86c9;--accent:#ffb545;--ok:#12805c;--warn:#b8791a;--err:#c0392b;
  --radius:14px;--shadow:0 1px 2px rgba(13,34,51,.05),0 6px 18px rgba(13,34,51,.06);
  --font:"Inter","Segoe UI",system-ui,-apple-system,Arial,sans-serif;
}
*,*::before,*::after{box-sizing:border-box}
body{margin:0;font-family:var(--font);background:var(--bg);color:var(--ink);font-size:15px;line-height:1.55;-webkit-font-smoothing:antialiased}
h1,h2,h3{margin:0;line-height:1.25;letter-spacing:-.02em}
h1{font-size:1.28rem;font-weight:750}
h2{font-size:1.12rem;font-weight:700;margin-bottom:14px}
h3{font-size:1rem;font-weight:700}
button{font:inherit;cursor:pointer}
a{color:var(--brand);text-decoration:none}
[hidden]{display:none!important}
:focus-visible{outline:3px solid #7cc8ee;outline-offset:2px}

/* ---------- auth ---------- */
.auth{min-height:100vh;display:grid;place-items:center;padding:24px;
  background:radial-gradient(1100px 600px at 15% -10%,#dceefb,transparent),radial-gradient(800px 500px at 100% 100%,#e6f4fd,transparent),#f5f8fb}
.auth__card{width:min(400px,100%);background:#fff;border:1px solid var(--line);border-radius:20px;
  padding:30px;box-shadow:0 24px 60px rgba(13,34,51,.12)}
.auth__brand{display:flex;align-items:center;gap:12px;margin-bottom:24px}
.auth__brand strong{display:block;font-size:1.02rem}
.auth__brand span{display:block;font-size:.8rem;color:var(--muted)}
.auth__back{display:block;margin-top:18px;font-size:.85rem;color:var(--muted)}
.auth__back:hover{color:var(--brand)}
.logo{width:42px;height:42px;border-radius:12px;display:grid;place-items:center;color:#fff;
  background:linear-gradient(140deg,var(--brand),var(--brand-2));box-shadow:0 6px 16px rgba(15,76,129,.25)}
.logo svg{width:24px;height:24px}
.logo--sm{width:34px;height:34px;border-radius:10px}
.logo--sm svg{width:19px;height:19px}

/* ---------- shell ---------- */
.app{display:grid;grid-template-columns:246px minmax(0,1fr);min-height:100vh}
.sidebar{background:#0b1d2c;color:#c6d7e6;display:flex;flex-direction:column;position:sticky;top:0;height:100vh;overflow:auto}
.sidebar__brand{display:flex;align-items:center;gap:11px;padding:18px 18px 20px;border-bottom:1px solid rgba(255,255,255,.07)}
.sidebar__title strong{display:block;color:#fff;font-size:.95rem}
.sidebar__title span{display:block;font-size:.74rem;color:#7f97ab}
.sidebar__nav{padding:12px 10px;display:flex;flex-direction:column;gap:2px;flex:1}
.nav-item{display:flex;align-items:center;gap:11px;width:100%;padding:10px 12px;border:none;border-radius:10px;
  background:none;color:#b9cdde;font-size:.89rem;text-align:left;transition:background .15s,color .15s}
.nav-item svg{width:19px;height:19px;flex-shrink:0;opacity:.85}
.nav-item:hover{background:rgba(255,255,255,.06);color:#fff}
.nav-item.is-active{background:linear-gradient(100deg,rgba(27,134,201,.34),rgba(27,134,201,.14));color:#fff;font-weight:600}
.nav-item.is-active svg{opacity:1}
.nav-badge{margin-left:auto;background:#e8544a;color:#fff;font-size:.7rem;font-style:normal;font-weight:700;
  min-width:20px;height:20px;border-radius:10px;display:grid;place-items:center;padding:0 6px}
.sidebar__foot{padding:10px;border-top:1px solid rgba(255,255,255,.07);display:flex;flex-direction:column;gap:2px}

.main{min-width:0;display:flex;flex-direction:column}
.topbar{position:sticky;top:0;z-index:20;display:flex;align-items:center;gap:14px;padding:14px 24px;
  background:rgba(255,255,255,.94);backdrop-filter:blur(10px);border-bottom:1px solid var(--line)}
.topbar__title{flex:1;font-size:1.15rem}
.topbar__right{display:flex;align-items:center;gap:12px}
.topbar__user{font-size:.82rem;color:var(--muted);padding:4px 10px;border-radius:999px;background:#f0f6fb}
.icon-btn{border:1px solid var(--line);background:#fff;border-radius:10px;width:38px;height:38px;display:none;place-items:center;color:var(--ink)}
.icon-btn svg{width:20px;height:20px}
.content{padding:24px;max-width:1280px;width:100%}

/* ---------- buttons ---------- */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:7px;padding:9px 16px;border-radius:10px;
  border:1px solid transparent;font-weight:600;font-size:.87rem;transition:background .16s,border-color .16s,transform .1s,box-shadow .16s}
.btn--primary{background:linear-gradient(135deg,var(--brand),var(--brand-2));color:#fff;box-shadow:0 5px 14px rgba(15,76,129,.2)}
.btn--primary:hover{box-shadow:0 8px 20px rgba(15,76,129,.26)}
.btn--ghost{background:#fff;border-color:var(--line);color:var(--ink)}
.btn--ghost:hover{border-color:#c3d6e8;background:#fbfdff}
.btn--danger{background:#fff;border-color:#efc9c4;color:var(--err)}
.btn--danger:hover{background:#fdf3f2}
.btn--sm{padding:7px 12px;font-size:.81rem;border-radius:9px}
.btn--block{width:100%}
.btn[disabled]{opacity:.55;pointer-events:none}

/* ---------- cards/grid ---------- */
.cards{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;margin-bottom:20px}
.stat{background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:16px 18px;box-shadow:var(--shadow)}
.stat__label{font-size:.78rem;color:var(--muted);text-transform:uppercase;letter-spacing:.05em;font-weight:650}
.stat__value{font-size:1.7rem;font-weight:800;letter-spacing:-.03em;margin-top:4px;line-height:1.1}
.stat__hint{font-size:.76rem;color:var(--muted);margin-top:4px}
.stat--accent .stat__value{color:var(--brand-2)}
.stat--warn .stat__value{color:var(--warn)}
.stat--ok .stat__value{color:var(--ok)}

.panel{background:#fff;border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:20px;margin-bottom:18px}
.panel__head{display:flex;align-items:center;justify-content:space-between;gap:14px;margin-bottom:14px;flex-wrap:wrap}
.panel__head h2{margin:0}
.grid-2{display:grid;grid-template-columns:1fr 1fr;gap:18px;align-items:start}

/* ---------- chart ---------- */
.chart{display:flex;align-items:flex-end;gap:8px;height:150px;padding-top:10px}
.chart__col{flex:1;display:flex;flex-direction:column;align-items:center;gap:6px;min-width:0}
.chart__bar{width:100%;border-radius:6px 6px 3px 3px;background:linear-gradient(180deg,var(--brand-2),#8fd0ee);min-height:4px;
  transition:height .4s ease}
.chart__bar:hover{filter:brightness(1.1)}
.chart__label{font-size:.66rem;color:var(--muted);white-space:nowrap}
.chart__value{font-size:.7rem;font-weight:700;color:var(--ink-soft)}

/* ---------- table ---------- */
.table-wrap{overflow-x:auto;border:1px solid var(--line);border-radius:12px}
table{width:100%;border-collapse:collapse;font-size:.87rem;min-width:720px}
thead th{background:#f4f8fc;color:var(--ink-soft);text-align:left;font-weight:650;font-size:.76rem;
  text-transform:uppercase;letter-spacing:.04em;padding:11px 14px;border-bottom:1px solid var(--line);white-space:nowrap}
tbody td{padding:11px 14px;border-bottom:1px solid #eef3f8;vertical-align:top}
tbody tr:last-child td{border-bottom:none}
tbody tr:hover{background:#fafdff}
.cell-strong{font-weight:600}
.cell-sub{font-size:.78rem;color:var(--muted)}
.nowrap{white-space:nowrap}
.row-actions{display:flex;gap:6px;flex-wrap:wrap}

/* ---------- badges ---------- */
.badge{display:inline-flex;align-items:center;gap:5px;padding:3px 9px;border-radius:999px;font-size:.73rem;font-weight:650;white-space:nowrap}
.badge--new{background:#e6f1fd;color:#12629b}
.badge--in_progress{background:#fff4e0;color:#9a6a0c}
.badge--done{background:#e6f7ef;color:#0e7a52}
.badge--cancelled{background:#f2f4f6;color:#6b7c8c}
.badge--off{background:#f2f4f6;color:#6b7c8c}
.badge--on{background:#e6f7ef;color:#0e7a52}

/* ---------- forms ---------- */
.form{display:flex;flex-direction:column;gap:12px}
.field{display:flex;flex-direction:column;gap:5px;font-size:.82rem;font-weight:600;color:var(--ink-soft)}
.field input,.field select,.field textarea{width:100%;padding:9px 12px;border:1px solid var(--line);border-radius:9px;
  font:inherit;font-weight:450;font-size:.9rem;color:var(--ink);background:#fbfdff;transition:border-color .15s,box-shadow .15s,background .15s}
.field textarea{resize:vertical;min-height:80px}
.field input:focus,.field select:focus,.field textarea:focus{outline:none;border-color:#63b8e4;background:#fff;box-shadow:0 0 0 3px rgba(99,184,228,.16)}
.field__hint{font-size:.74rem;color:var(--muted);font-weight:400;margin-top:2px}
.field--row{flex-direction:row;align-items:center;gap:8px;font-weight:500;cursor:pointer}
.field--row input[type=checkbox]{width:17px;height:17px;accent-color:var(--brand-2)}
.grid-f{display:grid;gap:12px}
.grid-f--2{grid-template-columns:1fr 1fr}
.form-actions{display:flex;gap:8px;justify-content:flex-end;margin-top:6px;flex-wrap:wrap}
.form__status{margin:0;font-size:.84rem;font-weight:600}
.form__status.is-ok{color:var(--ok)}
.form__status.is-err{color:var(--err)}

/* ---------- toolbar ---------- */
.toolbar{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin-bottom:14px}
.toolbar input[type=search],.toolbar select{padding:8px 12px;border:1px solid var(--line);border-radius:9px;font:inherit;font-size:.86rem;background:#fff;min-width:180px}
.toolbar input[type=search]:focus,.toolbar select:focus{outline:none;border-color:#63b8e4;box-shadow:0 0 0 3px rgba(99,184,228,.14)}
.toolbar__spacer{flex:1}

/* ---------- lists ---------- */
.item-list{display:flex;flex-direction:column;gap:10px}
.list-item{border:1px solid var(--line);border-radius:12px;padding:14px 16px;display:flex;gap:14px;align-items:flex-start;background:#fff}
.list-item__body{flex:1;min-width:0}
.list-item__title{font-weight:650;margin-bottom:2px}
.list-item__meta{font-size:.79rem;color:var(--muted)}
.list-item__actions{display:flex;gap:6px;flex-wrap:wrap;flex-shrink:0}
.list-item.is-off{background:#fafbfc;opacity:.78}

.gallery-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:12px}
.gallery-card{border:1px solid var(--line);border-radius:12px;overflow:hidden;background:#fff;display:flex;flex-direction:column}
.gallery-card img{width:100%;aspect-ratio:4/3;object-fit:cover;background:#eef5fb}
.gallery-card__body{padding:9px 10px;display:flex;flex-direction:column;gap:6px}
.gallery-card__cap{font-size:.78rem;color:var(--ink-soft);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

.empty{padding:36px 20px;text-align:center;color:var(--muted);font-size:.9rem;border:1px dashed var(--line);border-radius:12px;background:#fbfdff}
.drop{position:relative;border:2px dashed #c9dcee;border-radius:12px;padding:22px;text-align:center;background:#f8fcff;
  transition:border-color .16s,background .16s;cursor:pointer}
.drop.is-over{border-color:var(--brand-2);background:#eef8ff}
.drop input[type=file]{position:absolute;inset:0;opacity:0;cursor:pointer;width:100%;height:100%}
.drop__icon{font-size:1.6rem;margin-bottom:6px}
.drop p{margin:0;font-size:.85rem;color:var(--ink-soft)}
.drop small{color:var(--muted);font-size:.76rem}

/* ---------- modal ---------- */
.modal{position:fixed;inset:0;z-index:100;display:none;align-items:center;justify-content:center;padding:20px}
.modal.is-open{display:flex}
.modal__backdrop{position:absolute;inset:0;background:rgba(9,24,38,.5);backdrop-filter:blur(3px)}
.modal__dialog{position:relative;background:#fff;border-radius:16px;padding:24px;width:min(620px,100%);
  max-height:calc(100vh - 40px);overflow:auto;box-shadow:0 24px 60px rgba(13,34,51,.3);animation:pop .18s ease}
@keyframes pop{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
.modal__dialog h2{padding-right:28px;margin-bottom:14px}
.modal__close{position:absolute;right:12px;top:10px;width:32px;height:32px;border-radius:50%;border:none;background:#f1f6fb;
  color:var(--ink-soft);font-size:1.3rem;line-height:1;display:grid;place-items:center}
.modal__close:hover{background:#e6eef7;color:var(--ink)}
.modal--wide .modal__dialog{width:min(760px,100%)}
body.modal-open{overflow:hidden}

/* ---------- toast ---------- */
.toast{position:fixed;left:50%;bottom:24px;transform:translate(-50%,16px);z-index:200;background:#0d2233;color:#fff;
  padding:12px 20px;border-radius:11px;font-size:.88rem;font-weight:600;box-shadow:0 14px 34px rgba(13,34,51,.3);
  opacity:0;pointer-events:none;transition:opacity .2s,transform .2s;max-width:92vw}
.toast.is-show{opacity:1;transform:translate(-50%,0)}
.toast.is-err{background:#8f2b21}

/* ---------- responsive ---------- */
@media (max-width:1100px){.cards{grid-template-columns:repeat(2,1fr)}}
@media (max-width:940px){
  .app{grid-template-columns:1fr}
  .sidebar{position:fixed;left:0;top:0;bottom:0;width:250px;z-index:70;transform:translateX(-100%);
    transition:transform .2s ease;box-shadow:0 0 40px rgba(0,0,0,.3)}
  .sidebar.is-open{transform:none}
  .icon-btn{display:grid}
  .grid-2{grid-template-columns:1fr}
  .content{padding:18px}
}
@media (max-width:600px){
  .cards{grid-template-columns:1fr 1fr;gap:10px}
  .stat__value{font-size:1.4rem}
  .topbar{padding:12px 14px;gap:10px}
  .topbar__user{display:none}
  .content{padding:14px}
  .panel{padding:15px}
  .grid-f--2{grid-template-columns:1fr}
  .list-item{flex-direction:column}
}
