/*
==============================================================================
  SZABUL Accounting Information System
  szabul.css  -  professional theme
  Colour palette anchored on the deep forest-green of the SZABUL university crest.
==============================================================================
*/

/* -----------------------------  RESET / BASE  ---------------------------- */
:root{
    /* core greens (taken from the logo) */
    --sz-green-900:#0d3a23;
    --sz-green-800:#13502f;
    --sz-green-700:#1a6b3e;   /* primary */
    --sz-green-600:#247a4a;
    --sz-green-500:#2f9359;
    --sz-green-100:#e6f1ec;
    --sz-green-050:#f3f8f5;

    /* accents */
    --sz-gold      :#c9a24c;
    --sz-gold-dark :#a98532;

    /* neutrals */
    --sz-ink-900 :#0f1a14;
    --sz-ink-700 :#2c3a32;
    --sz-ink-500 :#5b6960;
    --sz-ink-300 :#9aa39c;
    --sz-line    :#dde3df;
    --sz-bg      :#f6f5f0;   /* warm cream */
    --sz-paper   :#ffffff;

    /* status */
    --sz-ok      :#1f7a3a;
    --sz-warn    :#b4720b;
    --sz-err     :#a32424;
    --sz-info    :#1d5d8a;

    /* shape */
    --sz-radius  :8px;
    --sz-radius-lg:14px;
    --sz-shadow  :0 1px 2px rgba(13,58,35,.06), 0 4px 12px rgba(13,58,35,.08);
    --sz-shadow-lg:0 8px 30px rgba(13,58,35,.15);
}

*,*::before,*::after{box-sizing:border-box}

html,body{
    margin:0;padding:0;
    font-family:'Manrope','Segoe UI',system-ui,-apple-system,sans-serif;
    font-size:14px;line-height:1.5;
    color:var(--sz-ink-900);
    background:var(--sz-bg);
    -webkit-font-smoothing:antialiased;
}

h1,h2,h3,h4,h5{
    font-family:'DM Serif Display','Georgia',serif;
    font-weight:400;letter-spacing:-.01em;color:var(--sz-green-900);
    margin:0 0 .4em
}
h1{font-size:1.9rem}
h2{font-size:1.5rem}
h3{font-size:1.2rem}
h4{font-size:1.05rem}

a{color:var(--sz-green-700);text-decoration:none}
a:hover{color:var(--sz-green-900);text-decoration:underline}

hr{border:0;border-top:1px solid var(--sz-line);margin:1.25rem 0}

