*,*:before,*:after{box-sizing:border-box}:root{--bg: #f5f6f8;--surface: #fff;--text: #1a1a1a;--muted: #5c6370;--border: #e2e4e8;--accent: #2563eb;--accent-hover: #1d4ed8;--danger: #b91c1c;--radius: 8px;--font: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", sans-serif}html,body{margin:0;height:100%;overflow:hidden;font-family:var(--font);font-size:14px;color:var(--text);background:var(--bg)}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}.app-shell{height:100vh;min-height:0;display:flex}.sidebar{width:220px;flex-shrink:0;background:var(--surface);border-right:1px solid var(--border);display:flex;flex-direction:column;height:100vh;min-height:0}.sidebar-brand{padding:1rem 1.1rem;font-weight:700;font-size:1.05rem;border-bottom:1px solid var(--border)}.sidebar-nav{flex:1;padding:.75rem .5rem;overflow-y:auto}.nav-group{margin-bottom:.85rem}.nav-group-title{font-size:.7rem;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);padding:.25rem .55rem .35rem;font-weight:600}.nav-link{display:block;padding:.45rem .55rem;border-radius:6px;color:var(--text);font-weight:500;font-size:.88rem;text-decoration:none}.nav-link:hover{background:#f0f4ff;text-decoration:none}.nav-link.active{background:#eff6ff;color:var(--accent)}.sidebar-foot{padding:.75rem;border-top:1px solid var(--border)}.sidebar-logout{width:100%}.content-wrap{flex:1;display:flex;flex-direction:column;min-width:0;min-height:0;height:100vh;overflow:hidden}.content-header{background:var(--surface);border-bottom:1px solid var(--border);padding:.85rem 1.25rem}.content-header h1{margin:0;font-size:1.15rem;font-weight:600}.topbar{background:var(--surface);border-bottom:1px solid var(--border);padding:.75rem 1.25rem;display:flex;align-items:center;justify-content:space-between;gap:1rem}.topbar h1{margin:0;font-size:1.1rem;font-weight:600}.nav{display:flex;flex-wrap:wrap;gap:.5rem 1rem;align-items:center}.nav a{color:var(--muted);font-weight:500}.nav a.active{color:var(--accent)}.main{flex:1;min-height:0;overflow:hidden;display:flex;flex-direction:column;padding:0;max-width:none;width:100%}.page-shell{display:flex;flex-direction:column;flex:1;min-height:0;height:100%;padding:1rem 1.25rem 1.25rem;max-width:1100px}.page-shell--wide{max-width:none}.page-shell-desc{flex-shrink:0;margin:0 0 .75rem}.page-shell-toolbar{flex-shrink:0;padding:.65rem 0;margin-bottom:.5rem;border-bottom:1px solid var(--border);background:var(--bg);position:sticky;top:0;z-index:2}.page-toolbar-inner{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem}.page-toolbar-extra{display:flex;flex-wrap:wrap;gap:.5rem;align-items:center}.page-shell-alerts{flex-shrink:0;margin-bottom:.5rem}.page-shell-body{flex:1;min-height:0;overflow-y:auto;overflow-x:hidden;padding:.25rem .35rem .5rem 0;scrollbar-gutter:stable}.page-shell-footer{flex-shrink:0;padding-top:.75rem;border-top:1px solid var(--border)}.page-shell-body,.table-scroll,.card-inner-scroll{scrollbar-width:thin;scrollbar-color:#b8bec8 transparent}.page-shell-body::-webkit-scrollbar,.table-scroll::-webkit-scrollbar,.card-inner-scroll::-webkit-scrollbar{width:8px;height:8px}.page-shell-body::-webkit-scrollbar-thumb,.table-scroll::-webkit-scrollbar-thumb,.card-inner-scroll::-webkit-scrollbar-thumb{background:#b8bec8;border-radius:4px}.page-shell-body::-webkit-scrollbar-thumb:hover,.table-scroll::-webkit-scrollbar-thumb:hover{background:#9aa3b0}.card--scroll{padding:0;margin-bottom:0;display:flex;flex-direction:column;min-height:0;flex:1;overflow:hidden}.page-shell--table{max-width:none}.page-shell--table .page-shell-body{display:flex;flex-direction:column;min-height:0}.page-shell--table .card--scroll{flex:1;min-height:280px}.card--scroll .card-toolbar{flex-shrink:0;padding:1rem 1.25rem .65rem;border-bottom:1px solid var(--border)}.card--scroll .table-scroll{flex:1;min-height:0;overflow:auto;padding:0 1.25rem}.card--scroll .card-footer{flex-shrink:0;padding:.65rem 1.25rem .85rem;border-top:1px solid var(--border)}.section-card{margin-bottom:.85rem}.section-card-title{margin:0 0 .75rem;font-size:1rem;font-weight:600}.section-card-body{min-width:0}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:1rem 1.25rem;margin-bottom:1rem}.field-block{display:block;margin-bottom:.75rem;max-width:36rem}.field-inline{display:inline-flex;align-items:center;gap:.35rem;margin-right:1rem;margin-bottom:.5rem}.field-hint{margin:.25rem 0 0;font-size:12px}.bc-field--error{border:1px solid #fca5a5;border-radius:8px;padding:.65rem .75rem;background:#fef2f2}.bc-field--error label{color:#991b1b}.tier-row--edit .tier-in{padding:.25rem .35rem;font-size:.82rem;min-width:0}.tier-row .actions{white-space:nowrap}.card h2{margin:1.25rem 0 .65rem;font-size:.95rem}.card h2:first-child{margin-top:0}.row{display:flex;flex-wrap:wrap;gap:.75rem;align-items:flex-end;margin-bottom:.75rem}label{display:flex;flex-direction:column;gap:.25rem;font-size:.8rem;color:var(--muted)}input,select,textarea,button{font:inherit}input[type=text],input[type=password],input[type=number],select,textarea{padding:.45rem .6rem;border:1px solid var(--border);border-radius:6px;min-width:8rem}textarea{min-height:120px;width:100%;max-width:100%}button,.btn{display:inline-block;padding:.45rem .85rem;border-radius:6px;border:1px solid var(--border);background:var(--surface);cursor:pointer;color:var(--text)}button.primary,.btn.primary{background:var(--accent);border-color:var(--accent);color:#fff}button.primary:hover,.btn.primary:hover{background:var(--accent-hover);border-color:var(--accent-hover)}button.danger{border-color:#fecaca;color:var(--danger);background:#fef2f2}button:disabled{opacity:.55;cursor:not-allowed}table{width:100%;border-collapse:collapse;font-size:.85rem}th,td{text-align:left;padding:.5rem .6rem;border-bottom:1px solid var(--border);vertical-align:top}th{color:var(--muted);font-weight:600}tr:hover td{background:#fafbfc}.muted{color:var(--muted)}.error-msg{color:var(--danger);font-size:.85rem;margin:.5rem 0 0}.stats{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:.75rem}.stat{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:1rem}.stat .n{font-size:1.5rem;font-weight:700;color:var(--accent)}.stat .l{font-size:.8rem;color:var(--muted)}.login-box{max-width:360px;margin:4rem auto;padding:2rem}.login-box h2{margin-top:0}.login-box .row{flex-direction:column;align-items:stretch}.login-box label,.login-box input{width:100%}.actions{display:flex;flex-wrap:wrap;gap:.35rem}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000059;display:flex;align-items:center;justify-content:center;padding:1rem;z-index:50}.modal-host{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1000;pointer-events:auto}.modal-host .modal-backdrop{z-index:0}body.modal-open{overflow:hidden}.modal{background:var(--surface);border-radius:var(--radius);max-width:640px;width:100%;max-height:90vh;overflow:auto;padding:1rem 1.25rem;border:1px solid var(--border)}.modal h3{margin:0 0 .75rem;font-size:1rem}.pager{display:flex;align-items:center;gap:.75rem;margin-top:.75rem;font-size:.85rem;color:var(--muted)}.page-desc{margin:0 0 .75rem;max-width:52rem}.page-shell .page-desc{margin-bottom:.65rem}.ok-msg{color:#15803d;font-size:.85rem;margin:.5rem 0 0}.badge{display:inline-block;padding:.15rem .45rem;border-radius:999px;font-size:.75rem;font-weight:600}.badge-ok{background:#dcfce7;color:#166534}.badge-danger{background:#fee2e2;color:#991b1b}.detail-dl{display:grid;grid-template-columns:7rem 1fr;gap:.35rem .75rem;font-size:.88rem;margin:0 0 1rem}.detail-dl dt{color:var(--muted);margin:0}.detail-dl dd{margin:0}.modal-wide{max-width:720px}.user-edit-grid{display:grid;grid-template-columns:1fr auto;gap:.5rem .75rem;align-items:end;max-width:36rem}.user-edit-grid .field-block{margin-bottom:0}.user-edit-grid input[type=text],.user-edit-grid input[type=number]{width:100%;max-width:16rem}.toast-ok{position:fixed;left:50%;bottom:1.5rem;transform:translate(-50%) translateY(12px);background:#166534;color:#fff;padding:.55rem 1rem;border-radius:8px;font-size:.88rem;z-index:1100;opacity:0;transition:opacity .25s ease,transform .25s ease;pointer-events:none}.toast-ok--show{opacity:1;transform:translate(-50%) translateY(0)}.dash-links{display:flex;flex-wrap:wrap;gap:.5rem}.dash-link{display:inline-block;padding:.35rem .65rem;border:1px solid var(--border);border-radius:6px;background:#fafbfc;font-size:.85rem}.dash-link:hover{border-color:var(--accent);text-decoration:none}@media(max-width:768px){html,body{overflow:auto}.app-shell{flex-direction:column;height:auto;min-height:100vh}.content-wrap{height:auto;overflow:visible}.main{overflow:visible;min-height:auto}.page-shell{height:auto;min-height:auto}.page-shell-body{overflow:visible;flex:none}.page-shell--table .card--scroll{min-height:auto}.card--scroll .table-scroll{overflow:visible}.sidebar{width:100%;min-height:auto;height:auto;border-right:none;border-bottom:1px solid var(--border)}.sidebar-nav{display:flex;flex-wrap:wrap;gap:.25rem;padding:.5rem}.nav-group{margin-bottom:0}.nav-group-title{display:none}}.hidden{display:none!important}.field-label{margin:.75rem 0 .35rem;font-weight:600}.photo-upload-block{margin-top:.75rem;max-width:36rem}.photo-upload-frame{position:relative;min-height:160px;border:1px dashed var(--border);border-radius:var(--radius);background:#fafbfc;display:flex;align-items:center;justify-content:center;overflow:hidden}.photo-upload-preview{display:block;max-width:100%;max-height:240px;object-fit:contain}.photo-upload-empty{color:var(--muted);padding:1.5rem;text-align:center}.photo-upload-actions{display:flex;flex-wrap:wrap;gap:.5rem;margin-top:.65rem}.photo-upload-btn{margin:0;cursor:pointer}.btn.secondary:hover{background:#f0f2f5}
