:root{--bg:#f2f0ec;--s:#fff;--s2:#f7f6f3;--s3:#eeecea;--bd:#e2dfd8;--bd2:#d0cdc6;--t:#1a1917;--t2:#6b6a66;--t3:#a8a6a1;--ac:#1d4ed8;--acb:#eff6ff;--red:#dc2626;--redb:#fef2f2;--amb:#fffbeb;--am:#b45309;--grb:#f0fdf4;--gr:#166534;--r:8px;--r2:6px}
*{box-sizing:border-box;margin:0;padding:0}
body{font-family:'Segoe UI',system-ui,sans-serif;background:var(--bg);color:var(--t);font-size:15px;min-height:100vh}
a{color:var(--ac);text-decoration:none}a:hover{text-decoration:underline}
code{font-family:monospace;background:var(--s3);padding:1px 5px;border-radius:3px;font-size:13px}

/* Login */
.login-body{display:flex;align-items:center;justify-content:center;min-height:100vh;background:var(--bg)}
.login-wrap{background:var(--s);border:1px solid var(--bd);border-radius:12px;padding:36px 40px;width:100%;max-width:400px}
.login-logo{text-align:center;margin-bottom:28px}
.login-icon{font-size:40px;margin-bottom:10px}
.login-logo h1{font-size:22px;font-weight:600;color:var(--t)}
.login-logo p{font-size:14px;color:var(--t3);margin-top:4px}
.login-form{display:flex;flex-direction:column;gap:16px}
.login-hint{text-align:center;font-size:13px;color:var(--t3);margin-top:16px}

/* Layout */
.app{display:flex;height:100vh;overflow:hidden}
.sidebar{width:220px;background:var(--s2);border-right:1px solid var(--bd);display:flex;flex-direction:column;flex-shrink:0}
.sidebar-header{padding:16px 14px 10px;border-bottom:1px solid var(--bd)}
.sidebar-header h2{font-size:14px;font-weight:600;color:var(--t)}
.sidebar-header p{font-size:11px;color:var(--t3);margin-top:2px}
.sidebar-user{padding:10px 14px;border-bottom:1px solid var(--bd);font-size:13px}
.sidebar-user .uname{font-weight:500;color:var(--t)}
.sidebar-user .urole{color:var(--t3);font-size:12px}
.sidebar-nav{flex:1;overflow-y:auto;padding:8px 0}
.sidebar-section{padding:8px 14px 3px;font-size:11px;font-weight:600;color:var(--t3);letter-spacing:.07em;text-transform:uppercase}
.sidebar-link{display:flex;align-items:center;gap:9px;padding:8px 14px;font-size:14px;color:var(--t2);cursor:pointer;border-left:2px solid transparent;text-decoration:none;transition:background .1s}
.sidebar-link:hover{background:var(--s3);color:var(--t);text-decoration:none}
.sidebar-link.active{background:var(--s);color:var(--t);font-weight:500;border-left-color:var(--ac)}
.sidebar-link .icon{font-size:16px;width:18px;text-align:center}
.sidebar-link .badge{margin-left:auto;padding:1px 6px;border-radius:4px;font-size:11px;font-weight:600;background:var(--redb);color:var(--red)}
.sidebar-footer{padding:10px 14px;border-top:1px solid var(--bd)}

.main{flex:1;display:flex;flex-direction:column;overflow:hidden}
.topbar{height:46px;background:var(--s);border-bottom:1px solid var(--bd);display:flex;align-items:center;padding:0 20px;gap:12px;flex-shrink:0}
.topbar h1{font-size:16px;font-weight:600;color:var(--t)}
.topbar .breadcrumb{font-size:13px;color:var(--t3)}
.topbar .spacer{flex:1}
.content{flex:1;overflow-y:auto;padding:20px}
.content::-webkit-scrollbar{width:6px}.content::-webkit-scrollbar-thumb{background:var(--bd);border-radius:4px}

/* Cards/Panels */
.card{background:var(--s);border:1px solid var(--bd);border-radius:var(--r);padding:20px;margin-bottom:16px}
.card-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px}
.card-header h3{font-size:16px;font-weight:600;color:var(--t)}
.card-sm{background:var(--s);border:1px solid var(--bd);border-radius:var(--r);padding:14px 16px}