/* -----------------------------  TOP BAR  --------------------------------- */
.sz-topbar{
    height:64px;
    background:linear-gradient(95deg,var(--sz-green-900) 0%,var(--sz-green-700) 100%);
    color:#fff;display:flex;align-items:center;
    padding:0 24px;
    border-bottom:2px solid var(--sz-gold);
    box-shadow:var(--sz-shadow);
    position:sticky;top:0;z-index:50;
}
.sz-topbar .brand{display:flex;align-items:center;gap:12px}
.sz-topbar .brand img{height:42px;width:42px;object-fit:contain;background:#fff;border-radius:50%;padding:3px}
.sz-topbar .brand .name{font-family:'DM Serif Display',serif;font-size:1.15rem;line-height:1;display:block}
.sz-topbar .brand .sub {font-size:.72rem;letter-spacing:.18em;text-transform:uppercase;opacity:.85;display:block;margin-top:3px}

.sz-topbar .spacer{flex:1}

.sz-topbar .fy-pill{
    background:rgba(255,255,255,.12);
    border:1px solid rgba(255,255,255,.18);
    padding:6px 14px;border-radius:99px;font-size:.78rem;letter-spacing:.04em;
    margin-right:14px;
}
.sz-topbar .fy-pill b{color:var(--sz-gold);font-weight:600;margin-left:6px}

.sz-topbar .user-chip{
    display:flex;align-items:center;gap:10px;
    padding:6px 12px;border-radius:99px;
    background:rgba(255,255,255,.10);
    border:1px solid rgba(255,255,255,.18);
}
.sz-topbar .user-chip .avatar{
    width:28px;height:28px;border-radius:50%;
    background:var(--sz-gold);color:var(--sz-green-900);
    display:grid;place-items:center;font-weight:700;font-size:.8rem;
}
.sz-topbar .user-chip a{color:#fff;opacity:.85;font-size:.75rem;margin-left:6px}
.sz-topbar .user-chip a:hover{opacity:1;text-decoration:none}

/* -----------------------------  LAYOUT  ---------------------------------- */
.sz-shell{display:flex;min-height:calc(100vh - 64px)}
.sz-sidebar{
    width:248px;flex:none;
    background:var(--sz-paper);
    border-right:1px solid var(--sz-line);
    padding:18px 10px 30px;
    position:sticky;top:64px;height:calc(100vh - 64px);overflow-y:auto;
}
.sz-main{flex:1;padding:28px 32px 60px;min-width:0}

.sz-nav-group{margin-bottom:18px}
.sz-nav-group .label{
    font-size:.68rem;letter-spacing:.16em;text-transform:uppercase;
    color:var(--sz-ink-500);font-weight:600;
    padding:4px 12px 6px;
}
.sz-nav a{
    display:flex;align-items:center;gap:10px;
    padding:8px 12px;border-radius:6px;
    color:var(--sz-ink-700);font-size:.88rem;font-weight:500;
    text-decoration:none;
}
.sz-nav a:hover{background:var(--sz-green-050);color:var(--sz-green-900)}
.sz-nav a.active{
    background:var(--sz-green-700);color:#fff;
    box-shadow:inset 3px 0 0 var(--sz-gold);
}
.sz-nav a .ico{width:18px;height:18px;flex:none;opacity:.85}

/* -----------------------------  PAGE HEADER  ----------------------------- */
.sz-page-head{
    display:flex;align-items:flex-end;justify-content:space-between;
    margin-bottom:24px;padding-bottom:14px;
    border-bottom:1px solid var(--sz-line);
    gap:24px;flex-wrap:wrap;
}
.sz-page-head h1{margin:0;font-size:1.65rem}
.sz-page-head h1::after{
    content:"";display:block;width:46px;height:3px;margin-top:8px;
    background:var(--sz-gold);border-radius:2px;
}
.sz-page-head .crumbs{font-size:.78rem;color:var(--sz-ink-500);letter-spacing:.02em;margin-bottom:4px}
.sz-page-head .crumbs span{margin:0 6px}
.sz-page-head .actions{display:flex;gap:8px;flex-wrap:wrap}

/* search / filter toolbar */
.sz-toolbar{
    display:flex;align-items:center;gap:10px;flex-wrap:wrap;
    padding:12px 20px;border-bottom:1px solid var(--sz-line);
    background:var(--sz-green-050);
}
.sz-toolbar .sz-search{flex:1;min-width:200px;max-width:380px}
.sz-toolbar .sz-search input{
    width:100%;padding-left:36px;
    background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%239aa39c' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><circle cx='11' cy='11' r='7'/><line x1='21' y1='21' x2='16.65' y2='16.65'/></svg>");
    background-repeat:no-repeat;background-position:12px center;
}
.sz-toolbar .count{font-size:.78rem;color:var(--sz-ink-500);margin-left:auto}

/* -----------------------------  CARDS / PANELS  -------------------------- */
.sz-card{
    background:var(--sz-paper);
    border:1px solid var(--sz-line);
    border-radius:var(--sz-radius-lg);
    box-shadow:var(--sz-shadow);
    margin-bottom:22px;
    overflow:hidden;
}
.sz-card .head{
    padding:14px 20px;
    border-bottom:1px solid var(--sz-line);
    background:var(--sz-paper);
    display:flex;justify-content:space-between;align-items:center;gap:10px;
}
.sz-card .head h3{margin:0;font-size:1.05rem;color:var(--sz-green-900);position:relative;padding-left:12px}
.sz-card .head h3::before{
    content:"";position:absolute;left:0;top:50%;transform:translateY(-50%);
    width:3px;height:1em;background:var(--sz-gold);border-radius:2px;
}
.sz-card .head .sub{font-size:.78rem;color:var(--sz-ink-500)}
.sz-card .body{padding:20px}
.sz-card .foot{
    padding:12px 20px;background:var(--sz-green-050);
    border-top:1px solid var(--sz-line);
    display:flex;gap:8px;justify-content:flex-end;
}

/* metric tiles */
.sz-tiles{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:18px;margin-bottom:24px}
.sz-tile{
    background:var(--sz-paper);border:1px solid var(--sz-line);
    border-radius:var(--sz-radius-lg);padding:18px 20px;
    position:relative;overflow:hidden;
    box-shadow:var(--sz-shadow);
}
.sz-tile::before{
    content:"";position:absolute;left:0;top:0;bottom:0;width:4px;
    background:var(--sz-green-700);
}
.sz-tile.tile-gold::before{background:var(--sz-gold)}
.sz-tile.tile-info::before{background:var(--sz-info)}
.sz-tile.tile-warn::before{background:var(--sz-warn)}
.sz-tile .label{
    font-size:.72rem;letter-spacing:.14em;text-transform:uppercase;
    color:var(--sz-ink-500);font-weight:600;margin-bottom:6px;
}
.sz-tile .value{
    font-family:'DM Serif Display',serif;font-size:1.75rem;color:var(--sz-green-900);line-height:1.1;
}
.sz-tile .delta{font-size:.78rem;margin-top:4px;color:var(--sz-ink-500)}

/* -----------------------------  FORMS  ----------------------------------- */
.sz-form{display:grid;grid-template-columns:repeat(12,1fr);gap:14px 16px}
.sz-fld{display:flex;flex-direction:column}
.sz-form>.sz-fld{grid-column:span 6}
.sz-form .sz-fld.col-3,.sz-form .sz-fld.c-3{grid-column:span 3}
.sz-form .sz-fld.col-4,.sz-form .sz-fld.c-4{grid-column:span 4}
.sz-form .sz-fld.col-6,.sz-form .sz-fld.c-6{grid-column:span 6}
.sz-form .sz-fld.col-8,.sz-form .sz-fld.c-8{grid-column:span 8}
.sz-form .sz-fld.col-12,.sz-form .sz-fld.c-12{grid-column:span 12}

/* compact 4-column header grid - kept in sync with Site.Master so headers
   align the same whether or not this external stylesheet has loaded. */
.meta-grid{display:grid;grid-template-columns:repeat(4,minmax(150px,1fr));gap:14px 16px;align-items:start}
.meta-grid .sz-fld{display:flex;flex-direction:column;grid-column:auto;min-width:0}
.meta-grid .sz-fld.col-1,.meta-grid .sz-fld.col-3{grid-column:span 1}
.meta-grid .sz-fld.col-2,.meta-grid .sz-fld.col-6{grid-column:span 2}
.meta-grid .sz-fld.col-4,.meta-grid .sz-fld.col-8,.meta-grid .sz-fld.col-12{grid-column:1 / -1}
@media(max-width:980px){.meta-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.meta-grid .sz-fld.col-2,.meta-grid .sz-fld.col-6{grid-column:1 / -1}}
@media(max-width:560px){.meta-grid{grid-template-columns:1fr}.meta-grid .sz-fld[class*="col-"]{grid-column:auto}}

.sz-fld label{
    font-size:.74rem;letter-spacing:.08em;text-transform:uppercase;
    color:var(--sz-ink-700);font-weight:600;margin-bottom:5px;
}
.sz-fld label .req{color:var(--sz-err);margin-left:3px}

.sz-input,select.sz-input,textarea.sz-input{
    width:100%;
    padding:9px 12px;
    border:1px solid var(--sz-line);
    border-radius:var(--sz-radius);
    background:var(--sz-paper);
    font-size:.9rem;color:var(--sz-ink-900);
    font-family:inherit;
    transition:border-color .15s,box-shadow .15s;
}
select.sz-input{
    -webkit-appearance:none;-moz-appearance:none;appearance:none;
    padding-right:34px;
    background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'><path d='M1 1l5 5 5-5' fill='none' stroke='%23247a4a' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/></svg>");
    background-repeat:no-repeat;
    background-position:right 12px center;
    cursor:pointer;
}
.sz-input:focus,select.sz-input:focus,textarea.sz-input:focus{
    outline:none;
    border-color:var(--sz-green-600);
    box-shadow:0 0 0 3px rgba(36,122,74,.15);
}
.sz-input[readonly],.sz-input:disabled{background:#f4f4ef;color:var(--sz-ink-500)}
textarea.sz-input{min-height:80px;resize:vertical}

.sz-help{font-size:.74rem;color:var(--sz-ink-500);margin-top:4px}
.sz-err {font-size:.74rem;color:var(--sz-err);margin-top:4px}

/* -----------------------------  BUTTONS  --------------------------------- */
.sz-btn{
    display:inline-flex;align-items:center;justify-content:center;gap:6px;
    padding:8px 16px;font-size:.85rem;font-weight:600;line-height:1.2;
    white-space:nowrap;
    border-radius:var(--sz-radius);
    border:1px solid transparent;cursor:pointer;
    background:var(--sz-green-700);color:#fff;
    -webkit-appearance:none;-moz-appearance:none;appearance:none;
    transition:background .15s,transform .05s,box-shadow .15s;
    text-decoration:none;font-family:inherit;
}
.sz-btn:hover{background:var(--sz-green-800);color:#fff;text-decoration:none;box-shadow:0 4px 12px rgba(13,58,35,.18)}
.sz-btn:active{transform:translateY(1px)}
.sz-btn:disabled{opacity:.5;cursor:not-allowed}

.sz-btn.ghost{background:transparent;color:var(--sz-green-800);border-color:var(--sz-green-700)}
.sz-btn.ghost:hover{background:var(--sz-green-050);color:var(--sz-green-900)}

.sz-btn.gold{background:var(--sz-gold);color:var(--sz-green-900)}
.sz-btn.gold:hover{background:var(--sz-gold-dark);color:#fff}

.sz-btn.danger{background:var(--sz-err)}
.sz-btn.danger:hover{background:#7d1a1a}

.sz-btn.sm{padding:5px 10px;font-size:.78rem}
.sz-btn.icon-only{padding:6px 8px}

/* ---------------  GLOBAL CONTROL DEFAULTS  --------------------------------
   Theme the raw HTML elements too, so ASP.NET controls that don't carry an
   explicit CssClass (sz-input / sz-btn) still look correct. Class selectors
   above have higher specificity, so .sz-btn variants keep overriding these. */
input[type=text],input[type=password],input[type=email],input[type=number],
input[type=search],input[type=tel],input[type=url],input[type=date],
input[type=datetime-local],input[type=month],input[type=time],
select,textarea{
    padding:8px 11px;
    border:1px solid var(--sz-line);
    border-radius:var(--sz-radius);
    background:var(--sz-paper);
    font-size:.9rem;color:var(--sz-ink-900);
    font-family:inherit;
    transition:border-color .15s,box-shadow .15s;
    max-width:100%;
}
textarea{min-height:80px;resize:vertical}
select{
    -webkit-appearance:none;-moz-appearance:none;appearance:none;
    padding-right:32px;cursor:pointer;
    background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'><path d='M1 1l5 5 5-5' fill='none' stroke='%23247a4a' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/></svg>");
    background-repeat:no-repeat;background-position:right 11px center;
}
input[type=text]:focus,input[type=password]:focus,input[type=email]:focus,
input[type=number]:focus,input[type=search]:focus,input[type=tel]:focus,
input[type=url]:focus,input[type=date]:focus,select:focus,textarea:focus{
    outline:none;border-color:var(--sz-green-600);
    box-shadow:0 0 0 3px rgba(36,122,74,.15);
}
input[readonly],input:disabled,select:disabled,textarea[readonly]{
    background:#f4f4ef;color:var(--sz-ink-500);
}

button,input[type=submit],input[type=button],input[type=reset]{
    display:inline-flex;align-items:center;justify-content:center;gap:6px;
    padding:8px 16px;font-size:.85rem;font-weight:600;line-height:1.2;
    border-radius:var(--sz-radius);
    border:1px solid transparent;cursor:pointer;
    background:var(--sz-green-700);color:#fff;
    -webkit-appearance:none;-moz-appearance:none;appearance:none;
    transition:background .15s,box-shadow .15s;
    font-family:inherit;
}
button:hover,input[type=submit]:hover,input[type=button]:hover,input[type=reset]:hover{
    background:var(--sz-green-800);color:#fff;box-shadow:0 4px 12px rgba(13,58,35,.18);
}
button:disabled,input[type=submit]:disabled{opacity:.5;cursor:not-allowed}

/* checkboxes / radios keep native look, just accent colour */
input[type=checkbox],input[type=radio]{accent-color:var(--sz-green-700);width:auto}


/* -----------------------------  TABLES  ---------------------------------- */
.sz-table{width:100%;border-collapse:separate;border-spacing:0;background:var(--sz-paper);font-size:.86rem}
.sz-table thead th{
    background:var(--sz-green-800);color:#fff;
    padding:9px 12px;font-weight:600;
    font-size:.74rem;letter-spacing:.06em;text-transform:uppercase;
    text-align:left;border-bottom:2px solid var(--sz-green-900);
    position:sticky;top:0;
}
.sz-table thead th.num{text-align:right}
.sz-table tbody td{
    padding:9px 12px;border-bottom:1px solid var(--sz-line);
    color:var(--sz-ink-900);vertical-align:middle;
}
.sz-table tbody td.num{text-align:right;font-variant-numeric:tabular-nums}
.sz-table tbody tr:nth-child(even){background:var(--sz-green-050)}
.sz-table tbody tr:hover{background:var(--sz-green-100)}
.sz-table tfoot td{
    padding:10px 12px;background:var(--sz-green-100);
    font-weight:700;color:var(--sz-green-900);
    border-top:2px solid var(--sz-green-700);
}
.sz-table tfoot td.num{text-align:right;font-variant-numeric:tabular-nums}

.table-wrap{overflow:auto;border:1px solid var(--sz-line);border-radius:var(--sz-radius-lg);max-height:70vh}

/* status pills */
.sz-pill{
    display:inline-block;padding:2px 10px;border-radius:99px;
    font-size:.7rem;letter-spacing:.06em;text-transform:uppercase;font-weight:700;
}
.sz-pill.draft   {background:#eef0ed;color:#5b6960}
.sz-pill.pending {background:#fff4dc;color:#7a4f00}
.sz-pill.posted  {background:#dff0e3;color:#125a2b}
.sz-pill.reversed{background:#fadcdc;color:#7d1a1a}
.sz-pill.cancelled{background:#e6e6e6;color:#5b6960}

/* messages */
.sz-msg{padding:10px 14px;border-radius:var(--sz-radius);margin-bottom:14px;font-size:.85rem}
.sz-msg.ok   {background:#dff0e3;color:#125a2b;border-left:4px solid var(--sz-ok)}
.sz-msg.warn {background:#fff4dc;color:#7a4f00;border-left:4px solid var(--sz-warn)}
.sz-msg.err  {background:#fadcdc;color:#7d1a1a;border-left:4px solid var(--sz-err)}
.sz-msg.info {background:#deecf7;color:#16456a;border-left:4px solid var(--sz-info)}

/* totals strip (voucher) */
.totals-strip{
    display:flex;gap:24px;justify-content:flex-end;
    padding:14px 20px;
    background:var(--sz-green-050);border-top:1px solid var(--sz-line);
}
.totals-strip .blk{text-align:right}
.totals-strip .blk .lab{font-size:.7rem;letter-spacing:.12em;text-transform:uppercase;color:var(--sz-ink-500);font-weight:600}
.totals-strip .blk .val{font-family:'DM Serif Display',serif;font-size:1.3rem;color:var(--sz-green-900);font-variant-numeric:tabular-nums}
.totals-strip .blk.diff .val.imbalanced{color:var(--sz-err)}
.totals-strip .blk.diff .val.balanced  {color:var(--sz-ok)}

/* -----------------------------  LOGIN PAGE  ------------------------------ */
body.sz-login{
    margin:0;min-height:100vh;
    background:
        radial-gradient(circle at 20% 20%,rgba(26,107,62,.15) 0,transparent 50%),
        radial-gradient(circle at 80% 80%,rgba(201,162,76,.1) 0,transparent 50%),
        linear-gradient(135deg,#0d3a23 0%,#13502f 100%);
    display:flex;align-items:center;justify-content:center;padding:24px;
    color:#fff;font-family:'Manrope',sans-serif;
}
.sz-login-card{
    width:100%;max-width:980px;
    display:grid;grid-template-columns:1fr 1.1fr;
    background:var(--sz-paper);color:var(--sz-ink-900);
    border-radius:18px;overflow:hidden;
    box-shadow:0 24px 60px rgba(0,0,0,.35),0 2px 0 rgba(255,255,255,.05) inset;
}
.sz-login-side{
    background:
        radial-gradient(circle at 50% 10%,rgba(255,255,255,.18) 0,transparent 60%),
        linear-gradient(155deg,#13502f 0%,#0d3a23 100%);
    color:#fff;padding:50px 40px;display:flex;flex-direction:column;justify-content:space-between;
    position:relative;overflow:hidden;
}
.sz-login-side::after{
    content:"";position:absolute;right:-80px;bottom:-80px;width:280px;height:280px;
    border:1px solid rgba(201,162,76,.25);border-radius:50%;
}
.sz-login-side::before{
    content:"";position:absolute;right:-40px;bottom:-40px;width:200px;height:200px;
    border:1px solid rgba(201,162,76,.15);border-radius:50%;
}
.sz-login-side .logo-wrap{display:flex;align-items:center;gap:14px}
.sz-login-side .logo-wrap img{width:60px;height:60px;background:#fff;border-radius:50%;padding:4px}
.sz-login-side .logo-wrap .t1{font-family:'DM Serif Display',serif;font-size:1.3rem;line-height:1.1;display:block}
.sz-login-side .logo-wrap .t2{font-size:.72rem;letter-spacing:.22em;text-transform:uppercase;opacity:.8;display:block;margin-top:4px}
.sz-login-side .pitch{position:relative;z-index:1}
.sz-login-side .pitch h2{
    font-family:'DM Serif Display',serif;font-size:2.3rem;color:#fff;line-height:1.1;margin:0 0 12px
}
.sz-login-side .pitch h2 em{color:var(--sz-gold);font-style:normal}
.sz-login-side .pitch p{opacity:.85;font-size:.92rem;max-width:340px;line-height:1.55}
.sz-login-side .ftr{font-size:.7rem;opacity:.55;letter-spacing:.08em;position:relative;z-index:1}

.sz-login-form{padding:55px 50px;display:flex;flex-direction:column;justify-content:center}
.sz-login-form h1{font-family:'DM Serif Display',serif;font-size:1.8rem;color:var(--sz-green-900);margin:0 0 4px}
.sz-login-form .sub{color:var(--sz-ink-500);font-size:.88rem;margin-bottom:30px}
.sz-login-form .sz-fld{grid-column:span 12;margin-bottom:14px}
.sz-login-form .row-line{display:flex;justify-content:space-between;align-items:center;font-size:.8rem;margin:6px 0 22px}
.sz-login-form .sz-btn{width:100%;justify-content:center;padding:11px;font-size:.95rem;letter-spacing:.04em}

@media (max-width:760px){
    .sz-login-card{grid-template-columns:1fr}
    .sz-login-side{padding:36px 30px}
    .sz-login-form{padding:36px 30px}
}

/* -----------------------------  MODAL  ----------------------------------- */
.modal-content{border-radius:var(--sz-radius-lg);border:0;box-shadow:var(--sz-shadow-lg)}
.modal-header{background:var(--sz-green-700);color:#fff;border-radius:var(--sz-radius-lg) var(--sz-radius-lg) 0 0}
.modal-header .btn-close{filter:invert(1)}

/* -----------------------------  RESPONSIVE  ------------------------------ */
@media (max-width:980px){
    .sz-sidebar{display:none}
    .sz-main{padding:18px}
}

/* -----------------------------  UTILITIES  ------------------------------- */
.text-right{text-align:right}
.text-center{text-align:center}
.muted{color:var(--sz-ink-500)}
.mb-2{margin-bottom:.5rem}
.mb-3{margin-bottom:1rem}
.mb-4{margin-bottom:1.5rem}
.mt-2{margin-top:.5rem}
.mt-3{margin-top:1rem}
.mt-4{margin-top:1.5rem}
.w-100{width:100%}
.d-flex{display:flex}
.gap-2{gap:.5rem}
.gap-3{gap:1rem}
.justify-end{justify-content:flex-end}
.align-center{align-items:center}
.nowrap{white-space:nowrap}
.mono{font-family:'JetBrains Mono','Consolas',monospace}

/* -----------------------------  PRINT  ----------------------------------- */
@media print{
    .sz-topbar,.sz-sidebar,.sz-page-head .actions,.sz-card .foot{display:none !important}
    body{background:#fff}
    .sz-main{padding:0}
    .sz-card{box-shadow:none;border:0}
    .sz-table thead th{background:#fff !important;color:#000 !important;border-bottom:2px solid #000}
}

/* ----------------  DEFENSIVE CONTROL SIZING (loaded last)  ----------------
   Guarantees form/line inputs fill their column and buttons never stretch,
   regardless of any earlier cascade conflict. */
.sz-fld .sz-input,
.sz-fld input[type=text],.sz-fld input[type=password],.sz-fld input[type=email],
.sz-fld input[type=number],.sz-fld input[type=date],.sz-fld input[type=search],
.sz-fld select,.sz-fld textarea,
.meta-grid .sz-fld input,.meta-grid .sz-fld select,.meta-grid .sz-fld textarea,
.lines td .sz-input,.lines td input[type=text],.lines td input[type=date],.lines td select,
.sz-table td .sz-input,.sz-table td input[type=text],.sz-table td select{
    width:100% !important;
    min-width:0;
    box-sizing:border-box;
}
/* date fields need a sensible floor so the value/calendar icon never clips */
.sz-fld input[type=date]{min-width:140px}

/* buttons size to their label - never stretch to fill a flex/grid track */
.sz-btn,button.sz-btn,input[type=submit].sz-btn,input[type=button].sz-btn{
    width:auto !important;flex:0 0 auto;
}

/* voucher footer action row (works whether or not it's inside .sz-card) */
.foot{
    display:flex;justify-content:flex-end;align-items:center;
    gap:8px;flex-wrap:wrap;padding:14px 0 2px;
}

