:root{font-family:Inter,Segoe UI,system-ui,sans-serif;color:#172b27;background:#f3f7f6;--green:#075e54;--green2:#128c7e;--bright:#25d366;--line:#dfe9e6;--muted:#6b7f7a;--danger:#bd2c2c}*{box-sizing:border-box}[hidden]{display:none!important}body{margin:0;min-height:100vh}button,input{font:inherit}button{cursor:pointer}.primary{border:0;border-radius:10px;padding:11px 17px;background:var(--green2);color:#fff;font-weight:750}.primary:hover{background:var(--green)}label{display:block;color:#455c56;font-size:13px;font-weight:700}input{width:100%;margin-top:6px;padding:11px 12px;border:1px solid #cfded9;border-radius:9px;outline:none}input:focus{border-color:var(--green2);box-shadow:0 0 0 3px #128c7e18}.error{color:var(--danger);min-height:18px}.admin-login{min-height:100vh;display:grid;place-items:center;padding:20px;background:linear-gradient(180deg,var(--green) 0 42%,#eaf1ef 42%)}.login-card{width:min(420px,100%);background:#fff;border-radius:22px;padding:34px;box-shadow:0 18px 55px #001b1730}.login-card img{width:72px}.login-card h1{margin:14px 0 2px;color:var(--green);font-size:34px}.login-card>p{color:var(--muted);margin:0 0 22px}.login-card label{margin:14px 0}.login-card .primary{width:100%;margin-top:8px}.login-card a{display:block;text-align:center;color:var(--green);text-decoration:none;font-weight:650}
#admin-app{min-height:100vh;display:grid;grid-template-columns:270px 1fr}aside{position:fixed;inset:0 auto 0 0;width:270px;display:flex;flex-direction:column;background:#073f39;color:#fff;padding:22px 15px;z-index:5}.admin-brand{display:flex;align-items:center;gap:12px;padding:4px 9px 26px}.admin-brand img{width:47px;height:47px;border-radius:50%;background:#d9fdd3}.admin-brand span{display:flex;flex-direction:column}.admin-brand strong{font-size:21px}.admin-brand small{color:#b9d6d1;margin-top:2px}nav{display:flex;flex-direction:column;gap:5px}nav button,.logout{display:flex;align-items:center;gap:12px;border:0;border-radius:10px;padding:12px 14px;background:transparent;color:#c9ddd9;text-align:left;font-weight:650}nav button span{width:22px;font-size:20px;text-align:center}nav button:hover,nav button.active{background:#ffffff18;color:#fff}.privacy-box{margin:auto 7px 16px;padding:14px;border:1px solid #ffffff24;border-radius:12px;background:#ffffff0b}.privacy-box strong,.privacy-box small{display:block}.privacy-box small{color:#bad3ce;font-size:12px;line-height:1.5;margin-top:7px}.logout{width:100%}.workspace{grid-column:2;min-width:0}.workspace>header{height:86px;display:flex;align-items:center;gap:14px;padding:15px 32px;background:#fff;border-bottom:1px solid var(--line);position:sticky;top:0;z-index:3}.workspace>header h1{margin:0;font-size:25px}.workspace>header p{margin:3px 0 0;color:var(--muted);font-size:13px}.workspace>header div{flex:1}.owner-pill{padding:8px 12px;border-radius:999px;background:#e2f7ef;color:var(--green);font-weight:750}.owner-pill::first-letter{color:var(--bright)}#admin-menu{display:none;border:0;background:transparent;font-size:24px}.page{display:none;padding:28px 32px}.page.active{display:block}.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-bottom:20px}.stats article{position:relative;background:#fff;border:1px solid var(--line);border-radius:15px;padding:20px;box-shadow:0 3px 14px #073f3908}.stats small,.stats strong{display:block}.stats small{color:var(--muted);font-weight:650}.stats strong{font-size:30px;margin-top:8px;color:#123a33}.stat-icon{position:absolute;right:17px;top:17px;width:38px;height:38px;display:grid;place-items:center;border-radius:11px;background:#e2f7ef;color:var(--green);font-size:20px}.grid-two{display:grid;grid-template-columns:1.15fr .85fr;gap:20px}.panel{background:#fff;border:1px solid var(--line);border-radius:15px;padding:20px;box-shadow:0 3px 14px #073f3908}.panel h2{margin:0 0 18px;font-size:18px}.panel-title{display:flex;align-items:center}.panel-title h2{flex:1}.panel-title button,.page-actions button:not(.primary){border:0;background:transparent;color:var(--green);font-weight:700}.recent-row{display:flex;align-items:center;gap:11px;padding:11px 0;border-bottom:1px solid var(--line)}.recent-row:last-child{border:0}.user-avatar{width:40px;height:40px;display:grid;place-items:center;border-radius:50%;background:linear-gradient(135deg,var(--green2),var(--bright));color:#fff;font-weight:800}.recent-row div{flex:1}.recent-row strong,.recent-row small{display:block}.recent-row small{color:var(--muted);margin-top:2px}.security-summary{display:flex;gap:12px;padding:15px;border-radius:12px;background:#e8f8f1}.security-summary>span{font-size:25px;color:var(--green2)}.security-summary strong{color:var(--green)}.security-summary p{margin:5px 0;color:#536c66;font-size:13px;line-height:1.5}.storage-line{display:flex;justify-content:space-between;padding:12px 2px;border-bottom:1px solid var(--line)}.page-actions{display:flex;align-items:center;margin-bottom:18px}.page-actions>div{flex:1}.page-actions h2{margin:0;font-size:24px}.page-actions p{margin:5px 0 0;color:var(--muted)}.create-user{margin-bottom:18px}.create-user form{display:grid;grid-template-columns:1fr 1fr 1fr auto;align-items:end;gap:12px}.create-user form>div{display:flex;gap:7px}.create-user form>div button:not(.primary){border:0;background:#edf2f0;border-radius:9px}.create-user .error{grid-column:1/-1;margin:0}.table-panel{padding:0;overflow:hidden}.table-search{padding:15px;border-bottom:1px solid var(--line)}.table-search input{max-width:360px;margin:0}.table-wrap{overflow:auto}table{width:100%;border-collapse:collapse;text-align:left}th{padding:12px 16px;background:#f7faf9;color:#587069;font-size:12px;text-transform:uppercase;letter-spacing:.04em}td{padding:14px 16px;border-top:1px solid var(--line);white-space:nowrap}.user-cell{display:flex;align-items:center;gap:10px}.user-cell strong,.user-cell small{display:block}.user-cell small{color:var(--muted)}.badge{display:inline-block;padding:5px 9px;border-radius:999px;font-size:12px;font-weight:750;background:#edf2f0;color:#536c66}.badge.active{background:#dff7ec;color:#08714f}.badge.admin{background:#e4f0ff;color:#235e99}.row-action{border:1px solid #cbdad5;border-radius:8px;background:#fff;padding:7px 10px;color:var(--green);font-weight:700}.row-action.danger{color:var(--danger)}.settings-panel{max-width:720px}.settings-panel label{margin-bottom:17px}.settings-panel button{margin-right:12px}#settings-result{color:var(--green);font-weight:650}.status-dot{width:10px;height:10px;border-radius:50%;background:var(--bright);position:absolute;right:21px;top:22px;box-shadow:0 0 0 5px #25d36620}.system-note{max-width:850px}.system-note p{color:var(--muted);line-height:1.6}.system-note a{color:var(--green);font-weight:700}#admin-toast{position:fixed;bottom:25px;left:calc(50% + 135px);transform:translateX(-50%);background:#172b27;color:#fff;padding:11px 18px;border-radius:999px;z-index:10}
@media(max-width:1000px){.stats{grid-template-columns:repeat(2,1fr)}.grid-two{grid-template-columns:1fr}.create-user form{grid-template-columns:1fr 1fr}.create-user form>div{grid-column:1/-1}}@media(max-width:720px){#admin-app{display:block}aside{transform:translateX(-105%);transition:.2s}aside.open{transform:translateX(0)}.workspace{grid-column:auto}.workspace>header{height:76px;padding:12px 15px}#admin-menu{display:block}.page{padding:18px 14px}.stats{grid-template-columns:1fr 1fr;gap:10px}.stats article{padding:15px}.stats strong{font-size:23px}.owner-pill{display:none}.create-user form{grid-template-columns:1fr}.create-user form>div{grid-column:auto}.page-actions{align-items:flex-start;gap:10px}.page-actions h2{font-size:21px}#admin-toast{left:50%;max-width:90%;white-space:nowrap}}
.login-card img{height:72px;object-fit:contain}
.storage-detail{display:block;color:var(--muted);font-size:11px;margin-top:3px}.row-actions{display:flex;gap:6px}.smtp-panel{margin:20px 0;max-width:1000px}.smtp-panel .panel-title>div{flex:1}.smtp-panel .panel-title p{margin:-10px 0 18px;color:var(--muted)}.smtp-grid{display:grid;grid-template-columns:2fr .7fr 1.3fr;gap:13px 16px;align-items:end}.smtp-check{display:flex;align-items:center;gap:8px;padding-bottom:11px}.smtp-check input{width:18px;height:18px;margin:0}.smtp-actions{display:flex;align-items:end}.smtp-test{display:flex;align-items:end;gap:10px;margin-top:22px;padding-top:18px;border-top:1px solid var(--line)}.smtp-test label{width:min(360px,100%)}.smtp-test button{border:1px solid #cbdad5;border-radius:9px;background:#fff;padding:11px 15px;color:var(--green);font-weight:750}#smtp-result{color:var(--green);font-weight:650}
@media(max-width:850px){.smtp-grid{grid-template-columns:1fr 1fr}.smtp-check,.smtp-actions{grid-column:1/-1}}@media(max-width:540px){.smtp-grid{grid-template-columns:1fr}.smtp-check,.smtp-actions{grid-column:auto}.smtp-test{display:block}.smtp-test button{margin-top:10px;width:100%}.row-actions{flex-direction:column}}
#admin-user-dialog{width:min(760px,calc(100vw - 28px));max-height:90dvh;padding:0;border:0;border-radius:18px;box-shadow:0 22px 70px #102c2745}
#admin-user-dialog::backdrop{background:#102c276b}
.admin-user-card>header{display:flex;align-items:center;padding:20px 22px;border-bottom:1px solid var(--line);background:linear-gradient(135deg,#18224d,#4059ad);color:#fff}
.admin-user-card>header div{flex:1}.admin-user-card>header h2{margin:0}.admin-user-card>header p{margin:4px 0 0;color:#dce4ff}
.admin-user-card>header button{width:42px;height:42px;border:0;border-radius:50%;background:#ffffff18;color:#fff;font-size:27px}
#admin-user-profile{padding:22px;overflow:auto;max-height:calc(90dvh - 86px)}
.admin-profile-head{display:flex;align-items:center;gap:17px}.admin-profile-head h2{margin:0 0 3px}.admin-profile-head p{margin:0 0 8px;color:var(--muted)}
.admin-profile-avatar{width:92px;height:92px;border-radius:25px;object-fit:cover}.admin-profile-avatar.fallback{display:grid;place-items:center;background:linear-gradient(135deg,#4059ad,#20c7b7);color:#fff;font-size:34px;font-weight:800}
.admin-detail-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin:22px 0}.admin-detail-grid>div{padding:14px;border:1px solid var(--line);border-radius:12px;background:#f8fafc;min-width:0}.admin-detail-grid small,.admin-detail-grid strong,.admin-detail-grid span{display:block}.admin-detail-grid small{color:var(--muted)}.admin-detail-grid strong{margin:6px 0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.admin-detail-grid span{font-size:12px;color:var(--muted)}
.admin-about{padding:14px;border-radius:12px;background:#f4f6fb}.admin-about small{color:var(--muted)}.admin-about p{margin:6px 0 0}
.admin-devices h3{margin:22px 0 8px}.admin-device{padding:12px 0;border-bottom:1px solid var(--line)}.admin-device strong,.admin-device small{display:block}.admin-device small{color:var(--muted);margin-top:4px}
.admin-danger-zone{display:flex;align-items:center;gap:18px;margin-top:22px;padding:18px;border:1px solid #efb3ae;border-radius:13px;background:#fff8f7}.admin-danger-zone>div{flex:1}.admin-danger-zone h3{margin:0 0 5px;color:#a8241b}.admin-danger-zone p{margin:0;color:#795b57;line-height:1.45}.admin-danger-zone .danger{flex:none;border-color:#d7463b;color:#b42318;background:#fff}
@media(max-width:720px){.admin-detail-grid{grid-template-columns:1fr 1fr}.admin-profile-avatar{width:76px;height:76px}.admin-user-card>header{padding-top:max(18px,env(safe-area-inset-top))}}@media(max-width:480px){.admin-detail-grid{grid-template-columns:1fr}}
.visual-settings-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px}.visual-settings-grid select{display:block;width:100%;margin-top:6px;padding:11px 12px;border:1px solid #cfded9;border-radius:9px;background:#fff;color:#172b27;font:inherit;outline:none}.visual-settings-grid select:focus{border-color:var(--green2);box-shadow:0 0 0 3px #128c7e18}.settings-hint{margin:-4px 0 18px;color:var(--muted);font-size:13px;line-height:1.5}@media(max-width:540px){.visual-settings-grid{grid-template-columns:1fr}}

/* Wishes and festivals */
.wishes-grid{align-items:start}.celebration-form{display:grid;gap:14px}.celebration-form label{display:grid;gap:7px;font-weight:800}.celebration-form input,.celebration-form select{width:100%;padding:12px 13px;border:1px solid #d5dfdc;border-radius:12px;background:#fff;font:inherit}.celebration-times{display:grid;grid-template-columns:1fr 1fr;gap:12px}.festival-presets{display:flex;flex-wrap:wrap;gap:8px}.festival-presets button{border:1px solid #cfe0db;border-radius:999px;padding:8px 12px;background:#f3faf7;font-weight:700}.birthday-list,.celebration-list{display:grid}.birthday-row,.celebration-row{display:flex;align-items:center;gap:12px;padding:13px 0;border-bottom:1px solid #e4ece9}.birthday-row>div,.celebration-row>div{display:grid;min-width:0;flex:1}.birthday-row small,.celebration-row small{color:#688078}.birthday-row button,.celebration-row button{border:0;border-radius:9px;padding:8px 11px;background:#e7f5f0;color:#075f54;font-weight:800}.celebration-row button.danger{background:#fff0ef;color:#b42318}
@media(max-width:760px){.celebration-times{grid-template-columns:1fr}.birthday-row,.celebration-row{align-items:flex-start;flex-wrap:wrap}.celebration-row>div{flex-basis:70%}}

/* Admin layout safety and visual polish. User images must never inherit their
   intrinsic dimensions inside dashboard rows. */
.workspace>header{background:#ffffffed;backdrop-filter:blur(16px);box-shadow:0 8px 28px #073f3908}
.page.active{animation:adminPageIn .22s ease-out}
.panel{box-shadow:0 12px 32px #073f390d}
.wishes-grid{grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr);gap:22px;align-items:start}
.wishes-grid>.panel{min-width:0;overflow:hidden}
.birthday-row,.celebration-row{min-width:0;overflow:hidden}
.user-avatar{overflow:hidden;flex:0 0 40px}
.user-avatar img,.birthday-row .user-avatar img,.celebration-row .user-avatar img{display:block!important;width:40px!important;height:40px!important;min-width:40px!important;max-width:40px!important;min-height:40px!important;max-height:40px!important;object-fit:cover!important;border-radius:50%!important}
.birthday-row>span:not(.user-avatar){white-space:nowrap;color:#557169;font-size:13px}
.celebration-form .primary{min-height:48px;border-radius:12px}
@keyframes adminPageIn{from{opacity:0;transform:translateY(5px)}to{opacity:1;transform:none}}
@media(max-width:980px){.wishes-grid{grid-template-columns:1fr}}
