:root{--bg: #0f1115;--card: #181b22;--card-2: #1f232c;--border: #2a2f3a;--text: #e7e9ef;--muted: #8b93a7;--accent: #3b82f6;--accent-2: #60a5fa;--green: #22c55e;--yellow: #eab308;--red: #ef4444;--radius: 10px}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:var(--bg);color:var(--text);font-family:ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;-webkit-font-smoothing:antialiased}a{color:var(--accent-2);text-decoration:none}a:hover{text-decoration:underline}button{background:var(--accent);color:#fff;border:none;border-radius:var(--radius);padding:8px 14px;font-size:14px;cursor:pointer;font-weight:500}button:hover{filter:brightness(1.08)}button:disabled{opacity:.5;cursor:not-allowed}button.ghost{background:transparent;color:var(--text);border:1px solid var(--border)}button.danger{background:var(--red)}button.success{background:var(--green)}button.warn{background:var(--yellow);color:#111}input,select,textarea{background:var(--card-2);color:var(--text);border:1px solid var(--border);border-radius:var(--radius);padding:8px 12px;font-size:14px;width:100%}input:focus,select:focus,textarea:focus{outline:2px solid var(--accent);border-color:var(--accent)}label{display:block;font-size:13px;color:var(--muted);margin-bottom:4px}.card{background:var(--card);border:1px solid var(--border);border-radius:var(--radius);padding:16px}.container{max-width:1200px;margin:0 auto;padding:24px}.nav{display:flex;gap:16px;align-items:center;padding:14px 24px;background:var(--card);border-bottom:1px solid var(--border)}.nav a{color:var(--text);font-weight:500;padding:6px 10px;border-radius:6px}.nav a.active{background:var(--card-2)}.nav .spacer{flex:1}.nav .user{color:var(--muted);font-size:13px}.badge{display:inline-block;padding:2px 8px;border-radius:999px;font-size:12px;font-weight:600}.badge.free{background:#22c55e26;color:var(--green)}.badge.busy{background:#eab30826;color:var(--yellow)}.badge.offline{background:#ef444426;color:var(--red)}.badge.pending{background:#3b82f626;color:var(--accent-2)}.badge.printing{background:#eab30826;color:var(--yellow)}.badge.done{background:#22c55e26;color:var(--green)}.badge.cancelled{background:#8b93a72e;color:var(--muted)}.badge.rejected{background:#ef44442e;color:var(--red)}.grid{display:grid;gap:16px}.grid.printers{grid-template-columns:repeat(auto-fill,minmax(320px,1fr))}.grid.two{grid-template-columns:1fr 1fr}.filaments-row{display:flex;flex-wrap:wrap;gap:6px;margin-top:12px}.filament-chip{padding:6px 10px;border-radius:6px;font-size:12px;font-weight:700;letter-spacing:.5px;min-width:50px;text-align:center}table{width:100%;border-collapse:collapse}th,td{padding:10px 12px;text-align:left;border-bottom:1px solid var(--border);font-size:14px}th{color:var(--muted);font-weight:500;font-size:12px;text-transform:uppercase;letter-spacing:.5px}.toast-stack{position:fixed;right:16px;bottom:16px;display:flex;flex-direction:column;gap:8px;z-index:1000}.toast{background:var(--card);border:1px solid var(--border);border-left:4px solid var(--accent);border-radius:var(--radius);padding:12px 16px;min-width:260px;max-width:360px;box-shadow:0 8px 24px #0000004d}.toast.success{border-left-color:var(--green)}.toast.error{border-left-color:var(--red)}.toast.warn{border-left-color:var(--yellow)}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0009;display:flex;align-items:center;justify-content:center;z-index:900}.modal{background:var(--card);border:1px solid var(--border);border-radius:var(--radius);padding:24px;min-width:360px;max-width:520px}.modal h2{margin:0 0 12px;font-size:18px}.modal .actions{display:flex;justify-content:flex-end;gap:8px;margin-top:20px}.form-row{display:flex;gap:12px}.form-row>*{flex:1}.space-y>*+*{margin-top:12px}.muted{color:var(--muted)}.small{font-size:12px}.right{text-align:right}.row{display:flex;gap:8px;align-items:center}.hstack{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.vstack{display:flex;flex-direction:column;gap:8px}.banner{background:var(--card-2);border:1px solid var(--border);border-left:4px solid var(--accent);border-radius:var(--radius);padding:12px 16px;margin-bottom:12px}.banner.success{border-left-color:var(--green)}.banner.error{border-left-color:var(--red)}.thumb{width:80px;height:80px;background:var(--card-2);border-radius:6px;border:1px solid var(--border);object-fit:cover}
