:root{--blue:#07598f;--blue-dark:#064b79;--ink:#17263a;--muted:#67798d;--line:#d6dee7;--paper:#fff;--wash:#edf7ff}
*{box-sizing:border-box}
html,body{margin:0;min-height:100%;font-family:Inter,Segoe UI,Arial,sans-serif;color:var(--ink);background:#dce8f0}
button,input{font:inherit}
button{cursor:pointer}
.app-shell{width:min(100%,520px);min-height:100svh;margin:auto;background:linear-gradient(168deg,#fff 0%,#f7fbff 42%,#e6f4ff 100%);box-shadow:0 0 38px #27475f2b;position:relative;overflow:hidden}
.screen{display:none;min-height:100svh;position:relative}.screen.is-active{display:flex}
.login-screen{padding:34px 28px 24px;flex-direction:column;align-items:center}
.brand{display:flex;align-items:center;justify-content:center;width:100%;margin-bottom:30px}
.brand img{display:block;width:min(100%,330px);height:auto;mix-blend-mode:multiply}
h1{margin:0 0 36px;text-align:center;color:var(--blue);font-size:clamp(38px,11vw,52px);line-height:1.03;letter-spacing:.01em}
.login-form{width:100%;display:grid;gap:18px;z-index:2}
.field{height:72px;background:#fff;border:1px solid var(--line);border-radius:15px;display:flex;align-items:center;padding:0 20px;box-shadow:0 5px 16px #33566e12;transition:.2s}
.field:focus-within{border-color:#2882bc;box-shadow:0 0 0 4px #2882bc1a}
.field>svg,.icon-button svg{width:27px;height:27px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;flex:none}
.field input{border:0;outline:0;width:100%;height:100%;padding:0 15px;font-size:20px;color:var(--ink);background:transparent}.field input::placeholder{color:#445064;opacity:1}
.icon-button{border:0;background:transparent;color:var(--ink);padding:8px;margin-right:-8px;display:grid;place-items:center}
.remember{display:flex;align-items:center;gap:12px;font-size:18px;font-weight:650;padding:3px 0}.remember input{appearance:none;width:27px;height:27px;border:2px solid #52718c;border-radius:5px;margin:0;background:#fff;display:grid;place-items:center}.remember input:checked{background:var(--blue);border-color:var(--blue)}.remember input:checked:after{content:"✓";color:#fff;font-size:20px;line-height:1}
.primary-button{height:70px;border:0;border-radius:15px;background:linear-gradient(120deg,#07659e,var(--blue-dark));color:#fff;font-size:23px;font-weight:750;box-shadow:0 11px 24px #07598f30;transition:.15s}.primary-button:hover{filter:brightness(1.08)}.primary-button:active{transform:translateY(2px)}
.link-button{border:0;background:transparent;color:var(--blue-dark);font-size:19px;font-weight:700;padding:18px}
.construction-image{display:block;width:calc(100% + 56px);height:auto;max-width:none;margin:auto -28px 6px;filter:grayscale(1) contrast(.9);opacity:.23;mix-blend-mode:multiply;-webkit-mask-image:linear-gradient(to bottom,transparent 0%,#000 28%);mask-image:linear-gradient(to bottom,transparent 0%,#000 28%)}
.demo-note{color:var(--muted);font-size:12px;margin:0;z-index:2}
.menu-screen{background:#f3f8fc;flex-direction:column;isolation:isolate}.menu-screen::after{content:"";position:absolute;z-index:0;left:-5%;right:-5%;bottom:-8px;aspect-ratio:1/.7;background:url("mb-background.jpg") center top/100% auto no-repeat;opacity:.13;filter:saturate(.72);-webkit-mask-image:linear-gradient(to bottom,transparent 0%,#000 28%);mask-image:linear-gradient(to bottom,transparent 0%,#000 28%);pointer-events:none}.menu-header{min-height:108px;background:#fff;display:flex;align-items:center;gap:12px;padding:16px;box-shadow:0 3px 16px #1e405914;position:relative;z-index:2}.mini-brand{width:148px;height:auto;display:block;mix-blend-mode:multiply;margin-left:19px}.admin-button{border:1px solid #c7dae6;border-radius:10px;background:#edf5fa;color:var(--blue-dark);padding:9px 11px;font-size:12px;font-weight:800}.profile-access{display:grid;justify-items:center;gap:4px;margin-left:auto;margin-right:19px;min-width:120px}.profile-access span{max-width:120px;white-space:nowrap;color:var(--blue-dark);font-size:10px;font-weight:750;text-align:center}.profile-button{width:39px;height:39px;border:0;border-radius:50%;display:grid;place-items:center;background:var(--blue);color:#fff;box-shadow:0 5px 13px #07598f30}.profile-button svg{width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round}.profile-button:hover{filter:brightness(1.1)}
.menu-content{padding:42px 24px 50px;position:relative;z-index:1}.eyebrow{color:var(--blue-dark);font-size:36px;line-height:1.1;font-weight:800;margin:0 0 22px}.menu-content h2{color:var(--blue);font-size:22px;line-height:1.4;font-weight:800;letter-spacing:.08em;margin:0 0 34px 4.1em}
.placeholder-grid{display:grid;grid-template-columns:1fr 1fr;gap:15px}.app-card{appearance:none;text-align:left;aspect-ratio:1.2;background:#fff;border:1px solid #dce7ee;border-radius:18px;padding:20px;display:flex;flex-direction:column;justify-content:space-between;box-shadow:0 8px 22px #264c6510;transition:transform .16s,box-shadow .16s,border-color .16s}.app-card:hover,.app-card:focus-visible{border-color:#78accb;box-shadow:0 11px 26px #19557a20;outline:none;transform:translateY(-2px)}.app-card:active{transform:translateY(1px);box-shadow:0 4px 12px #264c6518}.placeholder-grid b{color:#9bb8ca;font-size:28px}.placeholder-grid span{color:var(--blue-dark);font-weight:800;font-size:18px}
.app-card img{display:block;align-self:center;width:clamp(68px,20vw,92px);height:auto;max-height:78px;object-fit:contain;mix-blend-mode:multiply}
.app-card img{aspect-ratio:1;border-radius:50%;object-fit:cover}
.app-card img{width:clamp(96px,29vw,132px);height:clamp(96px,29vw,132px);max-height:none;border-radius:50%;object-fit:cover}
.app-card{aspect-ratio:1;padding:14px}.app-card img{width:clamp(96px,29vw,132px);height:clamp(96px,29vw,132px);max-height:none}
.app-card span{align-self:center;width:100%;text-align:center;font-size:clamp(12px,3.5vw,16px);line-height:1.15;overflow-wrap:anywhere}
.app-card{aspect-ratio:auto;min-height:176px;justify-content:flex-start;gap:19px}
.toast{position:fixed;left:50%;bottom:28px;transform:translate(-50%,20px);background:#152b3c;color:#fff;padding:13px 18px;border-radius:10px;opacity:0;pointer-events:none;transition:.25s;z-index:10;white-space:nowrap;max-width:90%;font-size:14px}.toast.is-visible{opacity:1;transform:translate(-50%,0)}
.profile-dialog{width:min(calc(100% - 32px),460px);border:0;border-radius:22px;padding:0;color:var(--ink);box-shadow:0 26px 70px #0c2e4655}.profile-dialog::backdrop{background:#0c263a80;backdrop-filter:blur(3px)}.profile-panel{padding:26px;display:grid;gap:17px}.dialog-header{display:flex;align-items:flex-start;justify-content:space-between}.dialog-header p{margin:0 0 5px;color:var(--blue);font-size:12px;font-weight:800;text-transform:uppercase;letter-spacing:.14em}.dialog-header h2{margin:0;color:var(--blue-dark);font-size:27px}.dialog-close{border:0;background:#edf4f8;color:var(--blue-dark);width:38px;height:38px;border-radius:50%;font-size:27px;line-height:1}.profile-identity{display:grid;padding:14px 16px;border-radius:12px;background:#eef6fb}.profile-identity b{color:var(--blue-dark)}.profile-identity span{margin-top:4px;color:var(--muted);font-size:13px}.profile-field{display:grid;gap:7px}.profile-field span{font-size:13px;font-weight:750;color:#3a5063}.profile-field input{width:100%;height:49px;border:1px solid var(--line);border-radius:10px;padding:0 13px;outline:0}.profile-field input:focus{border-color:#2882bc;box-shadow:0 0 0 3px #2882bc18}.password-hint{margin:-3px 0 0;color:var(--muted);font-size:12px;line-height:1.4}.profile-save{height:54px;font-size:17px;margin-top:3px}.profile-logout{height:48px;border:1px solid #bfd2df;border-radius:12px;background:#f4f8fb;color:var(--blue-dark);font-weight:800}.profile-logout:hover{background:#e8f1f7}
.password-error-dialog{width:min(calc(100% - 38px),390px);border:0;border-radius:20px;padding:0;color:var(--ink);box-shadow:0 26px 70px #0c2e4666}.password-error-dialog::backdrop{background:#0c263a66;backdrop-filter:blur(3px)}.password-error-panel{padding:27px 24px 24px;text-align:center}.password-error-icon{display:grid;place-items:center;width:52px;height:52px;margin:0 auto 15px;border-radius:50%;background:#fff0e8;color:#bd4c20;font-size:27px;font-weight:850}.password-error-panel h2{margin:0 0 10px;color:var(--blue-dark);font-size:21px;line-height:1.25}.password-error-panel p{margin:0 0 21px;padding:13px;border:1px solid #f0d3c8;border-radius:10px;background:#fff9f6;color:#536574;font-size:13px;line-height:1.55;white-space:pre-line}.password-error-panel button{width:100%;height:49px;font-weight:800}
.user-delete-dialog{width:min(calc(100% - 38px),400px);border:0;border-radius:20px;padding:0;color:var(--ink);box-shadow:0 26px 70px #0c2e4666}.user-delete-dialog::backdrop{background:#0c263a80;backdrop-filter:blur(3px)}.user-delete-panel{padding:28px 24px 24px;text-align:center}.user-delete-icon{display:grid;place-items:center;width:52px;height:52px;margin:0 auto 15px;border-radius:50%;background:#fff0ed;color:#b43d2c;font-size:27px;font-weight:850}.user-delete-panel h2{margin:0 0 10px;color:var(--blue-dark);font-size:21px}.user-delete-panel p{margin:0 0 22px;color:#536574;font-size:13px;line-height:1.55;white-space:pre-line}.user-delete-actions{display:grid;grid-template-columns:1fr 1fr;gap:9px}.user-delete-actions button{min-height:48px;border-radius:9px;font-weight:800}.user-delete-actions #cancelUserDelete{border:1px solid #bfd2df;background:#f4f8fb;color:var(--blue-dark)}.user-delete-actions #confirmUserDelete{border:0;background:#b43d2c;color:#fff}@media(max-width:380px){.user-delete-actions{grid-template-columns:1fr}}
.password-send-icon{background:#eaf3f9;color:#043866}.user-delete-actions #cancelPasswordSend{border:1px solid #bfd2df;background:#f4f8fb;color:var(--blue-dark)}.user-delete-actions #confirmPasswordSend{border:0;background:#043866;color:#fff}
.user-delete-actions .entity-cancel{border:1px solid #bfd2df;background:#f4f8fb;color:var(--blue-dark)}.user-delete-actions .entity-confirm{border:0;background:#b43d2c;color:#fff}
.user-delete-actions.admin-required-actions{grid-template-columns:minmax(170px,230px);justify-content:center}.user-delete-actions.admin-required-actions button{border:0;background:#043866;color:#fff}
.admin-dialog{width:min(calc(100% - 24px),500px);max-height:calc(100svh - 28px);border:0;border-radius:22px;padding:0;color:var(--ink);box-shadow:0 26px 70px #0c2e4655}.admin-dialog::backdrop{background:#0c263a80;backdrop-filter:blur(3px)}.admin-panel{padding:25px;display:grid;gap:25px;max-height:calc(100svh - 28px);overflow:auto}.invite-form{display:grid;gap:14px;padding:18px;border:1px solid #dbe7ee;border-radius:16px;background:#f8fbfd}.invite-form h3,.database-section h3{margin:0;color:var(--blue-dark);font-size:18px}.invite-submit{height:54px;font-size:16px}.admin-hint{margin:0;color:var(--muted);font-size:12px;line-height:1.45}.database-section{display:grid;gap:14px}.database-heading{display:flex;align-items:end;justify-content:space-between;gap:10px}.database-heading>div{display:grid;gap:3px}.database-heading span{color:var(--muted);font-size:11px}.database-heading>b{color:var(--blue);font-size:12px}.user-list{display:grid;gap:10px;max-height:280px;overflow:auto;padding-right:3px}.user-row{display:grid;grid-template-columns:1fr auto;gap:9px;align-items:center;padding:13px 14px;border:1px solid #dce7ee;border-radius:13px;background:#fff}.user-info{min-width:0;display:grid;gap:2px}.user-info b,.user-info span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.user-info b{color:var(--blue-dark);font-size:14px}.user-info span{color:var(--muted);font-size:11px}.user-badges{display:flex;align-items:center;gap:7px;flex-wrap:wrap;justify-content:flex-end}.role-badge{padding:4px 7px;border-radius:999px;background:#e8f2f8;color:var(--blue-dark);font-size:9px;font-weight:800;text-transform:uppercase}.status-button,.delete-button{border:0;border-radius:8px;padding:7px 9px;font-size:10px;font-weight:800}.status-button.is-active{background:#e2f4e9;color:#267244}.status-button.is-inactive{background:#f8e8e8;color:#9c3b3b}.delete-button{background:#fff0f0;color:#a53232;border:1px solid #f0cccc}.delete-button:hover{background:#f9dddd}.delete-button:disabled{opacity:.35;cursor:not-allowed}.project-form{background:#f5f9fc}.project-code{font-family:Consolas,monospace;color:var(--blue);font-size:11px;font-weight:800}
.user-row[data-user-details]{cursor:pointer}.user-row[data-user-details]:hover{border-color:#aac5d6;background:#fbfdff}.user-row[data-user-details]:focus{outline:3px solid #78add044;outline-offset:1px}.user-detail-dialog{width:min(calc(100% - 28px),460px);border:0;border-radius:20px;padding:0;color:var(--ink);box-shadow:0 26px 70px #0c2e4655}.user-detail-dialog::backdrop{background:#0c263a80;backdrop-filter:blur(3px)}.user-detail-panel{padding:24px}.user-detail-content{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:20px}.user-detail-field{padding:12px;border:1px solid #dce7ee;border-radius:11px;background:#f8fbfd}.user-detail-field.wide{grid-column:1/-1}.user-detail-field span,.user-detail-field b{display:block}.user-detail-field span{margin-bottom:4px;color:var(--muted);font-size:10px}.user-detail-field b{overflow-wrap:anywhere;color:var(--blue-dark);font-size:14px}.user-detail-password b{font-family:Consolas,monospace;font-size:16px;letter-spacing:.04em}.user-detail-close{width:100%;height:48px;margin-top:18px}.user-status-active{color:#267244!important}.user-status-inactive{color:#9c3b3b!important}@media(max-width:380px){.user-detail-content{grid-template-columns:1fr}.user-detail-field.wide{grid-column:auto}}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
@media(max-width:390px){.login-screen{padding:25px 20px 18px}.brand{margin-bottom:22px}.brand img{width:min(100%,300px)}.field{height:64px}.login-form{gap:14px}h1{margin-bottom:28px}.construction-image{width:calc(100% + 40px);margin-inline:-20px}.mini-brand{width:106px;margin-left:7px}.menu-header{gap:6px;padding-inline:8px}.admin-button{padding:8px 7px}.profile-access{min-width:105px;margin-right:7px}.profile-access span{max-width:105px}.profile-panel,.admin-panel{padding:20px}}
@media(min-width:521px){body{padding:24px 0}.app-shell,.screen{min-height:calc(100svh - 48px);border-radius:26px}.toast{position:absolute}}
.profile-access{min-width:148px;margin-right:19px}.profile-access span{max-width:148px;font-size:12px}.profile-button{width:56px;height:56px}.profile-button svg{width:31px;height:31px}
@media(max-width:390px){.profile-access{min-width:106px;margin-right:7px}.profile-access span{max-width:106px;font-size:11px}.profile-button{width:50px;height:50px}.profile-button svg{width:28px;height:28px}}
.profile-button{background:rgb(4,56,102);box-shadow:0 5px 13px #04386630}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important}}
