:root{--violet: #4B2E83;--violet-dark: #3a2367;--violet-tint: #f2eff8;--orange: #E8630A;--orange-dark: #c85207;--ink: #1f1f24;--ink-muted: #6b6b76;--line: #e3e3ea;--bg: #f6f6f9;--surface: #ffffff;--radius: 10px;--shadow: 0 1px 2px rgba(31,31,36,.06), 0 4px 14px rgba(31,31,36,.05);--shadow-lift: 0 4px 10px rgba(75,46,131,.12), 0 12px 28px rgba(75,46,131,.1)}*{box-sizing:border-box}body{margin:0;font-family:Montserrat,-apple-system,BlinkMacSystemFont,Segoe UI,Arial,sans-serif;color:var(--ink);background:var(--bg);font-size:14px;line-height:1.5}.header{background:var(--violet);color:#fff;height:60px;display:flex;align-items:center;gap:16px;padding:0 24px}.header .brand{font-weight:600;font-size:17px;letter-spacing:.2px}.header .brand span{font-weight:400;opacity:.75}.header .spacer{margin-left:auto}.header .user{font-size:13px;color:#fffc;text-align:right;line-height:1.3}.header .user strong{display:block;color:#fff;font-weight:500}.btn{font-family:inherit;font-size:14px;font-weight:600;border-radius:6px;border:1px solid transparent;padding:8px 15px;cursor:pointer;display:inline-flex;align-items:center;gap:6px}.btn-primary{background:var(--orange);color:#fff}.btn-primary:hover{background:var(--orange-dark)}.btn-outline-light{background:transparent;color:#fff;border-color:#fff5}.btn-outline-light:hover{background:#ffffff1f}.lang{display:flex;gap:2px;background:#ffffff1f;border-radius:6px;padding:3px}.lang button{font-family:inherit;background:transparent;border:none;color:#fffc;font-weight:600;font-size:12px;padding:5px 9px;border-radius:4px;cursor:pointer;letter-spacing:.3px}.lang button:hover{color:#fff;background:#ffffff1f}.lang button.active{background:#fff;color:var(--violet)}.container{max-width:1100px;margin:0 auto;padding:36px 24px 56px}.hero{margin-bottom:28px}.hero h1{margin:0 0 6px;font-size:26px;font-weight:600;color:var(--violet)}.hero p{margin:0;color:var(--ink-muted)}.section-label{font-size:12px;font-weight:600;text-transform:uppercase;letter-spacing:.6px;color:var(--ink-muted);margin-bottom:12px}.tiles{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:18px}.tile{background:var(--surface);border:1px solid var(--line);border-top:3px solid var(--violet);border-radius:var(--radius);box-shadow:var(--shadow);padding:22px;display:flex;flex-direction:column;gap:10px;text-decoration:none;color:inherit;transition:transform .15s ease,box-shadow .15s ease,border-top-color .15s ease}.tile:hover{transform:translateY(-2px);box-shadow:var(--shadow-lift);border-top-color:var(--orange)}.tile:focus-visible{outline:3px solid rgba(75,46,131,.35);outline-offset:2px}.tile .icon{font-size:30px;line-height:1;width:52px;height:52px;display:flex;align-items:center;justify-content:center;background:var(--violet-tint);border-radius:10px}.tile h2{margin:4px 0 0;font-size:17px;font-weight:600;color:var(--violet)}.tile p{margin:0;color:var(--ink-muted);flex:1}.tile .foot{display:flex;align-items:center;gap:8px;margin-top:6px;font-weight:600;color:var(--orange)}.tile .ext{font-weight:400;font-size:12px;color:var(--ink-muted)}.roles{display:flex;flex-wrap:wrap;gap:6px;margin-top:10px}.chip{background:var(--violet-tint);color:var(--violet);border-radius:999px;padding:3px 11px;font-size:12px;font-weight:500}.state{min-height:70vh;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px;text-align:center;padding:24px}.state h1{color:var(--violet);margin:0;font-size:20px}.state p{color:var(--ink-muted);max-width:460px;margin:0}.panel{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:40px 28px;text-align:center;color:var(--ink-muted)}.footer{max-width:1100px;margin:0 auto;padding:0 24px 32px;color:var(--ink-muted);font-size:12px}@media (max-width: 640px){.header{padding:0 14px;gap:10px}.header .user{display:none}.container{padding:24px 14px 40px}.tiles{grid-template-columns:1fr}}.admin-head{display:flex;align-items:flex-start;gap:16px;flex-wrap:wrap;margin-bottom:20px}.admin-head h1{margin:0 0 4px;font-size:24px;font-weight:600;color:var(--violet)}.admin-actions{margin-left:auto;display:flex;gap:8px;align-items:center}.btn-outline-violet{background:transparent;color:var(--violet);border-color:var(--line);text-decoration:none}.btn-outline-violet:hover{background:var(--violet-tint)}.btn-danger{background:transparent;color:#b3261e;border-color:#f0c4c0}.btn-danger:hover:not(:disabled){background:#fdecea}.btn-sm{padding:5px 10px;font-size:13px}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-row{display:flex;gap:6px;flex-wrap:wrap}.filters{display:flex;gap:16px;flex-wrap:wrap;margin-bottom:18px;align-items:flex-end}.filters label,.new-grid label{display:flex;flex-direction:column;gap:4px;font-size:12px;font-weight:600;color:var(--ink-muted);text-transform:uppercase;letter-spacing:.4px}.admin-card{background:var(--surface);border:1px solid var(--line);border-top:3px solid var(--violet);border-radius:var(--radius);box-shadow:var(--shadow);padding:18px;margin-bottom:18px}.admin-card h2{margin:0 0 14px;font-size:16px;font-weight:600;color:var(--violet);display:flex;align-items:center;gap:8px}.new-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px;margin-bottom:14px}.new-grid label.wide{grid-column:1 / -1}.table-scroll{overflow-x:auto}table{width:100%;border-collapse:collapse;font-size:14px}th{text-align:left;font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.4px;color:var(--ink-muted);padding:8px 10px;border-bottom:1px solid var(--line);background:#fafafc;white-space:nowrap}td{padding:9px 10px;border-bottom:1px solid var(--line);vertical-align:middle}tbody tr:last-child td{border-bottom:none}td.num,th.num{text-align:right;font-variant-numeric:tabular-nums}input,select{font-family:inherit;font-size:14px;padding:7px 9px;border:1px solid var(--line);border-radius:6px;background:#fff;color:var(--ink);width:100%;text-transform:none;letter-spacing:normal}input:focus,select:focus{outline:none;border-color:var(--violet);box-shadow:0 0 0 3px #4b2e831f}td input{padding:5px 8px}.alert-error{background:#fdecea;border:1px solid #f2c9c5;color:#8c1d17;border-radius:var(--radius);padding:12px 16px;margin-bottom:16px}.alert-error ul{margin:6px 0 0;padding-left:20px}.small{font-size:12px}.row-inactive{opacity:.55}.schema-chip{background:var(--violet-tint);color:var(--violet);padding:3px 9px;border-radius:5px;font-size:12px;font-weight:600}.stacked-inputs{display:flex;flex-direction:column;gap:4px}.group-copy{display:inline-flex;align-items:center;gap:7px;background:#f6f6f9;border:1px solid var(--line);border-radius:6px;padding:5px 10px;cursor:pointer;font-family:inherit}.group-copy:hover{border-color:var(--violet);background:var(--violet-tint)}.group-copy code{font-size:12px;color:var(--ink)}.toggle{border-radius:999px;padding:4px 12px;font-size:12px;font-weight:600;border:1px solid transparent;cursor:pointer;font-family:inherit}.toggle.on{background:#eaf5ef;color:#1f7a4d;border-color:#bfe0cd}.toggle.off{background:#eeeef2;color:#6b6b76;border-color:var(--line)}.badge-warn{display:inline-block;background:var(--orange-tint);color:var(--orange-dark);border-radius:999px;padding:2px 9px;font-size:11px;font-weight:600;margin-right:6px;white-space:nowrap}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:60;background:#1f1f2480;display:flex;align-items:flex-start;justify-content:center;padding:40px 16px;overflow-y:auto}.modal{background:var(--surface);width:100%;max-width:720px;border-radius:var(--radius);border-top:3px solid var(--violet);box-shadow:0 12px 40px #1f1f2447;display:flex;flex-direction:column;max-height:calc(100vh - 80px)}.modal-head{display:flex;align-items:center;gap:12px;padding:18px 22px;border-bottom:1px solid var(--line)}.modal-head h2{margin:0;font-size:17px;font-weight:600;color:var(--violet)}.modal-close{margin-left:auto;background:transparent;border:none;font-size:17px;line-height:1;cursor:pointer;color:var(--ink-muted);padding:6px 8px;font-family:inherit}.modal-close:hover{color:var(--ink)}.modal-body{padding:22px;overflow-y:auto}.modal-body .new-grid{margin-bottom:0}.modal-foot{display:flex;gap:8px;padding:16px 22px;border-top:1px solid var(--line);background:#fafafc;border-radius:0 0 var(--radius) var(--radius)}@media (max-width: 768px){.modal-backdrop{padding:0}.modal{max-width:none;max-height:100vh;border-radius:0;min-height:100vh}}