/* Stats */
.stats-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:12px;margin-bottom:20px}
.stat-card{background:var(--s);border:1px solid var(--bd);border-radius:var(--r);padding:16px}
.stat-card .num{font-size:30px;font-weight:700;color:var(--t);line-height:1}
.stat-card .lbl{font-size:13px;color:var(--t3);margin-top:4px}
.stat-card.red .num{color:var(--red)}.stat-card.amber .num{color:var(--am)}.stat-card.green .num{color:var(--gr)}.stat-card.blue .num{color:var(--ac)}

/* Tables */
.table-wrap{overflow-x:auto}
table.data{width:100%;border-collapse:collapse}
table.data th{padding:8px 12px;text-align:left;font-size:13px;font-weight:500;color:var(--t3);border-bottom:1px solid var(--bd);background:var(--s2);white-space:nowrap}
table.data td{padding:8px 12px;font-size:14px;border-bottom:1px solid var(--bd);vertical-align:middle}
table.data tr:hover td{background:var(--s2)}
table.data tr:last-child td{border-bottom:none}
.td-actions{display:flex;gap:6px;justify-content:flex-end;white-space:nowrap}

/* Forms */
.form-group{display:flex;flex-direction:column;gap:5px}
.form-group label{font-size:13px;font-weight:500;color:var(--t2)}
.form-row{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.form-row3{display:grid;grid-template-columns:1fr 1fr 1fr;gap:14px}
input[type=text],input[type=password],input[type=date],input[type=number],input[type=email],select,textarea{
  width:100%;padding:7px 10px;border:1px solid var(--bd);border-radius:var(--r2);font-size:13px;color:var(--t);background:var(--s);outline:none;font-family:inherit;transition:border-color .15s}
input:focus,select:focus,textarea:focus{border-color:var(--ac)}
input[disabled],select[disabled],textarea[disabled]{background:var(--s2);color:var(--t3)}
textarea{resize:vertical;min-height:80px}
.form-check{display:flex;align-items:center;gap:8px;cursor:pointer;font-size:13px}
.form-check input{width:auto;cursor:pointer}

/* Buttons */
.btn{padding:6px 14px;border:1px solid var(--bd);border-radius:var(--r2);font-size:13px;cursor:pointer;background:var(--s);color:var(--t2);font-family:inherit;transition:background .1s;display:inline-flex;align-items:center;gap:5px;white-space:nowrap;text-decoration:none}
.btn:hover{background:var(--s2);color:var(--t);text-decoration:none}
.btn-primary{background:var(--ac);color:#fff;border-color:var(--ac)}.btn-primary:hover{background:#1e40af;color:#fff}
.btn-danger{background:var(--red);color:#fff;border-color:var(--red)}.btn-danger:hover{background:#b91c1c;color:#fff}
.btn-success{background:var(--gr);color:#fff;border-color:var(--gr)}.btn-success:hover{background:#14532d;color:#fff}
.btn-sm{padding:4px 10px;font-size:12px}
.btn-full{width:100%;justify-content:center;padding:10px}
.btn-icon{padding:5px 8px;font-size:14px}

/* Badges */
.badge{display:inline-block;padding:2px 8px;border-radius:4px;font-size:11px;font-weight:600}
.badge-nb{background:var(--amb);color:var(--am)}.badge-fe{background:var(--grb);color:var(--gr)}.badge-st{background:var(--s3);color:var(--t3)}
.badge-admin{background:#f3e8ff;color:#7c3aed}.badge-planer{background:var(--acb);color:var(--ac)}.badge-techniker{background:var(--s3);color:var(--t2)}
.badge-ov{background:var(--redb);color:var(--red)}.badge-a{background:var(--grb);color:var(--gr)}.badge-b{background:var(--amb);color:var(--am)}

/* Alerts */
.alert{padding:10px 14px;border-radius:var(--r2);font-size:13px;margin-bottom:12px}
.alert-err{background:var(--redb);color:var(--red);border:1px solid #fca5a5}
.alert-ok{background:var(--grb);color:var(--gr);border:1px solid #86efac}
.alert-info{background:var(--acb);color:var(--ac);border:1px solid #93c5fd}

/* Modal */
.modal-overlay{position:fixed;inset:0;background:rgba(0,0,0,.45);z-index:1000;display:flex;align-items:center;justify-content:center;padding:20px}
.modal{background:var(--s);border-radius:var(--r);width:100%;max-width:560px;max-height:90vh;overflow-y:auto;box-shadow:0 20px 60px rgba(0,0,0,.3)}
.modal-lg{max-width:760px}
.modal-header{padding:16px 20px;border-bottom:1px solid var(--bd);display:flex;align-items:center;justify-content:space-between;position:sticky;top:0;background:var(--s);z-index:1}
.modal-header h3{font-size:15px;font-weight:600}
.modal-body{padding:20px}
.modal-footer{padding:14px 20px;border-top:1px solid var(--bd);display:flex;justify-content:flex-end;gap:8px;background:var(--s2)}

/* MN Cards (user view) */
.mn-list{display:flex;flex-direction:column;gap:10px}
.mn-card{background:var(--s);border:1px solid var(--bd);border-radius:var(--r);padding:14px 16px;transition:border-color .1s}
.mn-card:hover{border-color:var(--bd2)}
.mn-card.overdue{border-left:4px solid var(--red)}
.mn-card.done{opacity:.6}
.mn-card-top{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:8px}
.mn-card-title{font-size:14px;font-weight:500;color:var(--t)}
.mn-card-meta{display:flex;flex-wrap:wrap;gap:8px;font-size:12px;color:var(--t3);margin-bottom:10px;align-items:center}
.mn-card-meta .sep{color:var(--bd2)}
.mn-card-po{font-size:12px;color:var(--t2);font-weight:500}
.mn-card-actions{display:flex;gap:8px;align-items:center}

/* Tabs */
.tabs{display:flex;border-bottom:1px solid var(--bd);margin-bottom:20px;gap:0}
.tab-link{padding:9px 16px;font-size:13px;color:var(--t3);cursor:pointer;border-bottom:2px solid transparent;background:none;border-top:none;border-left:none;border-right:none;font-family:inherit;transition:color .1s}
.tab-link:hover{color:var(--t2)}.tab-link.active{color:var(--ac);border-bottom-color:var(--ac);font-weight:500}
.tab-panel{display:none}.tab-panel.active{display:block}

/* Misc */
.section-title{font-size:13px;font-weight:600;color:var(--t2);text-transform:uppercase;letter-spacing:.05em;margin-bottom:12px;padding-bottom:8px;border-bottom:1px solid var(--bd)}
.text-muted{color:var(--t3)}.text-sm{font-size:13px}.text-red{color:var(--red)}.text-green{color:var(--gr)}
.flex{display:flex}.flex-end{justify-content:flex-end}.items-center{align-items:center}.gap-8{gap:8px}.gap-12{gap:12px}
.mt-8{margin-top:8px}.mt-12{margin-top:12px}.mt-16{margin-top:16px}.mb-12{margin-bottom:12px}.mb-16{margin-bottom:16px}
.empty-state{text-align:center;padding:48px 20px;color:var(--t3)}.empty-state .icon{font-size:40px;margin-bottom:12px}.empty-state p{font-size:14px}
.dot-ok{width:8px;height:8px;border-radius:50%;background:#22c55e;display:inline-block}.dot-off{background:#e5e7eb}
.search-wrap{position:relative}.search-wrap input{padding-left:32px}.search-icon{position:absolute;left:10px;top:50%;transform:translateY(-50%);color:var(--t3);font-size:14px;pointer-events:none}
hr.light{border:none;border-top:1px solid var(--bd);margin:16px 0}
.tooltip{position:relative}.tooltip:hover::after{content:attr(data-tip);position:absolute;bottom:calc(100% + 4px);left:50%;transform:translateX(-50%);background:var(--t);color:#fff;font-size:11px;padding:3px 8px;border-radius:4px;white-space:nowrap;z-index:100}

/* MN Status v4 */
.badge-naT{background:#fee2e2;color:#991b1b;border:1px solid #fca5a5}
.badge-baT{background:#fef3c7;color:#92400e;border:1px solid #fde68a}
.badge-biT{background:#dbeafe;color:#1e40af;border:1px solid #93c5fd}
.badge-F{background:#dcfce7;color:#166534;border:1px solid #86efac}
.badge-nb{background:#f1f0ec;color:#6b6a66;border:1px solid #d4d0c8}
/* Status dot indicator */
.st-dot{display:inline-block;width:8px;height:8px;border-radius:50%;flex-shrink:0}
.st-nb{background:#9ca3af}.st-naT{background:#ef4444}.st-baT{background:#f59e0b}.st-biT{background:#3b82f6}.st-F{background:#22c55e}

/* Danger soft button (for inline delete) */
.btn-danger-soft{color:var(--red);border-color:transparent;background:transparent}
.btn-danger-soft:hover{background:var(--redb);border-color:#fca5a5}
