/* Tsukoyoki FNB — tema diselaraskan dengan POS Terminal */
:root {
  --red: #be1e2d;
  --red-dark: #98001b;
  --yellow: #FFC107;
  --yellow-dark: #E6AC00;
  --nav: #1c1b1b;
  --bg: #f5f3ee;
  --surface: #fbf9f4;
  --card: #ffffff;
  --ink: #1b1c19;
  --muted: #5b403f;
  --line: rgba(27, 28, 25, 0.08);
  --black: #1c1b1b;
  --black-soft: #eceae4;
  --black-card: #ffffff;
  --cream: #f5f3ee;
  --white: #FFF;
  --gray: #7a6c6b;
  --gray-light: #5b403f;
  --green: #28A745;
  --font-display: 'Libre Caslon Text', Georgia, serif;
  --font-body: 'Inter', 'Plus Jakarta Sans', sans-serif;
  --sidebar-w: 240px;
  --topbar-h: 64px;
  --radius: 12px;
  --radius-full: 9999px;
  --transition: .25s ease;
}

*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
html{font-size:16px;-webkit-text-size-adjust:100%}
body{font-family:var(--font-body);background:var(--bg);color:var(--ink);line-height:1.5;overflow-x:hidden}
img{max-width:100%;display:block}
a{color:inherit;text-decoration:none}
button,input,select,textarea{font-family:inherit;font-size:inherit}
button{cursor:pointer;border:none;background:none}

/* Buttons */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:.5rem;padding:.625rem 1.25rem;border-radius:10px;font-weight:600;font-size:.875rem;border:2px solid transparent;transition:var(--transition);min-height:40px;white-space:nowrap}
.btn--primary{background:var(--red);color:var(--white);border-color:var(--red)}
.btn--primary:hover{background:var(--red-dark)}
.btn--outline{background:transparent;color:var(--ink);border-color:rgba(27,28,25,.18)}
.btn--outline:hover{border-color:var(--red);color:var(--red)}
.btn--yellow{background:var(--yellow);color:var(--ink);border-color:var(--yellow);font-weight:700}
.btn--sm{padding:.375rem .875rem;font-size:.8125rem;min-height:32px;border-radius:8px}
.btn--lg{padding:.875rem 1.75rem;font-size:1rem}
.btn--full{width:100%}
.btn:disabled{opacity:.4;cursor:not-allowed}
.btn-icon{background:none;border:none;font-size:1.125rem;padding:.25rem;cursor:pointer;opacity:.7;color:var(--ink)}
.btn-icon:hover{opacity:1}

/* Forms */
.form-group{margin-bottom:1rem}
.form-group label{display:block;font-size:.8125rem;font-weight:600;color:var(--muted);margin-bottom:.375rem}
.form-group input,.form-group select,.form-group textarea{width:100%;padding:.625rem .875rem;background:var(--card);border:1px solid var(--line);border-radius:10px;color:var(--ink);min-height:42px}
.form-group input:focus,.form-group select:focus,.form-group textarea:focus{outline:none;border-color:var(--red);box-shadow:0 0 0 3px rgba(190,30,45,.12)}
.checkbox-label{display:flex;align-items:center;gap:.5rem;font-size:.875rem;margin-bottom:1rem;cursor:pointer;color:var(--ink)}

