*,:before,:after{box-sizing:border-box;margin:0;padding:0}html{background:#fff}:root{--brand:#2c6fad;--brand-dark:#2d6ea5;--brand-light:#e8f1fb;--brand-hover:#2c6fad14;--danger:#d93025;--success:#1e8e3e;--warning:#f29900;--text:#202124;--muted:#5f6368;--border:#e8eaed;--bg:#fff;--card:#fff;--sidebar-w:14.375rem;--shape-xs:.25rem;--shape-sm:.5rem;--shape-md:.75rem;--shape-lg:1rem;--shape-xl:1.75rem;--shape-full:6.25rem;--elev-1:0 1px 3px #3c40431a, 0 1px 2px #3c40430f;--elev-2:0 2px 6px #3c40431a, 0 1px 3px #3c404314;--elev-3:0 4px 12px #3c40431f, 0 2px 4px #3c404314}body{background:var(--bg);color:var(--text);overscroll-behavior-x:none;min-height:100vh;font-family:DM Sans,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;overflow-x:hidden}#root{text-align:left;border:none;width:100%;min-height:100vh;display:block}.layout{min-height:100vh;display:flex}.sidebar{width:var(--sidebar-w);background:var(--brand-dark);color:#fff;z-index:100;flex-direction:column;transition:transform .25s cubic-bezier(.4,0,.2,1);display:flex;position:fixed;top:0;bottom:0;left:0;transform:translate(-100%)}.sidebar.sidebar-open{transform:translate(0)}.sidebar-logo{border-bottom:1px solid #ffffff1a;flex-shrink:0;align-items:center;padding:1.25rem 1.25rem 1rem;display:flex}.sidebar-logo-img{width:auto;height:36px;display:block}.sidebar-logo-text{letter-spacing:.03em;color:#fff;font-size:1.375rem;font-weight:700}.sidebar-logo-text span{color:#8ab4f8}.sidebar-nav{flex:1;padding:.75rem;overflow-y:auto}.sidebar-nav a{color:#fffc;border-radius:var(--shape-full);align-items:center;gap:.75rem;margin-bottom:.125rem;padding:.75rem 1rem;font-size:.875rem;font-weight:500;text-decoration:none;transition:background .15s,color .15s;display:flex}.sidebar-nav a:hover{color:#fff;background:#ffffff1a}.sidebar-nav a.active{color:#1557b0;background:#8ab4f8;font-weight:700}.sidebar-user{color:#ffffffb3;border-top:1px solid #ffffff1a;flex-shrink:0;padding:.875rem 1.25rem;font-size:.8125rem}.sidebar-user strong{color:#fff;margin-bottom:.125rem;font-size:.875rem;display:block}.btn-logout{color:#fff;border-radius:var(--shape-full);cursor:pointer;text-align:center;background:#ffffff1a;border:none;width:100%;margin-top:.5rem;padding:.375rem .75rem;font-size:.75rem;text-decoration:none;transition:background .15s;display:block}.btn-logout:hover{background:#fff3}.sidebar-overlay{z-index:99;background:#00000080;position:fixed;inset:0}.hamburger{cursor:pointer;color:var(--text);border-radius:var(--shape-full);background:0 0;border:none;padding:.25rem .5rem;font-size:1.375rem;line-height:1;transition:background .15s;display:block}.hamburger:hover{background:var(--brand-hover)}.main{flex:1;min-width:0;min-height:100vh;margin-left:0}.topbar{border-bottom:1px solid var(--border);z-index:50;box-shadow:0 1px 0 var(--border);background:#fff;justify-content:space-between;align-items:center;padding:.75rem 1rem;display:flex;position:sticky;top:0}.topbar h1{color:var(--text);margin:0;font-size:1rem;font-weight:500}.page{background:#fff;min-height:calc(100vh - 57px);padding:1rem}@media (width>=768px){.sidebar{transform:none}.hamburger{display:none}.main{margin-left:var(--sidebar-w)}.topbar{box-shadow:none;padding:.875rem 1.75rem}.topbar h1{font-size:1.125rem}.page{padding:1.5rem 1.75rem}th{white-space:nowrap}}.card{background:var(--card);border-radius:var(--shape-xl);border:1px solid var(--border);box-shadow:var(--elev-1);padding:1.25rem}.stat-grid{grid-template-columns:repeat(2,1fr);gap:.75rem;margin-bottom:1.5rem;display:grid}@media (width>=480px){.stat-grid{grid-template-columns:repeat(auto-fill,minmax(10rem,1fr));gap:.875rem}}.stat-card{background:var(--card);border-radius:var(--shape-xl);border:1px solid var(--border);box-shadow:var(--elev-1);padding:1rem 1.25rem;transition:box-shadow .2s,background .15s}.stat-card:hover{box-shadow:var(--elev-2);background:#fafbff}.stat-card .label{color:var(--muted);text-transform:uppercase;letter-spacing:.05em;font-size:.6875rem}.stat-card .value{color:var(--brand);margin-top:.25rem;font-size:1.5rem;font-weight:700}.stat-card .sub{color:var(--muted);margin-top:.125rem;font-size:.75rem}.grid-2{grid-template-columns:repeat(auto-fit,minmax(min(17.5rem,100%),1fr));gap:1.25rem;display:grid}.grid-3{grid-template-columns:repeat(auto-fit,minmax(min(13rem,100%),1fr));gap:1rem;display:grid}.grid-2-responsive{grid-template-columns:1fr 1fr;gap:12px;display:grid}@media (width<=479px){.grid-2-responsive{grid-template-columns:1fr}}.table-wrap{-webkit-overflow-scrolling:touch;overflow-x:auto}@media (width<=767px){.col-property,.col-edit-desktop{display:none}}@media (width>=768px){.col-edit-mobile{display:none}}table{border-collapse:collapse;width:100%;font-size:.875rem}th{text-align:left;color:var(--muted);text-transform:uppercase;letter-spacing:.06em;border-bottom:2px solid var(--border);padding:.75rem 1rem;font-size:.6875rem;font-weight:500}td{border-bottom:1px solid var(--border);padding:.75rem 1rem}tr:last-child td{border-bottom:none}tr:hover td{background:var(--brand-hover)}.search-input{border:1px solid var(--border);border-radius:var(--shape-full);background:#fff;outline:none;width:100%;max-width:22.5rem;padding:.625rem 1rem;font-size:.875rem;transition:border-color .15s,box-shadow .15s}.search-input:hover{border-color:var(--text)}.search-input:focus{border-color:var(--brand);box-shadow:0 0 0 2px var(--brand-light)}.form-group{margin-bottom:1rem}.form-group label{color:var(--text);margin-bottom:.375rem;font-size:.8125rem;font-weight:500;display:block}.form-group input,.form-group select,.form-group textarea{border:1px solid var(--border);border-radius:var(--shape-md);width:100%;color:var(--text);background:#fff;outline:none;padding:.5625rem .75rem;font-family:inherit;font-size:.875rem;transition:border-color .15s,box-shadow .15s}.form-group input:hover,.form-group select:hover,.form-group textarea:hover{border-color:var(--text)}.form-group input:focus,.form-group select:focus,.form-group textarea:focus{border-color:var(--brand);box-shadow:0 0 0 2px var(--brand-light)}.form-group textarea{resize:vertical;min-height:5rem}.form-group input[type=file]{cursor:pointer;padding:.375rem}.btn{border-radius:var(--shape-full);cursor:pointer;letter-spacing:.0125em;white-space:nowrap;border:none;align-items:center;gap:.375rem;padding:.5rem 1.25rem;font-family:inherit;font-size:.875rem;font-weight:500;transition:box-shadow .2s,background .15s;display:inline-flex;position:relative;overflow:hidden}.btn:after{content:"";opacity:0;border-radius:inherit;pointer-events:none;background:currentColor;transition:opacity .15s;position:absolute;inset:0}.btn:hover:after{opacity:.08}.btn:active:after{opacity:.16}.btn:disabled{opacity:.38;cursor:not-allowed}.btn:disabled:after{display:none}.btn-primary{background:var(--brand);color:#fff}.btn-primary:hover{box-shadow:var(--elev-1)}.btn-danger{background:var(--danger);color:#fff}.btn-danger:hover{box-shadow:var(--elev-1)}.btn-ghost{color:var(--brand);border:1px solid var(--border);background:0 0}.btn-ghost:hover{background:var(--brand-light);border-color:var(--brand)}.btn-ghost:after{display:none}.btn-sm{padding:.3125rem .875rem;font-size:.75rem}.badge{border-radius:var(--shape-full);text-transform:capitalize;white-space:nowrap;padding:.1875rem .625rem;font-size:.6875rem;font-weight:600;display:inline-block}.badge-green{color:#137333;background:#e6f4ea}.badge-red{color:#c5221f;background:#fce8e6}.badge-yellow{color:#b06000;background:#fef7e0}.badge-blue{background:var(--brand-light);color:var(--brand)}.badge-gray{color:var(--muted);background:#f1f3f4}.modal-backdrop{z-index:200;background:#00000073;justify-content:center;align-items:center;padding:1rem;display:flex;position:fixed;inset:0}.modal{border-radius:var(--shape-xl);width:min(32.5rem,100%);max-height:90vh;box-shadow:var(--elev-3);background:#fff;padding:1.25rem;overflow-y:auto}.modal h2{margin-bottom:1.25rem;font-size:1.0625rem;font-weight:500}.modal-footer{flex-wrap:wrap;justify-content:flex-end;gap:.625rem;margin-top:1.25rem;display:flex}@media (width>=480px){.modal{padding:1.75rem}}.page-header{flex-flow:column wrap;justify-content:space-between;align-items:flex-start;gap:.625rem;margin-bottom:1.25rem;display:flex}.page-header h2{font-size:1.125rem;font-weight:500}@media (width>=480px){.page-header{flex-direction:row;align-items:center}}.login-page{background:var(--bg);justify-content:center;align-items:center;min-height:100vh;padding:1rem;display:flex}.login-card{border-radius:var(--shape-xl);width:min(26.25rem,100%);box-shadow:var(--elev-2);border:1px solid var(--border);background:#fff;padding:2.5rem 2rem}.login-card h1{color:var(--text);margin-bottom:.25rem;font-size:1.5rem;font-weight:400}.login-card .subtitle{color:var(--muted);margin-bottom:1.5rem;font-size:.875rem}.login-card .btn-primary{justify-content:center;width:100%;margin-top:.25rem;padding:.75rem;font-size:.9375rem}.demo-hint{color:var(--muted);text-align:center;background:var(--bg);border-radius:var(--shape-sm);margin-top:1rem;padding:.625rem;font-size:.75rem}.empty{text-align:center;color:var(--muted);padding:2.5rem 1.25rem;font-size:.875rem}.error-msg{color:var(--danger);margin-top:.625rem;font-size:.8125rem}.section-title{color:var(--text);margin-bottom:.875rem;font-size:.9375rem;font-weight:500}.flex-row{flex-wrap:wrap;align-items:center;gap:.5rem;display:flex}.mt-4{margin-top:1rem}.mb-4{margin-bottom:1rem}
