:root{font-family:Inter,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Arial,sans-serif;color-scheme:dark;--bg:#080e16;--panel:#111c2c;--border:#26384d;--muted:#91a5bf;--text:#eff5fc;--blue:#59d9e1;--green:#32d89c;--red:#ff7a87}*{box-sizing:border-box}html{min-height:100%;background:var(--bg)}body{margin:0;color:var(--text);background:radial-gradient(ellipse 750px 360px at 45% -160px,#0b3a3e 0,transparent 80%),var(--bg);min-height:100vh}button,input{font:inherit}button{cursor:pointer}button:disabled{opacity:.5;cursor:wait}button:focus-visible,input:focus-visible{outline:2px solid #4edbe1;outline-offset:3px}.shell{max-width:1180px;padding:0 24px 45px;margin:auto}.brandbar{display:flex;align-items:center;justify-content:space-between;gap:20px;border-bottom:1px solid #1a303b;padding:9px 0 8px;margin-bottom:22px;min-height:99px}.brand-logo{width:clamp(175px,25vw,246px);height:auto;display:block;object-fit:contain;filter:drop-shadow(0 3px 18px #00ffef15)}.refresh{height:40px;width:40px;background:#122336;border:1px solid #2d4558;border-radius:12px;display:grid;place-items:center;color:#c5dbe7}.refresh svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}.stat{min-height:110px;background:linear-gradient(155deg,#142235,#0f1b29);border:1px solid var(--border);border-radius:15px;padding:20px}.stat span{display:block;font-size:12px;color:#9fb5ce}.stat strong{display:block;font-size:35px;font-weight:800;letter-spacing:-.045em;margin-top:9px;line-height:1}.stat:nth-child(3) strong{color:#ffb665}.stat:nth-child(4) strong{color:#74e4c2}.incomplete-wrap{margin-top:12px;padding:13px 17px 15px;border:1px solid #4a372a;border-radius:13px;background:linear-gradient(105deg,#251e1b,#171b22)}.incomplete-top{display:flex;gap:12px;align-items:center;justify-content:space-between;margin-bottom:10px}.incomplete-top span:first-child{color:#f2ba82;font-size:12px;font-weight:800}.incomplete-hint{color:#978878;font-size:10px}.incomplete-list{display:flex;flex-wrap:wrap;gap:8px}.incomplete-person{border:1px solid #564735;background:#30281f;color:#f2dbbd;padding:7px 10px;border-radius:8px;font-size:12px;font-weight:650}.incomplete-person strong{color:#ffca91;margin-left:6px;font-size:12px}.incomplete-all{font-size:12px;color:#5bddb8}.directory{margin-top:32px}.directory-head h1{margin:0 0 17px;font-size:23px;letter-spacing:-.04em}.search-box{display:flex;align-items:center;gap:10px;background:#111f30;border:1px solid #2b4256;border-radius:12px;padding:0 13px;height:47px;margin-bottom:15px}.search-box svg{width:18px;height:18px;fill:none;stroke:#9bb3ce;stroke-width:2;flex:none}.search-box input{width:100%;height:100%;border:0;background:transparent;outline:none;color:#fff;font-size:14px;min-width:0}.search-box input::placeholder{color:#748ba6}.groups-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;align-items:start}.group{border:1px solid #2a3c51;border-radius:15px;overflow:hidden;background:linear-gradient(180deg,#132033 0,#0e1927 100%);min-width:0}.group.empty{border-style:dashed}.group-head{display:flex;align-items:center;justify-content:space-between;padding:17px 16px 14px;gap:10px}.group-identity{display:flex;align-items:center;gap:10px;min-width:0}.avatar{display:grid;place-items:center;flex:none;background:linear-gradient(145deg,#183c46,#1a303e);border:1px solid #356b71;border-radius:11px;height:38px;width:38px;font-size:13px;color:#a0f2ed;font-weight:850}.group-name{font-size:17px;font-weight:800;letter-spacing:-.035em;overflow-wrap:anywhere}.group-count{background:#173141;color:#a1e8df;border:1px solid #315a67;border-radius:100px;padding:6px 9px;white-space:nowrap;font-size:10px;font-weight:800}.group-count.pending{color:#ffc58b;border-color:#70553b;background:#3c2c24}.member-list{padding:0 13px}.member{border-top:1px solid #293b50;display:flex;align-items:center;gap:8px;min-height:61px;padding:8px 5px}.member.complete{background:linear-gradient(90deg,#0c4938a8,#0f2f2e8a);border-left:3px solid var(--green);padding-left:7px;border-radius:7px}.member-info{flex:1;min-width:0}.member-name{font-size:13px;font-weight:750;overflow-wrap:anywhere}.member-id{font-size:11px;color:#9ab2c9;margin-top:4px;font-variant-numeric:tabular-nums}.member.complete .member-name{color:#8bf6c9}.actions{display:flex;gap:5px;align-items:center;flex-shrink:0}.icon-btn{height:34px;min-width:34px;padding:0 6px;border:1px solid #30475e;border-radius:9px;display:flex;align-items:center;justify-content:center;gap:3px;background:#1b3044;color:#c5dcec}.icon-btn svg{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round}.icon-btn small{font-size:10px;font-variant-numeric:tabular-nums;font-weight:800;color:#bfd6e9}.icon-btn.has-media{color:#6af5bd;border-color:#287d63;background:#124337}.icon-btn.has-media small{color:#8fffd5}.icon-btn.delete{color:#ec9ca1;background:#302430;border-color:#4e3540}.icon-btn.upload{color:#bbdfff}.add{display:flex;align-items:center;justify-content:center;gap:8px;width:calc(100% - 26px);margin:0 13px 13px;border:1px dashed #496a86;border-radius:10px;background:#192f43;color:#b4e8ed;padding:12px;font-size:12px;font-weight:750}.add span{font-size:19px;line-height:.7}.no-members{font-size:12px;padding:22px 7px;text-align:center;border-top:1px solid #293b50;color:#829db5}.empty-result{text-align:center;font-size:13px;color:var(--muted);padding:30px}.modal{width:min(96vw,460px);max-height:90vh;border-radius:17px;border:1px solid #41617b;background:#122235;color:#edf7ff;padding:0;box-shadow:0 30px 100px #000a}.modal.media-modal{width:min(96vw,670px)}.modal::backdrop{background:#000c;backdrop-filter:blur(3px)}.modal-inner{padding:21px;max-height:88vh;overflow-y:auto}.modal-titlebar{display:flex;justify-content:space-between;gap:12px;align-items:start;margin-bottom:19px}.modal-titlebar h2{font-size:22px;margin:5px 0 0}.eyebrow{font-size:10px;color:#68dbdf;letter-spacing:.15em;font-weight:800}.modal-titlebar small{font-size:12px;color:#a8bbd0}.close{background:#1b3144;color:#dceef8;border:1px solid #3b596e;border-radius:10px;width:34px;height:34px;font-size:24px;line-height:1}.field{display:block;font-size:12px;font-weight:750;color:#b5cbe0;margin:15px 0}.field input,.login-card input{display:block;width:100%;margin-top:8px;background:#0d1c2b;color:#fff;border:1px solid #34516a;border-radius:9px;font-size:16px;padding:12px}.modal-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:19px}.secondary,.primary{border-radius:10px;padding:10px 14px;font-size:13px;font-weight:800}.secondary{background:#22374b;color:#daecf8;border:1px solid #456079}.primary{background:linear-gradient(120deg,#00a4a7,#1679a8);border:1px solid #2ec8c9;color:#f4ffff}.error{color:#ffc3c9;background:#402733;border:1px solid #975668;padding:11px;border-radius:8px;font-size:12px}.upload-box{display:flex;flex-direction:column;align-items:center;text-align:center;gap:7px;cursor:pointer;border:1px dashed #426f87;border-radius:12px;padding:18px;color:#e5f6fe;background:#192e42}.upload-box strong{font-size:13px}.upload-box small{font-size:11px;color:#9bb4ce}.upload-symbol{background:#27536a;color:#9ae9ef;border-radius:10px;font-size:27px;width:44px;height:44px;display:grid;place-items:center}.progress-text{font-size:12px;color:#81f6c8;margin:11px 0;line-height:1.45;min-height:15px}.media-gallery{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.media-item{background:#0d1c2b;border:1px solid #314c61;border-radius:11px;padding:9px;min-width:0}.media-item img,.media-item video{display:block;width:100%;height:185px;object-fit:contain;background:#08121d;border-radius:7px}.media-name{font-size:11px;color:#b9d0de;margin-top:8px;word-break:break-word}.media-kind{font-size:10px;color:#7bd6cd;margin-top:5px}.toast{position:fixed;bottom:14px;left:14px;right:14px;margin:auto;max-width:620px;background:#254159;border:1px solid #517c96;border-radius:12px;color:#edfaff;z-index:40;padding:13px;font-size:13px;box-shadow:0 10px 35px #0008}.toast[hidden]{display:none}.login-cover{position:fixed;inset:0;background:#07111df7;z-index:50;display:grid;place-items:center;padding:16px}.login-cover[hidden]{display:none}.login-card{max-width:370px;width:100%;background:#132337;border:1px solid #2b5560;border-radius:18px;padding:21px;display:grid;gap:11px}.login-card img{width:200px;height:auto;justify-self:center}.login-card h2{margin:0;font-size:20px}.login-card p{margin:0;color:var(--muted);font-size:12px;line-height:1.5}.login-card button{width:100%;padding:13px}.login-card input{margin-top:0}.hidden{display:none!important}@media(min-width:981px){.groups-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:750px){.shell{padding:0 13px 30px}.brandbar{min-height:82px}.stats{gap:8px}.stat{padding:14px 11px;min-height:88px;border-radius:12px}.stat strong{font-size:29px}.stat span{font-size:10px}.directory{margin-top:25px}.groups-grid{grid-template-columns:1fr}.brand-logo{width:183px}.media-item img,.media-item video{height:150px}}@media(max-width:390px){.shell{padding:0 9px 30px}.stat{padding:11px 8px}.stat strong{font-size:25px}.stat span{font-size:9px}.actions{gap:3px}.icon-btn{min-width:29px;height:32px;padding:0 4px}.icon-btn svg{width:14px;height:14px}.icon-btn small{font-size:9px}.member-name{font-size:12px}.group-head{padding:14px 12px}.member-list{padding:0 9px}.media-gallery{grid-template-columns:1fr}}

/* Member notes and flags */
.member-block{border-top:1px solid #293b50}.member-block .member{border-top:0;flex-wrap:wrap;gap:7px}.member-block .member-info{flex-basis:100px}.member.flagged{box-shadow:inset 3px 0 #ffb36b}.suspicious-toggle{display:flex;align-items:center;gap:5px;font-size:11px;color:#f8b98a;white-space:nowrap;padding:2px 3px;cursor:pointer;user-select:none}.suspicious-toggle input{width:17px;height:17px;accent-color:#e59852;cursor:pointer}.has-comments{border-color:#5376a1;color:#8dcbff}.has-comments small{color:#abddff}.comment-panel{margin:4px 4px 12px;border:1px solid #37516b;background:#0a1725;padding:11px;border-radius:11px}.comment-panel[hidden]{display:none}.comment-list{max-height:280px;overflow-y:auto;display:grid;gap:8px}.comment-entry{padding:9px 11px;border-radius:8px;background:#162a40;border:1px solid #29455f;font-size:12px;line-height:1.5;overflow-wrap:anywhere}.comment-entry time{display:block;color:#849eb8;font-size:10px;margin-top:5px}.comment-hint{font-size:11px;color:#9bb0c6;margin:8px}.comment-form{display:flex;gap:7px;margin-top:10px}.comment-form input{min-width:0;flex:1;border:1px solid #385873;background:#0d1e30;border-radius:9px;padding:10px;color:#fff;font-size:13px}.comment-form button{border:1px solid #17a3ac;background:#137b89;color:white;border-radius:9px;font-size:12px;font-weight:750;padding:0 14px}.comment-form button:disabled{opacity:.5}@media(max-width:520px){.member-block .member-info{flex-basis:calc(100% - 60px)}.member-block .actions{margin-left:auto}.suspicious-toggle{margin-right:auto}.member-block .member{padding-top:11px;padding-bottom:11px}.member-block .member-name{font-size:13px}}

/* V5: individual media controls, sized for touch screens. */
.media-item-header{display:flex;gap:6px;align-items:center;justify-content:space-between;margin-top:8px}
.media-item-header .media-name{flex:1;min-width:0;margin:0;overflow-wrap:anywhere}
.media-delete{display:inline-flex;align-items:center;justify-content:center;gap:4px;min-height:35px;padding:6px 9px;background:#3d222a;color:#ffb3bb;border:1px solid #89505c;border-radius:8px;font-size:11px;font-weight:700;flex:none}
.media-delete svg{width:15px;height:15px;fill:none;stroke:currentColor;stroke-width:1.85;stroke-linecap:round;stroke-linejoin:round}
.media-delete:hover{background:#64323f;border-color:#b96876}
.media-delete:disabled{opacity:.5}
@media(max-width:390px){.media-delete{min-height:38px}}
/* V6: Guest/admin access, responsive directory and compact reminders. */
body{background:radial-gradient(ellipse 750px 360px at 45% -160px,#073238 0,transparent 80%),#080e16}
.shell{max-width:1450px;padding:0 25px 48px}
.brandbar{min-height:95px;gap:12px}.brand-logo{width:clamp(175px,23vw,240px);height:auto;max-height:112px;object-fit:contain;filter:drop-shadow(0 1px 12px #00dac22a)}
.access-button{display:flex;align-items:center;justify-content:center;gap:9px;border-radius:12px;border:1px solid #36586b;background:#13283a;color:#d8eff5;font-size:12px;font-weight:800;min-height:43px;padding:8px 15px}
.stats{grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}.stat{min-height:96px;padding:17px 20px}.stat span{font-size:13px}.stat strong{margin-top:8px}
.directory-head{display:flex;align-items:center;justify-content:space-between;gap:15px;margin-bottom:15px}.directory-head h1{margin:0}.leader-add{min-height:41px;background:#184539;border:1px solid #2b8d71;border-radius:10px;color:#a8ffe0;padding:9px 13px;font-size:12px;font-weight:800}
.directory-filters{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px;margin-bottom:17px;align-items:center}.search-box{margin:0}
.suspicious-filter{display:flex;align-items:center;gap:8px;justify-content:center;height:47px;background:#2b241f;color:#edc199;border:1px solid #6b4b31;border-radius:12px;padding:0 16px;font-size:13px;font-weight:750}.suspicious-filter.active{background:#754226;border-color:#f3a964;color:#fff}.suspicious-filter span{min-width:24px;border-radius:12px;background:#563c29;padding:3px 5px}
.groups-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;align-items:start}.group{min-width:0}.group-head{min-height:68px}.member{display:grid!important;grid-template-columns:minmax(0,1fr) auto;grid-template-areas:'info flag' 'actions actions';align-items:center;gap:7px 12px;padding:12px 8px!important}.member-info{grid-area:info;min-width:0}.actions{grid-area:actions;justify-content:flex-start;flex-wrap:wrap;gap:8px!important}.suspicious-toggle{grid-area:flag;justify-self:end}.member-name{font-size:14px}.member-id{margin:0;color:#b0c3d7}.id-line{display:flex;align-items:center;gap:9px;flex-wrap:wrap;margin-top:6px}.copy-id{display:inline-flex;align-items:center;gap:4px;background:#193547;border:1px solid #2b6881;border-radius:6px;color:#a7e3f0;padding:3px 7px;min-height:25px;font-size:10px;font-weight:750}.copy-id svg{height:13px;width:13px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.icon-btn{min-width:43px;height:35px}.icon-btn svg{height:17px;width:17px}.icon-btn small{font-size:11px}
.reminder-panel{margin-top:12px;padding:11px;border-radius:10px;border:1px solid #3c5c72;background:#112638}.reminder-label{font-size:11px;color:#8be8e1;font-weight:800;margin-bottom:9px}.reminder-fields{display:flex;align-items:center;flex-wrap:wrap;gap:8px;font-size:12px;color:#d6e8f4}.reminder-fields label{display:flex;align-items:center;gap:7px}.reminder-fields input{min-height:35px;border:1px solid #3a6078;color:#f5fcff;background:#0b1b2b;border-radius:8px;text-align:center;padding:6px;max-width:75px;font-size:14px}.reminder-time{max-width:82px!important}.reminder-day{max-width:60px!important}.reminder-buttons{display:flex;flex-wrap:wrap;gap:7px;margin-top:11px}.reminder-buttons button{background:#174a56;border:1px solid #30808d;border-radius:8px;padding:8px 10px;color:#e4fcff;font-size:11px;font-weight:750;min-height:35px}.reminder-buttons button:active{background:#216877}.login-help{color:#9cbbcf;font-size:13px;line-height:1.55}
.welcome-cover{position:fixed;inset:0;z-index:100;display:grid;place-items:center;background:#030810ef;padding:20px;backdrop-filter:blur(4px)}.welcome-cover[hidden]{display:none}.welcome-card{max-width:450px;width:100%;border:1px solid #2b505d;border-radius:22px;background:#101e2b;padding:26px;display:flex;flex-direction:column;align-items:center;gap:15px;box-shadow:0 25px 90px #0009}.welcome-card img{width:min(100%,280px);height:auto}.welcome-card h1{font-size:24px;margin:5px 0 0}.welcome-card p{font-size:13px;line-height:1.65;color:#a7c0ce;text-align:center;margin:0 0 6px}.guest-large{width:100%;min-height:62px;border-radius:13px;background:linear-gradient(130deg,#079699,#1866a4);color:white;border:1px solid #19ced1;font-size:16px;font-weight:800;padding:14px}.admin-entry{width:100%;min-height:48px;border-radius:12px;background:#1b3040;color:#ccedf0;border:1px solid #42677c;font-size:13px;font-weight:800}
@media (min-width:1450px){.groups-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media (max-width:900px){.groups-grid{grid-template-columns:1fr 1fr}.shell{padding-left:16px;padding-right:16px}}
@media (max-width:750px){.groups-grid{grid-template-columns:1fr}.stats{gap:8px}.stat{min-height:83px;padding:12px}.stat span{font-size:10px}.stat strong{font-size:28px}.shell{padding:0 12px 34px}.brand-logo{width:174px}.access-button{min-height:40px;padding:7px 10px}.directory-head h1{font-size:20px}.group-head{min-height:60px}.member{grid-template-columns:minmax(0,1fr) auto;gap:7px 8px!important}.actions{gap:6px!important}}
@media (max-width:420px){.shell{padding-left:9px;padding-right:9px}.directory-filters{grid-template-columns:minmax(0,1fr) auto;gap:6px}.suspicious-filter{height:45px;padding:0 9px;font-size:11px;gap:4px}.search-box{height:45px;padding:0 8px}.search-box input{font-size:12px}.leader-add{padding:8px 10px;font-size:11px}.stat span{font-size:9.5px}.stat strong{font-size:25px}.suspicious-toggle{font-size:10px}.member-name{font-size:13px}.icon-btn{min-width:37px;height:34px}}

/* V7: Individual comment removal controls (admins only) */
.comment-entry-layout{display:flex;gap:9px;align-items:flex-start;justify-content:space-between}
.comment-entry-body{flex:1;min-width:0;white-space:pre-wrap;overflow-wrap:anywhere}
.comment-delete{flex:none;display:grid;place-items:center;height:30px;width:30px;padding:6px;border:1px solid #694451;border-radius:8px;background:#39212b;color:#ffa3ac;cursor:pointer}
.comment-delete svg{height:15px;width:15px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.comment-delete:hover,.comment-delete:focus-visible{background:#62313d;border-color:#cf6778;color:#fff}
.comment-delete:disabled{opacity:.4;cursor:wait}


/* V8 — live per-member photo, video and missing-media dashboard. */
.stats{grid-template-columns:repeat(5,minmax(0,1fr));}
.stat{min-width:0;}
.stat-detail{display:block;margin-top:12px;color:#9ab5c9;font-size:11px;line-height:1.35;overflow-wrap:anywhere;font-weight:550;}
.stat-photo strong,.stat-video strong{font-size:clamp(22px,2.5vw,31px);color:#82e9c4;white-space:nowrap;letter-spacing:-.045em;}
.stat-video strong{color:#87c9ff;}
.stat-files .stat-detail{color:#f1c28a;}
@media (max-width:1050px) and (min-width:751px){.stats{grid-template-columns:repeat(3,minmax(0,1fr));}.stat-photo,.stat-video{min-height:93px;}}
@media (max-width:750px){
 .stats{grid-template-columns:repeat(6,minmax(0,1fr));gap:8px;}
 .stats .stat{grid-column:span 2;min-width:0;}
 .stats .stat-photo,.stats .stat-video{grid-column:span 3;}
 .stat-detail{font-size:10px;margin-top:8px;}
 .stat-photo strong,.stat-video strong{font-size:clamp(23px,5.4vw,30px);}
}
@media (max-width:390px){
 .stat-detail{font-size:9px;line-height:1.35;}
 .stat-photo strong,.stat-video strong{font-size:23px;}
}


/* V9: standalone PWA, touch UI, safe-area padding and install-only launch animation. */
/* V10: The *document* scrolls. Hide scrollbar chrome, never hide or lock overflow-y.
   overflow-x:clip (unlike hidden) does not create a competing scroll container on iOS. */
html{width:100%;max-width:100%;height:auto;overflow-x:clip;overflow-y:auto;scrollbar-width:none;-webkit-text-size-adjust:100%;-webkit-overflow-scrolling:touch;}
body{width:100%;max-width:100%;height:auto;min-height:100vh;min-height:100dvh;overflow-x:clip;overflow-y:visible;overscroll-behavior-y:auto;touch-action:pan-y;}
html::-webkit-scrollbar,body::-webkit-scrollbar{display:none!important;width:0!important;height:0!important;}
/* Individual galleries and dialogs remain scrollable, with hidden scrollbars. */
.modal-inner,.welcome-cover,.comment-panel{scrollbar-width:none;-webkit-overflow-scrolling:touch;}
.modal-inner::-webkit-scrollbar,.welcome-cover::-webkit-scrollbar,.comment-panel::-webkit-scrollbar{display:none;width:0;height:0;}
.shell,main,.directory,.groups-grid,.group,.member-list{touch-action:pan-y;}
/* Prevent any transparent launch layer from blocking touches after exit. */
.launch-splash.done,.launch-splash[hidden]{pointer-events:none!important;}
body,body *{-webkit-tap-highlight-color:transparent;}
/* Ordinary interface text is not selectable. Keep editing and form selection fully functional. */
.shell,.brandbar,.stats,.group,.comment-entry,.modal-titlebar,.photo-controls,.welcome-cover,
button,label:not(.field),.toast,.directory-head{-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;}
input,textarea,select,[contenteditable="true"],.field,.field input,.comment-form input{
  -webkit-user-select:text;user-select:text;-webkit-touch-callout:default;touch-action:manipulation;
}
button,.copy-id,.icon-btn,.access-button,.suspicious-filter,.media-delete,.comment-delete,.media-item img{
  touch-action:manipulation;
}
.shell{padding-bottom:calc(48px + env(safe-area-inset-bottom,0px));}
.brandbar{padding-top:calc(9px + env(safe-area-inset-top,0px));}
.modal{max-height:calc(100dvh - 22px);}
.modal-inner{max-height:calc(100dvh - 34px);overscroll-behavior-y:contain;}
.welcome-cover{padding-top:calc(20px + env(safe-area-inset-top,0px));padding-bottom:calc(20px + env(safe-area-inset-bottom,0px));}
.toast{bottom:calc(14px + env(safe-area-inset-bottom,0px));}
.offline-notice,.update-notice{position:relative;z-index:20;margin:0 auto;padding:10px max(14px,env(safe-area-inset-right,0px));background:#392a20;border-bottom:1px solid #a66b35;color:#ffe0bc;font-size:12px;text-align:center;line-height:1.45;}
.offline-notice[hidden],.update-notice[hidden]{display:none;}
.update-notice{display:flex;align-items:center;justify-content:center;gap:14px;background:#113c47;border-bottom:1px solid #388796;color:#c4f7fb;flex-wrap:wrap;}
.update-notice button{font-size:12px;background:#185c69;color:white;border:1px solid #39a6b0;border-radius:7px;padding:6px 11px;margin-left:5px;}
/* V10: DF's original transparent logo is the animation itself. Only displayed in standalone app. */

/* V12: seamless single-logo installed-app opening; browser visits never see the splash. */
.launch-splash{display:none;position:fixed;inset:0;z-index:200;align-items:center;justify-content:center;background:#080e16;overflow:hidden;opacity:1;transition:opacity .18s ease;pointer-events:auto}
html.defender-installed:not(.defender-skip-launch) .launch-splash{display:flex}
.launch-splash.done{opacity:0;pointer-events:none}
.launch-logo{display:block;width:min(84vw,440px);height:auto;object-fit:contain;opacity:0;transform:scale(.98);filter:blur(5px);background:none;border:none;box-shadow:none;backface-visibility:hidden;transform-origin:center center;will-change:opacity,transform,filter}
/* One continuous premium 2s fade and glow of the entire transparent DF artwork. */
@keyframes defenderCinematic{
  0%{opacity:0;transform:scale(.98);filter:blur(7px) brightness(.85)}
  22%{opacity:.36;transform:scale(.985);filter:blur(3px) brightness(1)}
  58%{opacity:1;transform:scale(1.012);filter:blur(0) brightness(1.22) drop-shadow(0 0 14px rgba(20,230,236,.36))}
  82%{opacity:1;transform:scale(1);filter:blur(0) brightness(1.12) drop-shadow(0 0 11px rgba(20,230,236,.20))}
  100%{opacity:1;transform:scale(1);filter:blur(0) brightness(1) drop-shadow(0 0 6px rgba(20,230,236,.12))}
}
.launch-splash.play .launch-logo{animation:defenderCinematic 1.80s cubic-bezier(.22,.64,.28,1) both}
@media(prefers-reduced-motion:reduce){.launch-splash.play .launch-logo{animation:none;opacity:1;filter:none;transform:none}.launch-splash{transition:none}}

.photo-modal{border:0;padding:0;background:#080f19;color:#fff;width:min(98vw,1100px);height:min(94dvh,900px);max-width:100vw;max-height:100dvh;border-radius:14px;overflow:hidden;}
.photo-modal::backdrop{background:#010409ed;}
.photo-viewer-wrap{height:100%;display:flex;flex-direction:column;}
.photo-controls{flex:none;display:flex;justify-content:space-between;align-items:center;gap:6px;padding:10px 12px;border-bottom:1px solid #264452;}
.photo-controls span{max-width:40%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:12px;color:#e1eef8;}
.photo-controls>div{display:flex;align-items:center;gap:7px;}
.photo-controls button{width:38px;height:36px;background:#173449;border:1px solid #2e6882;border-radius:8px;color:#efffff;font-size:17px;}
.photo-zoom-area{position:relative;flex:1;min-height:0;overflow:hidden;display:flex;align-items:center;justify-content:center;background:radial-gradient(ellipse at center,#11263b,#050a0f);touch-action:none;overscroll-behavior:contain;cursor:grab;}
.photo-zoom-area:active{cursor:grabbing;}
.photo-zoom-area img{display:block;width:100%;height:100%;object-fit:contain;pointer-events:none;transform-origin:center center;will-change:transform;-webkit-user-select:none;user-select:none;}
.photo-zoom-hint{text-align:center;font-size:11px;color:#9daebd;margin:7px 4px 9px;}
@media(max-width:550px){.photo-modal{width:100vw;height:100dvh;border-radius:0;}.photo-controls{padding-top:calc(8px + env(safe-area-inset-top,0px));}.photo-zoom-hint{padding-bottom:env(safe-area-inset-bottom,0px);}}

.stat-files .stat-detail{display:none!important;}

/* Disable native Chrome pull-to-refresh and bounce, WITHOUT locking the scrollport. */
html{overscroll-behavior-y:none!important;scrollbar-width:none!important;overflow-y:auto!important;-webkit-overflow-scrolling:touch}
body{overscroll-behavior-y:none!important;touch-action:pan-y;overflow-y:visible!important}
.comment-list,.modal-inner,.media-gallery{overscroll-behavior-y:contain}
html::-webkit-scrollbar,body::-webkit-scrollbar{display:none!important;width:0!important;height:0!important}

/* V13: filters + compact expandable group cards */
.quick-filters{display:flex;gap:8px;flex-wrap:wrap;min-width:0;align-items:center}
.media-filter{white-space:nowrap;min-height:39px}
.media-filter.active{background:#124353;border-color:#32cada;color:#dfffff}
.directory-filters{align-items:stretch;flex-wrap:wrap}
.group{overflow:hidden}
.group-head{padding:0;display:block}
.group-toggle-row{display:flex;align-items:center;gap:9px;padding:14px 13px;min-width:0}
.group-collapse{min-width:0;flex:1;background:transparent;color:inherit;border:0;padding:0;text-align:left;display:flex;align-items:center;justify-content:space-between;gap:12px}
.group-collapse:focus-visible{outline:2px solid var(--blue);border-radius:8px;outline-offset:4px}
.group-collapse .group-identity{display:flex;align-items:center;gap:10px}
.group-chevron{display:inline-grid;place-items:center;transform:rotate(0deg);font-size:20px;color:#98cad4;transition:transform .16s ease;flex:none}
.group.open .group-chevron{transform:rotate(90deg)}
.group-archive{flex:none;border:1px solid #81434c;border-radius:9px;background:#38222c;color:#ffabb0;width:35px;height:35px;display:grid;place-items:center;padding:5px}
.group-archive svg{width:16px;height:16px;stroke:currentColor;fill:none;stroke-width:1.9;stroke-linecap:round}
.group-head-summary{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:6px;padding:0 13px 12px}
.group-summary-chip{background:#102638;border:1px solid #2c4557;border-radius:9px;padding:8px 5px;text-align:center;min-width:0}
.group-summary-chip span{display:block;font-size:10px;color:#a6c3d0;white-space:nowrap}
.group-summary-chip b{display:block;margin-top:3px;font-size:13px;color:#effaff;font-variant-numeric:tabular-nums}
.group-summary-chip.flag b{color:#ffc58d}
.group-match-count{padding:0 13px 11px;color:#7bd4d9;font-size:11px}
.group-content[hidden]{display:none!important}
.group.open .group-head-summary{border-bottom:1px solid #283b50}
@media(max-width:750px){.quick-filters{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));width:100%}.quick-filters button{font-size:11px;white-space:normal;text-align:center;padding:9px 5px}.directory-filters .search-box{width:100%}}
@media(max-width:360px){.group-head-summary{gap:4px;padding-inline:8px}.group-summary-chip{padding-inline:2px}.group-summary-chip span{font-size:9px}.group-summary-chip b{font-size:12px}}

/* Launch V13: only the branded image animates, never a background rectangle. */
.launch-splash{background:#080e16!important}
.launch-logo{filter:none;background:transparent!important}
@keyframes defenderCinematicV13 {
  0%{opacity:0;transform:translateY(12px) scale(.91);filter:blur(11px) brightness(.72)}
  36%{opacity:.85;transform:translateY(0) scale(.98);filter:blur(2px) brightness(1.07) drop-shadow(0 0 16px rgba(27,236,241,.17))}
  72%{opacity:1;transform:scale(1.017);filter:blur(0) brightness(1.19) drop-shadow(0 0 25px rgba(20,231,240,.29))}
  100%{opacity:1;transform:scale(1);filter:brightness(1) drop-shadow(0 0 11px rgba(20,233,241,.12))}
}
.launch-splash.play .launch-logo{animation:defenderCinematicV13 2.6s cubic-bezier(.16,.72,.23,1) both}
@media(prefers-reduced-motion:reduce){.launch-splash.play .launch-logo{animation:none!important}}

/* Keep search usable at small viewport widths with four filters. */
.directory-filters{display:flex!important;flex-direction:column;align-items:stretch;width:100%;gap:9px}
.directory-filters .search-box{width:100%;min-width:0;flex:none}
.quick-filters{width:100%;min-width:0}
@media(min-width:751px){.quick-filters{display:flex;flex-wrap:wrap}}