/* Toggle */
.toggle{position:relative;display:inline-block;width:44px;height:24px;flex-shrink:0}
.toggle input{opacity:0;width:0;height:0}
.toggle span{position:absolute;inset:0;background:#d4cfc6;border-radius:var(--radius-full);transition:var(--transition);cursor:pointer}
.toggle span::before{content:'';position:absolute;width:18px;height:18px;left:3px;bottom:3px;background:#fff;border-radius:50%;transition:var(--transition);box-shadow:0 1px 3px rgba(0,0,0,.15)}
.toggle input:checked+span{background:var(--red)}
.toggle input:checked+span::before{transform:translateX(20px)}
.toggle.sm{width:36px;height:20px}
.toggle.sm span::before{width:14px;height:14px}
.toggle.sm input:checked+span::before{transform:translateX(16px)}

/* Badge */
.badge{display:inline-block;padding:.2rem .625rem;border-radius:var(--radius-full);font-size:.6875rem;font-weight:700;text-transform:uppercase;letter-spacing:.04em}
.badge--red{background:rgba(190,30,45,.12);color:var(--red)}
.badge--yellow,.badge--orange{background:rgba(255,193,7,.2);color:#9a7400}
.badge--blue{background:rgba(59,130,246,.12);color:#2563eb}
.badge--green{background:rgba(40,167,69,.12);color:var(--green)}
.badge--gray{background:rgba(27,28,25,.06);color:var(--muted)}
.badge--default{background:rgba(27,28,25,.06);color:var(--ink)}

/* ===== LOGIN (gate gelap, selaras nav POS) ===== */
.login-page{display:flex;align-items:center;justify-content:center;min-height:100dvh;position:relative;color:#f5f3ee}
.login-bg{position:fixed;inset:0;background:radial-gradient(ellipse 70% 50% at 50% 0%,rgba(190,30,45,.22),transparent 60%),#1c1b1b;z-index:0}
.login-card{position:relative;z-index:1;width:min(420px,92vw);background:#242323;border:1px solid rgba(255,255,255,.08);border-radius:16px;padding:2.25rem 2rem 1.75rem;text-align:center;box-shadow:0 20px 60px rgba(0,0,0,.45)}
.login-logo{margin:0 auto .85rem;width:100px;object-fit:contain;background:transparent}
.login-brand{font-family:var(--font-display);font-size:clamp(1.75rem,5vw,2.35rem);color:#fff;letter-spacing:.04em;line-height:1.15;font-weight:700}
.login-badge{display:inline-block;background:rgba(255,255,255,.06);border:2px solid var(--red);color:var(--yellow);font-weight:800;font-size:.6875rem;letter-spacing:.22em;padding:.25rem .85rem;border-radius:6px;margin:.5rem 0 .65rem;text-transform:uppercase}
.login-sub{color:rgba(255,255,255,.5);font-size:.8125rem;line-height:1.45;margin:0 auto 1.35rem;max-width:28ch}
.login-form{text-align:left}
.login-form .form-group{margin-bottom:.875rem}
.login-form .form-group label{color:rgba(255,255,255,.65);font-size:.75rem;letter-spacing:.04em;text-transform:uppercase}
.login-form .form-group input{background:#1c1b1b;border-color:rgba(255,255,255,.12);color:#fff}
.login-form .btn--lg{margin-top:.35rem;letter-spacing:.04em}
.login-foot{margin-top:1.75rem;padding-top:1.25rem;border-top:1px solid rgba(255,255,255,.08);display:flex;flex-direction:column;align-items:center;gap:.28rem;text-align:center}
.login-foot__brand{font-family:var(--font-display);font-size:.9375rem;font-weight:700;letter-spacing:.28em;color:#fff;line-height:1.2}
.login-foot__line{font-size:.6875rem;font-weight:600;letter-spacing:.18em;color:rgba(255,255,255,.45);text-transform:uppercase;line-height:1.3}
.login-foot__est{font-size:.625rem;font-weight:600;letter-spacing:.32em;color:var(--yellow);margin-top:.15rem;line-height:1.2}

.login-card--wide{width:min(560px,94vw)}
.outlet-grid{display:grid;grid-template-columns:1fr;gap:.75rem;text-align:left;margin-top:.5rem}
@media(min-width:480px){.outlet-grid{grid-template-columns:1fr 1fr}}
.outlet-card{display:flex;flex-direction:column;align-items:flex-start;gap:.35rem;padding:1.1rem 1.15rem;background:#1c1b1b;border:1px solid rgba(255,255,255,.1);border-radius:12px;color:#f5f3ee;cursor:pointer;transition:var(--transition);text-align:left;width:100%}
.outlet-card:hover,.outlet-card:focus-visible{border-color:var(--red);background:rgba(190,30,45,.15);outline:none}
.outlet-card__icon{font-size:1.75rem;color:var(--yellow);margin-bottom:.15rem}
.outlet-card strong{font-size:.95rem;color:#fff}
.outlet-card small{font-size:.75rem;color:rgba(255,255,255,.45);line-height:1.35}

/* ===== APP LAYOUT (nav gelap + konten cream = POS) ===== */
.app-page{display:flex;min-height:100dvh;background:var(--bg);color:var(--ink)}
.sidebar{position:fixed;top:0;left:0;width:var(--sidebar-w);height:100dvh;background:var(--nav);border-right:1px solid rgba(255,255,255,.06);display:flex;flex-direction:column;z-index:100;transition:transform .28s ease,opacity .28s ease;color:#fff}
.sidebar.hidden{transform:translateX(-100%);opacity:0;pointer-events:none}
.sidebar__brand{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:0;padding:1.35rem 1rem 1.15rem;border-bottom:1px solid rgba(255,255,255,.06);text-align:center}
.sidebar__brand img{width:var(--brand-logo-size,64px);height:var(--brand-logo-size,64px);border-radius:14px;object-fit:contain;background:transparent;flex-shrink:0;display:block}
.sidebar__brand > div{min-width:0;width:100%;display:flex;flex-direction:column;align-items:center;gap:.2rem;margin-top:var(--brand-logo-gap,8px)}
.sidebar__brand strong,.sidebar__brand .brand-code{display:block;font-family:var(--font-display);font-size:var(--brand-code-size,18px);color:#fff;line-height:1.15;letter-spacing:.02em;text-align:center;white-space:normal;overflow:visible;text-overflow:unset;max-width:100%;word-break:break-word}
.sidebar__brand small{display:block;font-size:.75rem;color:rgba(255,255,255,.55);letter-spacing:.02em;line-height:1.3;text-align:center;white-space:normal;overflow:visible;text-overflow:unset;max-width:100%;word-break:break-word}
.brand-font-preview{font-weight:700;margin:.25rem 0 1rem;color:var(--ink);line-height:1.1;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
input[type=range]{width:100%;accent-color:var(--red)}
.tdms-pos__ticker--notif{color:#fff;background:#98001b}
.tdms-pos__ticker--notif .tdms-pos__ticker-icon{color:#FFC107}
.sidebar__nav{flex:1;padding:.5rem 0;overflow-y:auto;display:flex;flex-direction:column;gap:0}
.sidebar__link{display:flex;align-items:center;gap:.75rem;padding:.75rem 1rem;border-radius:0;font-size:.875rem;font-weight:500;color:rgba(255,255,255,.55);transition:var(--transition);width:100%;text-align:left;border-left:3px solid transparent}
.sidebar__link:hover{background:rgba(255,255,255,.06);color:#fff}
.sidebar__link.active{background:rgba(255,255,255,.1);color:#fff;border-left-color:var(--red)}
.sidebar__footer{padding:.75rem;border-top:1px solid rgba(255,255,255,.08)}
.sidebar__logout{color:rgba(255,255,255,.45)}
.sidebar__logout:hover{color:#fff}

.app-main{flex:1;margin-left:var(--sidebar-w);display:flex;flex-direction:column;min-height:100dvh;transition:margin-left .28s ease;background:var(--bg)}
.fullscreen-mode .app-main{margin-left:0}

.topbar{position:sticky;top:0;height:var(--topbar-h);background:rgba(251,249,244,.92);backdrop-filter:blur(10px);border-bottom:1px solid var(--line);display:flex;align-items:center;padding:0 1.5rem;gap:1rem;z-index:50;color:var(--ink);transition:opacity .25s ease,transform .25s ease,height .25s ease,padding .25s ease,border-color .25s ease;overflow:hidden}
.topbar.hidden{opacity:0;transform:translateY(-8px);height:0;min-height:0;padding-top:0;padding-bottom:0;border-bottom-color:transparent;pointer-events:none}
.topbar__title{font-size:1.125rem;font-weight:700;flex:1;font-family:var(--font-display)}
.topbar__actions{display:flex;align-items:center;gap:1rem}
.branch-select,.branch-label{background:var(--card);border:1px solid var(--line);color:var(--ink);padding:.375rem .75rem;border-radius:10px;font-size:.8125rem;font-weight:500}
.topbar__notif{font-size:1.25rem;background:none;padding:.25rem}
.topbar__user{display:flex;align-items:center;gap:.625rem;font-size:.8125rem;color:var(--ink)}
.sidebar-toggle{display:none;background:none;font-size:1.25rem;color:var(--ink)}

.main-content{flex:1;padding:1.5rem;overflow-y:auto;background:var(--bg);color:var(--ink);transition:opacity .2s ease,transform .2s ease}
.main-content.route-fade-out{opacity:0;transform:translateY(6px)}
.main-content.route-fade-in{opacity:0;transform:translateY(6px)}
.fullscreen-mode .main-content{padding:0}
body.pos-mode,
body.pos-mode .app-main,
body.pos-mode .main-content{background:var(--bg)}
body.shell-transitioning .tdms-pos{opacity:.35;transition:opacity .2s ease}

/* ===== COMPONENTS ===== */
.page-header{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:1rem;margin-bottom:1.5rem}
.page-title{font-size:1.5rem;font-weight:700;color:var(--ink);font-family:var(--font-display)}
.page-desc{color:var(--muted);font-size:.875rem;margin-top:.25rem}
.page-actions{display:flex;gap:.5rem;flex-wrap:wrap}

.card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:1.25rem;box-shadow:0 8px 24px rgba(27,28,25,.04)}
.card__title{font-size:1rem;font-weight:700;margin-bottom:1rem;color:var(--ink);font-family:var(--font-display)}
.mt{margin-top:1.25rem}

.stat-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:1rem;margin-bottom:1.5rem}
.stat-card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:1.25rem;position:relative;overflow:hidden;box-shadow:0 8px 24px rgba(27,28,25,.04)}
.stat-card::before{content:'';position:absolute;top:0;left:0;right:0;height:3px;background:var(--red);opacity:0;transition:var(--transition)}
.stat-card--red::before,.stat-card--warn::before{opacity:1}
.stat-card--warn::before{background:var(--yellow)}
.stat-card--yellow::before{background:var(--yellow);opacity:1}
.stat-card--green::before{background:#2f9e44;opacity:1}
.stat-card__label{font-size:.75rem;color:var(--muted);text-transform:uppercase;letter-spacing:.06em}
.stat-card__value{display:block;font-size:1.5rem;font-weight:800;color:var(--ink);margin:.25rem 0}
.stat-card__sub{font-size:.75rem;color:var(--gray)}

.grid-2{display:grid;grid-template-columns:1fr 1fr;gap:1.25rem}
.grid-2-1{display:grid;grid-template-columns:2fr 1fr;gap:1.25rem;margin-bottom:1.25rem}

.table-wrap{overflow-x:auto}
.data-table{width:100%;border-collapse:collapse;font-size:.875rem;color:var(--ink)}
.data-table th{text-align:left;padding:.75rem 1rem;color:var(--muted);font-weight:600;font-size:.75rem;text-transform:uppercase;letter-spacing:.05em;border-bottom:1px solid var(--line)}
.data-table td{padding:.75rem 1rem;border-bottom:1px solid var(--line);vertical-align:middle}
.data-table tr:hover td{background:rgba(27,28,25,.03)}
.row-warn td{background:rgba(255,193,7,.08)!important}
.row-danger td{background:rgba(190,30,45,.06)!important}

.avatar{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;border-radius:50%;background:var(--red);color:var(--white);font-weight:700;font-size:.875rem}

.empty-state{text-align:center;padding:2.5rem;color:var(--muted)}
.empty-state__icon{font-size:2.5rem;display:block;margin-bottom:.75rem}

.bar-chart{display:flex;align-items:flex-end;gap:.75rem;height:160px;padding-top:1rem}
.bar-chart__item{flex:1;display:flex;flex-direction:column;align-items:center;gap:.375rem;height:100%;justify-content:flex-end}
.bar-chart__bar{width:100%;max-width:40px;background:linear-gradient(to top,var(--red),var(--yellow));border-radius:4px 4px 0 0;min-height:4px;transition:height .5s}
.bar-chart__item span{font-size:.6875rem;color:var(--muted)}

.quick-actions{display:flex;flex-direction:column;gap:.625rem}

/* Pipeline / Kanban */
.role-tabs{display:flex;gap:.375rem;margin-bottom:1.25rem;flex-wrap:wrap}
.role-tab{padding:.5rem 1rem;border-radius:var(--radius-full);font-size:.8125rem;font-weight:600;color:var(--muted);border:1px solid var(--line);background:var(--card);transition:var(--transition)}
.role-tab.active,.role-tab:hover{background:var(--red);color:var(--white);border-color:var(--red)}

.kanban{display:grid;grid-template-columns:repeat(3,1fr);gap:1rem;min-height:400px}
.kanban__col{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:1rem}
.kanban__col--active{border-color:var(--red);box-shadow:0 0 0 3px rgba(190,30,45,.1)}
.kanban__col h4{font-size:.8125rem;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);margin-bottom:.75rem}
.kanban__drop{min-height:300px;display:flex;flex-direction:column;gap:.5rem}
.kanban__col.drag-over{background:rgba(255,193,7,.08)}

.pipeline-card{display:flex;align-items:center;gap:.625rem;padding:.75rem;background:var(--card);border:1px solid var(--line);border-radius:10px;cursor:grab;transition:var(--transition)}
.pipeline-card:hover{border-color:rgba(190,30,45,.35)}
.pipeline-card.dragging{opacity:.5}
.pipeline-card__grip{color:var(--gray);cursor:grab}
.pipeline-card__icon{font-size:1.25rem}
.pipeline-card__info{flex:1;min-width:0}
.pipeline-card__info strong{display:block;font-size:.8125rem;color:var(--ink)}
.pipeline-card__info small{font-size:.6875rem;color:var(--muted)}

/* Menu management */
.menu-layout{display:grid;grid-template-columns:220px 1fr;gap:1rem;min-height:400px}
.menu-cats{padding:.75rem;display:flex;flex-direction:column;gap:.25rem}
.menu-cats__actions{display:flex;gap:.5rem;margin-bottom:.75rem;flex-wrap:wrap}
.menu-cat{display:flex;align-items:center;gap:.5rem;padding:.625rem .75rem;border-radius:8px;cursor:pointer;font-size:.875rem;transition:var(--transition);color:var(--ink)}
.menu-cat.active,.menu-cat:hover{background:rgba(190,30,45,.1);color:var(--red)}
.menu-cat .grip{color:var(--gray);cursor:grab}
.menu-cat__name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.menu-cat__acts{display:flex;gap:.25rem;flex-shrink:0}
.menu-cat__acts .btn{padding:.2rem .45rem;min-height:28px;font-size:.7rem}
.settings-nav{display:flex;flex-wrap:wrap;gap:.5rem;margin-bottom:1.25rem}
.settings-nav__btn{padding:.55rem 1rem;border-radius:10px;font-size:.8125rem;font-weight:600;color:var(--muted);background:var(--card);border:1px solid var(--line)}
.settings-nav__btn.active,.settings-nav__btn:hover{background:var(--red);color:#fff;border-color:var(--red)}
.nav-order-list{display:flex;flex-direction:column;gap:.5rem}
.nav-order-row{display:grid;grid-template-columns:1fr 88px;gap:.75rem;align-items:center;padding:.65rem .85rem;background:var(--surface);border:1px solid var(--line);border-radius:10px}
.nav-order-row label{font-size:.875rem;font-weight:600;color:var(--ink)}
.nav-order-row input{width:100%;padding:.4rem .6rem;border:1px solid var(--line);border-radius:8px;background:var(--card);color:var(--ink);text-align:center;font-weight:700}
.menu-items{padding:.75rem;display:flex;flex-direction:column;gap:.5rem}
.menu-item-card{display:flex;align-items:center;gap:.75rem;padding:.875rem;border:1px solid var(--line);border-radius:10px;background:var(--card);border-top:3px solid transparent;transition:var(--transition)}
.menu-item-card:hover{border-top-color:var(--red)}
.menu-item-card .grip{cursor:grab;color:var(--gray)}
.menu-item-card__thumb{width:64px;height:64px;border-radius:8px;overflow:hidden;flex-shrink:0;background:var(--black-soft)}
.menu-item-card__img,.menu-upload__img,.pos-item__photo{width:100%;height:100%;object-fit:cover;display:block}
.menu-item-card__info{flex:1;min-width:0;color:var(--ink)}
.menu-item-card .price{display:block;color:var(--red);font-weight:700;font-size:.875rem}
.menu-item-card .portion{display:block;font-size:.75rem;color:var(--muted);margin-top:.125rem}
.menu-upload__preview{width:100%;aspect-ratio:4/3;border-radius:8px;overflow:hidden;background:var(--black-soft);margin-bottom:.75rem;border:1px solid var(--line)}
.logo-upload-preview{width:var(--brand-logo-size,96px);height:var(--brand-logo-size,96px);aspect-ratio:1;max-width:120px;border-radius:14px;background:
  linear-gradient(45deg,#e8e4dc 25%,transparent 25%),
  linear-gradient(-45deg,#e8e4dc 25%,transparent 25%),
  linear-gradient(45deg,transparent 75%,#e8e4dc 75%),
  linear-gradient(-45deg,transparent 75%,#e8e4dc 75%);
  background-size:12px 12px;background-position:0 0,0 6px,6px -6px,-6px 0;background-color:#f7f4ee}
.logo-upload-preview .menu-upload__img{width:100%;height:100%;object-fit:contain}
.menu-upload input[type=file]{width:100%;font-size:.8125rem;color:var(--muted);margin-bottom:.5rem}
.form-hint{font-size:.75rem;color:var(--muted);margin:.25rem 0 .75rem}
.ticker-templates{display:flex;flex-wrap:wrap;gap:.5rem;margin:.25rem 0 1.25rem}
.form-group textarea{min-height:88px;resize:vertical;line-height:1.45}

.branch-card__actions{display:flex;gap:.5rem;margin-top:.75rem;flex-wrap:wrap}
.promo-card__actions{display:flex;gap:.5rem;margin-top:.75rem}
.setup-steps{margin:.75rem 0 0 1.25rem;color:var(--muted);font-size:.875rem;line-height:1.7}
.setup-steps li{margin-bottom:.35rem}
.td-actions{display:flex;gap:.35rem;flex-wrap:wrap}
.staff-menu{position:absolute;top:56px;left:1rem;z-index:40;width:min(320px,calc(100vw - 2rem));background:var(--card);border:1px solid var(--line);border-radius:12px;box-shadow:0 16px 40px rgba(0,0,0,.12);overflow:hidden}
.staff-menu.hidden{display:none}
.staff-menu__head{display:flex;align-items:center;justify-content:space-between;gap:.75rem;padding:.875rem 1rem;border-bottom:1px solid var(--line)}
.staff-menu__nav{display:flex;flex-direction:column;padding:.5rem}
.staff-menu__link{display:flex;flex-direction:column;align-items:flex-start;gap:.125rem;padding:.75rem .875rem;border-radius:8px;color:var(--ink);font-size:.9375rem;font-weight:600;text-align:left;width:100%;background:transparent;border:0;transition:var(--transition)}
.staff-menu__link small{font-weight:400;font-size:.75rem;color:var(--muted)}
.staff-menu__link:hover{background:rgba(190,30,45,.08);color:var(--red)}
.staff-menu__link--danger{color:var(--red);margin-top:.25rem;border-top:1px solid var(--line);border-radius:0 0 8px 8px}

/* Branches */
.branch-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:1rem}
.branch-card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:1.25rem;box-shadow:0 8px 24px rgba(27,28,25,.04)}
.branch-card--offline{opacity:.7;border-color:rgba(190,30,45,.3)}
.branch-card h3{margin:.5rem 0 .25rem;color:var(--ink)}
.branch-card p{color:var(--muted);font-size:.8125rem;margin-bottom:.5rem}
.branch-card small{color:var(--gray);font-size:.75rem;display:block;margin-bottom:.75rem}
.branch-card__status{margin-bottom:.25rem}
.dot{display:inline-block;width:8px;height:8px;border-radius:50%;margin-right:.375rem}
.dot.online{background:var(--green)}
.dot.offline{background:var(--red)}
.sync-config{display:flex;flex-wrap:wrap;gap:1rem;margin-bottom:.75rem}
.sync-config label{font-size:.875rem;display:flex;align-items:center;gap:.375rem}
.sync-time{font-size:.8125rem;color:var(--muted)}

/* Promo */
.promo-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:1rem}
.promo-card__head{display:flex;justify-content:space-between;align-items:center;margin-bottom:.5rem}

/* Top items chart */
.top-item{display:flex;align-items:center;gap:.75rem;padding:.5rem 0;font-size:.875rem;color:var(--ink)}
.top-item span{min-width:120px}
.top-bar{flex:1;height:8px;background:linear-gradient(90deg,var(--red),var(--yellow));border-radius:4px;min-width:20px}

/* Modal & Drawer */
.modal-overlay{position:fixed;inset:0;background:rgba(28,27,27,.45);z-index:1000;display:flex;align-items:center;justify-content:center;padding:1rem}
.modal{background:var(--card);border:1px solid var(--line);border-radius:16px;width:min(480px,95vw);max-height:90vh;overflow-y:auto;box-shadow:0 24px 60px rgba(0,0,0,.18);color:var(--ink)}
.modal__header{display:flex;justify-content:space-between;align-items:center;padding:1rem 1.25rem;border-bottom:1px solid var(--line)}
.modal__header h3{font-size:1rem;font-family:var(--font-display)}
.modal__close{font-size:1.5rem;color:var(--muted);background:none}
.modal__body{padding:1.25rem}
.modal__footer{padding:1rem 1.25rem;border-top:1px solid var(--line);display:flex;justify-content:flex-end;gap:.5rem}

.drawer-overlay{position:fixed;inset:0;background:rgba(28,27,27,.4);z-index:1000}
.drawer{position:fixed;top:0;right:0;width:min(420px,95vw);height:100dvh;background:var(--card);border-left:1px solid var(--line);z-index:1001;display:flex;flex-direction:column;transform:translateX(100%);transition:var(--transition);color:var(--ink);box-shadow:-12px 0 40px rgba(0,0,0,.08)}
.drawer.open{transform:translateX(0)}
.drawer__header{display:flex;justify-content:space-between;align-items:center;padding:1rem 1.25rem;border-bottom:1px solid var(--line)}
.drawer__header button{font-size:1.5rem;color:var(--muted)}
.drawer__body{flex:1;overflow-y:auto;padding:1.25rem}
.drawer__footer{padding:1rem 1.25rem;border-top:1px solid var(--line);display:flex;justify-content:flex-end;gap:.5rem}

.perm-preview{display:flex;flex-wrap:wrap;gap:.375rem;padding:.75rem;background:var(--surface);border-radius:8px;border:1px solid var(--line)}

/* Toast */
.toast{position:fixed;bottom:1.5rem;right:1.5rem;padding:.875rem 1.25rem;background:var(--card);border:1px solid var(--line);border-radius:var(--radius);font-size:.875rem;z-index:2000;transform:translateY(100px);opacity:0;transition:var(--transition);max-width:360px;color:var(--ink);box-shadow:0 12px 32px rgba(0,0,0,.12)}
.toast.show{transform:translateY(0);opacity:1}
.toast--success{border-color:var(--green)}
.toast--error{border-color:var(--red)}

.dragging{opacity:.5}
.grip{cursor:grab;user-select:none}

/* Tabs */
.tabs-bar{display:flex;gap:.375rem;margin-bottom:1.25rem;flex-wrap:wrap}
.tab-btn,.period-tab{padding:.5rem 1rem;border-radius:var(--radius-full);font-size:.8125rem;font-weight:600;color:var(--muted);border:1px solid var(--line);background:var(--card);transition:var(--transition)}
.tab-btn.active,.tab-btn:hover,.period-tab.active,.period-tab:hover{background:var(--red);color:var(--white);border-color:var(--red)}

/* Role checklist */
.role-checklist{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:.5rem}
.role-check-item{display:flex;align-items:center;gap:.625rem;padding:.75rem;background:var(--card);border:1px solid var(--line);border-radius:10px;cursor:pointer;transition:var(--transition);color:var(--ink)}
.role-check-item:hover{border-color:rgba(190,30,45,.35)}
.role-check-item input{width:18px;height:18px;accent-color:var(--red);flex-shrink:0}
.role-check-item__icon{font-size:1.25rem}
.role-check-item strong{display:block;font-size:.8125rem}
.role-check-item small{font-size:.6875rem;color:var(--muted)}

/* Filter bar */
.filter-bar{margin-bottom:1.25rem;display:flex;flex-wrap:wrap;align-items:center;gap:1rem}
.period-tabs{display:flex;gap:.375rem;flex-wrap:wrap}
.tx-detail__grid{display:grid;grid-template-columns:1fr 1fr;gap:1rem}
.tx-detail__grid .form-hint{display:block;margin-bottom:.25rem}
@media(max-width:560px){.tx-detail__grid{grid-template-columns:1fr}}
.custom-range{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap}
.custom-range.hidden{display:none}
.custom-range input[type=date]{background:var(--card);border:1px solid var(--line);color:var(--ink);padding:.375rem .625rem;border-radius:8px}

/* P&L */
.pnl-rows{display:flex;flex-direction:column;gap:.5rem}
.pnl-row{display:flex;justify-content:space-between;align-items:center;padding:.625rem 0;border-bottom:1px solid var(--line);font-size:.9375rem;color:var(--ink)}
.pnl-row--subtotal{border-top:1px solid var(--line);padding-top:.875rem;margin-top:.25rem}
.pnl-row--total{border-top:2px solid var(--red);padding-top:1rem;margin-top:.5rem;font-size:1.125rem}
.pnl-row--deduct span,.pnl-row--deduct strong{color:var(--muted)}
.pnl-block{margin-bottom:1.25rem}
.pnl-block:last-child{margin-bottom:0}
.pnl-block__title{font-size:.75rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);margin:0 0 .5rem;padding-bottom:.375rem;border-bottom:1px dashed var(--line)}
.pnl-row.pnl-divider{border-bottom:1px dashed var(--line);padding:.25rem 0;min-height:0}
.pnl-row.pnl-divider span,.pnl-row.pnl-divider strong{visibility:hidden;font-size:0}
.text-red{color:var(--red)!important}
.text-yellow{color:#9a7400!important}
.text-green{color:var(--green)!important}

@media(max-width:1024px){
  .kanban{grid-template-columns:1fr}
  .grid-2,.grid-2-1{grid-template-columns:1fr}
  .menu-layout{grid-template-columns:1fr}
}

@media(max-width:768px){
  .sidebar{transform:translateX(-100%);box-shadow:none}
  .sidebar.open{transform:translateX(0);box-shadow:8px 0 32px rgba(0,0,0,.35)}
  .sidebar-backdrop{display:none;position:fixed;inset:0;background:rgba(0,0,0,.45);z-index:99}
  .sidebar-backdrop.show{display:block}
  .app-main{margin-left:0;width:100%;max-width:100vw}
  .sidebar-toggle{display:block;flex-shrink:0;padding:.35rem;min-width:40px;min-height:40px}
  .topbar{padding:0 .75rem;gap:.5rem;height:auto;min-height:var(--topbar-h)}
  .topbar__title{font-size:1rem;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .topbar__actions{gap:.5rem;flex-shrink:0;max-width:58%;overflow:hidden}
  .topbar__user > div{display:none}
  .branch-select,.branch-label{max-width:110px;font-size:.75rem;padding:.3rem .5rem}
  .main-content{padding:.875rem;overflow-x:hidden}
  .stat-grid{grid-template-columns:repeat(2,1fr);gap:.75rem}
  .stat-card{padding:1rem}
  .stat-card__value{font-size:1.15rem}
  .page-header{margin-bottom:1rem}
  .page-title{font-size:1.25rem}
  .card{padding:1rem}
  .data-table th,.data-table td{padding:.625rem .5rem;font-size:.8125rem}
  .td-actions{display:flex;flex-wrap:wrap;gap:.35rem}
  .drawer{width:100vw;max-width:100vw}
  .login-card{padding:1.75rem 1.25rem}
  .login-brand{font-size:2rem}
}

@media(max-width:480px){
  .stat-grid{grid-template-columns:1fr}
  .page-header{flex-direction:column}
  .topbar__actions .btn--sm{padding:.35rem .55rem;font-size:.75rem}
}
