:root{--bg: #f6f7f9;--surface: #ffffff;--surface-2: #f1f3f5;--text: #111827;--muted: #6b7280;--border: #e5e7eb;--auth-brand: #2d4739;--auth-hero: linear-gradient( 180deg, rgba(45, 71, 57, 1) 0%, rgba(45, 71, 57, .92) 100% );--radius-lg: 1rem;--topbar-h: 56px;--sidebar-w: 240px;--sidebar-w-collapsed: 74px;--app-green: #2d4739;--app-green-soft: rgba(45, 71, 57, .12)}*,*:before,*:after{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;background:var(--bg);color:var(--text);font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}.text-center{text-align:center}.text-muted{color:var(--muted)}.text-error{color:#b91c1c}.mt-3{margin-top:.75rem}.w-full{width:100%}.auth-shell{min-height:100vh;display:flex;align-items:center;justify-content:center;background:var(--bg);padding:1.25rem}.auth-card{width:min(100%,420px);background:var(--surface);border:1px solid rgba(0,0,0,.04);border-radius:1rem;overflow:hidden;box-shadow:0 16px 36px #00000008}.auth-card__header{background:var(--auth-hero);padding:1.5rem 1.5rem 1.25rem;text-align:center}.auth-card__logo{height:44px;display:block;margin:0 auto}.auth-card__title{margin:1rem 0 .3rem;color:#fff;font-size:1.25rem;font-weight:600}.auth-card__subtitle{margin:0;color:#ffffffb3;font-size:.875rem}.auth-card__body{padding:1.5rem}.form-grid{display:flex;flex-direction:column;gap:1rem}.form-field{display:flex;flex-direction:column;gap:.4rem}.form-label{display:flex;flex-direction:column;gap:.4rem;font-size:.875rem;color:#0f172a}.required{color:#b91c1c;margin-left:.25rem;font-weight:500}.input{width:100%;border:1px solid #d1d9e6;border-radius:.5rem;padding:.5rem .65rem;font-size:.9rem;background:#fff;outline:none}.input:focus{border-color:#2d4739e6;box-shadow:0 0 0 3px #2d47391f}.btn-primary{display:inline-flex;align-items:center;justify-content:center;gap:.4rem;border:none;background:var(--auth-brand);color:#fff;border-radius:.5rem;padding:.55rem .75rem;font-size:.875rem;font-weight:600;cursor:pointer;transition:opacity .12s ease-out}.btn-primary:hover{opacity:.9}.btn-primary:disabled{opacity:.6;cursor:default}.input-password-wrapper{position:relative;display:flex;align-items:center}.input-password{padding-right:2.5rem}.input-password-toggle{position:absolute;right:.45rem;background:transparent;border:none;cursor:pointer;height:28px;width:28px;display:inline-flex;align-items:center;justify-content:center;color:#555;font-size:.9rem;border-radius:999px}.input-password-toggle:hover{background:#00000008}.link-muted{color:#2d4739;text-decoration:none;font-size:.78rem}.link-muted:hover{text-decoration:underline}.pwd-rules-box{background:#00000004;border:1px solid rgba(0,0,0,.03);border-radius:.5rem;padding:.4rem .6rem;display:flex;flex-direction:column;gap:.3rem}.pwd-rule{display:flex;align-items:center;gap:.4rem;font-size:.74rem}.pwd-rule-icon{width:1.25rem;height:1.25rem;border-radius:999px;display:inline-flex;align-items:center;justify-content:center;font-size:.72rem}.pwd-rule--ok .pwd-rule-icon{background:#10b9811f;color:#047857}.pwd-rule--fail .pwd-rule-icon{background:#f8717114;color:#b91c1c}.pwd-rule-text{color:#0f172a}.pwd-match{display:flex;align-items:center;gap:.4rem;font-size:.74rem;padding:.35rem .5rem;border-radius:.4rem;background:#00000004}.pwd-match-icon{width:1.1rem;height:1.1rem;border-radius:999px;display:inline-flex;align-items:center;justify-content:center;font-size:.7rem}.pwd-match--ok{background:#10b98111;color:#065f46}.pwd-match--ok .pwd-match-icon{background:#10b98159;color:#fff}.pwd-match--fail{background:#f871710b;color:#b91c1c}.pwd-match--fail .pwd-match-icon{background:#f8717180;color:#fff}.app-shell{min-height:100vh;background:#eef1f2;display:flex;flex-direction:column}.app-topbar{height:var(--topbar-h);background:#2d4739;color:#fff;display:flex;align-items:center;justify-content:space-between;padding:0 1.15rem;box-shadow:0 2px 8px #0000001f;z-index:50}.app-topbar__left{display:flex;align-items:center;gap:.85rem}.app-topbar__logo{display:inline-flex;align-items:center;gap:.4rem;cursor:pointer}.app-topbar__logo img{height:30px;display:block}.app-topbar__toggle{width:34px;height:28px;background:#0000002e;border:none;border-radius:.45rem;display:inline-flex;flex-direction:column;justify-content:center;align-items:center;gap:3px;cursor:pointer;transition:background .1s ease-out}.app-topbar__toggle:hover{background:#00000038}.app-topbar__toggle-line{width:18px;height:2px;background:#fff;border-radius:999px}.app-topbar__toggle--active{background:#00000047}.app-topbar__right{display:flex;align-items:center;gap:.5rem;position:relative}.app-topbar__user-btn{display:flex;align-items:center;gap:.55rem;background:transparent;border:none;color:#fff;cursor:pointer}.app-topbar__avatar{width:32px;height:32px;border-radius:999px;background:#00000040;display:inline-flex;align-items:center;justify-content:center;font-weight:600;font-size:.9rem}.app-topbar__user-info{display:flex;flex-direction:column;gap:.15rem;line-height:1}.app-topbar__user-name{font-size:.74rem;font-weight:600}.app-topbar__user-role{font-size:.63rem;opacity:.7}.app-topbar__dropdown{position:absolute;right:0;top:calc(100% + 6px);background:#fff;border-radius:.6rem;box-shadow:0 12px 30px #0f172a3d;overflow:hidden;z-index:60;min-width:145px}.app-topbar__dropdown-item{width:100%;background:transparent;border:none;text-align:left;padding:.45rem .7rem;font-size:.78rem;display:flex;gap:.4rem;align-items:center;cursor:pointer}.app-topbar__dropdown-item:hover{background:#00000008}.app-topbar__dropdown-item--danger{color:#b91c1c;font-weight:500}.app-topbar__dropdown-icon{width:24px;height:24px;border-radius:999px;background:#f8717124;display:inline-flex;align-items:center;justify-content:center;color:#b91c1c}.app-shell__body{flex:1;display:flex;min-height:calc(100vh - var(--topbar-h));position:relative}.app-sidebar{width:var(--sidebar-w);background:#2d4739;color:#fff;display:flex;flex-direction:column;flex-shrink:0;transition:width .15s ease-out;position:relative;z-index:30}.app-sidebar--collapsed{width:var(--sidebar-w-collapsed)}.app-sidebar__spacer{height:10px}.app-sidebar__nav{display:flex;flex-direction:column;gap:.25rem;padding:.5rem .45rem .75rem}.app-sidebar--collapsed .app-sidebar__nav{align-items:center}.app-sidebar__item{border:none;background:transparent;color:#ffffffd9;display:flex;align-items:center;gap:.6rem;border-radius:.6rem;padding:.35rem .45rem .35rem .4rem;cursor:pointer;transition:background .1s ease-out;font-weight:500;text-decoration:none}.app-sidebar__item:hover{background:#ffffff1f}.app-sidebar__item--active{background:#ffffff29;color:#fff}.app-sidebar--collapsed .app-sidebar__item{width:100%;justify-content:center;gap:0;padding:.45rem 0}.app-sidebar__icon-wrap{width:34px;height:34px;border-radius:.85rem;background:transparent;display:inline-flex;align-items:center;justify-content:center;font-size:.85rem;font-weight:700}.app-sidebar__icon{display:inline-flex}.app-sidebar__label{font-size:.78rem;white-space:nowrap}.app-sidebar__hover-label{position:fixed;left:calc(var(--sidebar-w-collapsed) + 10px);background:#1f2937;color:#fff;padding:.35rem .55rem;border-radius:.4rem;font-size:.7rem;box-shadow:0 10px 25px #0f172a4d;pointer-events:none;z-index:999;opacity:0;transform:translate(4px);transition:opacity .08s ease-out,transform .08s ease-out}.app-sidebar__hover-label--visible{opacity:1;transform:translate(0)}.app-shell__content{flex:1;min-width:0;background:#eef1f2;padding:1.05rem}.app-content-surface{background:#fff;border-radius:1rem;min-height:calc(100vh - var(--topbar-h) - 2.1rem);border:1px solid rgba(15,23,42,.025);box-shadow:0 10px 40px #0f172a06;padding:1.1rem 1.2rem 1.15rem}.page{display:flex;flex-direction:column;gap:.6rem}.page-title{font-size:1.2rem;font-weight:600;color:#0f172a}.page-subtitle{font-size:.84rem;color:#6b7280}@media(max-width:1023px){.app-shell__content{padding:.65rem}.app-content-surface{border-radius:.7rem;min-height:auto}.app-sidebar{width:var(--sidebar-w-collapsed)}.app-topbar__user-info{display:none}}.notify-host{position:fixed;top:calc(var(--topbar-h) + .75rem);right:1rem;display:flex;flex-direction:column;gap:.6rem;z-index:999}.notify-item{position:relative;min-width:240px;max-width:310px;background:#fff;border-radius:.5rem;border:1px solid rgba(15,23,42,.08);box-shadow:0 12px 24px #0f172a1f;display:flex;align-items:flex-start;gap:.5rem;padding:.6rem .65rem .9rem .8rem;-webkit-backdrop-filter:blur(1.2px);backdrop-filter:blur(1.2px)}.notify-content{flex:1}.notify-title{font-size:.78rem;font-weight:600;margin-bottom:.15rem}.notify-message{font-size:.74rem;line-height:1.25}.notify-close{background:transparent;border:none;cursor:pointer;font-size:1rem;line-height:1;color:#00000059}.notify-close:hover{color:#0009}.notify-success{border-color:#16a34a40;background:#16a34a12}.notify-error{border-color:#dc262640;background:#dc26260b}.notify-alert{border-color:#eab30847;background:#facc1514}.notify-info{border-color:#3b82f638;background:#3b82f609}.notify-progress{position:absolute;left:.45rem;right:.45rem;bottom:.15rem;height:3px;background:#0000000a;border-radius:999px;overflow:hidden}.notify-progress-bar{height:100%;background:#00000059;transition:width 80ms linear;border-radius:999px}.notify-success .notify-progress-bar{background:#16a34acc}.notify-error .notify-progress-bar{background:#dc2626d9}.notify-alert .notify-progress-bar{background:#eab308e6}.notify-info .notify-progress-bar{background:#3b82f6e6}
