:root{--green:#12ae58;--deep-green:#0c5f34;--yellow:#ffd21c;--yellow-shadow:#d7a900;--surface:#fff;--surface-2:#f5f8f5;--text:#183025;--muted:#718078;--line:#dfe8e1;--soft-green:#e8f9ef;--display:"Plus Jakarta Sans",sans-serif;--head:"Fredoka",sans-serif;--body:"Nunito",sans-serif}*{box-sizing:border-box}body{margin:0;background:var(--surface-2);color:var(--text);font-family:var(--body)}a,button,input,select,textarea{font:inherit}img{display:block;max-width:100%}.portal-shell{display:grid;grid-template-columns:240px 1fr;min-height:100vh}.portal-shell.no-sidebar{grid-template-columns:1fr}.portal-sidebar{display:flex;flex-direction:column;padding:1.5rem 1.2rem;background:linear-gradient(180deg,#073d25,#0c5f34);color:#fff}.portal-logo{display:block;margin-bottom:1.5rem}.portal-logo img{height:44px;filter:brightness(0) invert(1)}.portal-identity{display:flex;align-items:center;gap:.7rem;padding:.9rem;margin-bottom:1.5rem;background:#ffffff0f;border:1px solid rgba(255,255,255,.1);border-radius:14px}.portal-avatar{display:grid;place-items:center;flex-shrink:0;width:38px;height:38px;border-radius:50%;background:var(--yellow);color:#172315;font-weight:900;font-size:.85rem}.portal-identity strong{display:block;font-size:.82rem;color:#fff;line-height:1.3;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.portal-identity small{color:#ffffffa6;font-size:.7rem;font-weight:700;letter-spacing:.03em;text-transform:uppercase}.portal-sidebar nav{display:flex;flex-direction:column;gap:.2rem;flex:1;overflow-y:auto}.nav-group{display:flex;flex-direction:column;gap:.15rem;margin-bottom:.5rem}.nav-group-label{padding:.6rem .9rem .2rem;color:#ffffff73;font-size:.62rem;font-weight:800;letter-spacing:.08em;text-transform:uppercase}.portal-sidebar nav a{display:flex;align-items:center;gap:.6rem;padding:.6rem .9rem;border-radius:10px;color:#ffffffd1;text-decoration:none;font-weight:700;font-size:.85rem}.portal-sidebar nav a:hover{background:#ffffff14}.portal-sidebar nav a.active{background:var(--yellow);color:#172315}.nav-icon{font-size:1rem;line-height:1}.portal-bell-wrap{position:relative;margin-bottom:1rem}.portal-bell{position:relative;display:flex;align-items:center;gap:.6rem;width:100%;padding:.7rem .9rem;border:none;border-radius:10px;background:transparent;color:#ffffffd1;text-decoration:none;font-weight:700;font-size:.85rem;font-family:inherit;cursor:pointer;text-align:left}.portal-bell:hover{background:#ffffff14}.portal-bell.bell-pulse{animation:bell-pulse .5s ease 2}@keyframes bell-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.08)}}.bell-count{padding:.1rem .45rem;border-radius:99px;background:var(--yellow);color:#172315;font-size:.68rem;font-weight:900}.notif-panel{position:absolute;left:0;top:calc(100% + 6px);z-index:60;width:320px;max-width:calc(100vw - 2.4rem);background:#fff;color:var(--text);border-radius:14px;box-shadow:0 18px 40px #00000038;overflow:hidden}.notif-panel-head{display:flex;justify-content:space-between;align-items:center;padding:.8rem 1rem;border-bottom:1px solid var(--line)}.notif-panel-head strong{font-size:.85rem}.notif-mark-all{border:none;background:none;color:var(--green);font-weight:800;font-size:.72rem;cursor:pointer;padding:0}.notif-panel-list{max-height:340px;overflow-y:auto;display:flex;flex-direction:column}.notif-item{display:flex;flex-direction:column;gap:.15rem;width:100%;padding:.7rem 1rem;border:none;border-bottom:1px solid var(--line);background:#fff;text-align:left;cursor:pointer;font-family:inherit}.notif-item:hover{background:var(--surface-2)}.notif-item.unread{background:var(--soft-green)}.notif-item-msg{font-size:.78rem;font-weight:700;line-height:1.4}.notif-item-time{font-size:.66rem;color:var(--muted)}.notif-empty{padding:1.2rem 1rem;color:var(--muted);font-size:.8rem;margin:0}.notif-panel-footer{display:block;padding:.7rem 1rem;text-align:center;color:var(--green);font-weight:800;font-size:.76rem;text-decoration:none;background:var(--surface-2)}.notif-panel-footer:hover{text-decoration:underline}.toast-container{position:fixed;bottom:1.2rem;right:1.2rem;z-index:80;display:flex;flex-direction:column;gap:.6rem;max-width:min(340px,calc(100vw - 2.4rem))}.portal-toast{display:flex;align-items:center;gap:.6rem;padding:.8rem 1rem;background:#1c2a1e;color:#fff;border-radius:12px;box-shadow:0 12px 30px #00000047;font-size:.8rem;animation:toast-in .2s ease}.portal-toast.urgent{background:#8a6800}@keyframes toast-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.toast-msg{flex:1;font-weight:700;line-height:1.4}.toast-cta{color:var(--yellow);font-weight:800;text-decoration:none;white-space:nowrap;font-size:.75rem}.toast-cta:hover{text-decoration:underline}.toast-close{border:none;background:none;color:#ffffffb3;font-size:1rem;cursor:pointer;line-height:1;padding:0}@media(max-width:820px){.notif-panel{position:fixed;left:.8rem;right:.8rem;top:auto;bottom:4.2rem;width:auto;max-width:none}.toast-container{left:.8rem;right:.8rem;bottom:.8rem;max-width:none}}.portal-footer-card{margin-bottom:1.2rem;padding:1.1rem;background:#ffffff0f;border:1px solid rgba(255,255,255,.1);border-radius:14px}.portal-tagline{margin:0 0 .8rem;font-family:var(--display);font-size:1.05rem;line-height:1.2;color:#fff;letter-spacing:-.01em}.portal-help{display:block;color:var(--yellow);text-decoration:none;font-weight:800;font-size:.78rem}.portal-help:hover{text-decoration:underline}.portal-logout button{width:100%;padding:.7rem;border:1px solid rgba(255,255,255,.25);border-radius:10px;background:transparent;color:#fff;font-weight:700;cursor:pointer}.portal-logout button:hover{background:#ffffff14}.portal-main{padding:clamp(1.5rem,3vw,3rem)}.portal-main h1,.portal-main h2{overflow-wrap:anywhere}@media(max-width:820px){.portal-shell{grid-template-columns:minmax(0,1fr)}.portal-sidebar{flex-direction:row;flex-wrap:nowrap;align-items:center;padding:1rem;overflow-x:hidden}.portal-logo{margin:0 .8rem 0 0;flex-shrink:0}.portal-identity,.portal-footer-card{display:none}.portal-sidebar nav{flex-direction:row;flex-wrap:nowrap;overflow-x:auto;overflow-y:visible;flex:1;min-width:0}.nav-group{flex-direction:row;margin-bottom:0;flex-shrink:0}.nav-group-label{display:none}.portal-bell-wrap{flex-shrink:0;margin-bottom:0;margin-left:.4rem}.portal-bell{padding:.6rem .7rem}.portal-bell .bell-label{display:none}.portal-logout{margin-left:.4rem;flex-shrink:0}.portal-logout button{width:auto;padding:.6rem .9rem;white-space:nowrap}}
