/* Family Photos */
.ctl-ico.h-ph{background:rgba(233,200,115,.18);color:#E9C873}
.ph-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:14px 2px 4px}
.ph-title{margin:0;font-size:26px;font-weight:800;letter-spacing:-.4px;color:var(--tx)}
.ph-sub{color:var(--mut);font-size:13.5px;font-weight:600;margin-top:2px}
.ph-add{flex:none;display:inline-flex;align-items:center;gap:6px;padding:11px 16px;border-radius:14px;background:linear-gradient(180deg,#F0D489,#C9A24B);color:#1D1606;font-weight:800;font-size:15px;box-shadow:0 8px 20px rgba(201,162,75,.35);cursor:pointer;-webkit-tap-highlight-color:transparent}
.ph-add:active{transform:scale(.97)}
.ph-file{position:absolute;width:1px;height:1px;opacity:0;pointer-events:none}
.ph-albums{display:flex;gap:7px;overflow-x:auto;margin:12px -2px 12px;padding:2px 2px 4px;scrollbar-width:none}
.ph-albums::-webkit-scrollbar{display:none}
.ph-albums .chip{flex:none;white-space:nowrap}
.ph-albums .chip i{font-style:normal;opacity:.6;font-weight:700;margin-left:2px}
.ph-albums .chip.active{background:linear-gradient(180deg,#F0D489,#C9A24B);color:#1D1606}
.ph-busy{margin:0 2px 10px;padding:10px 14px;border-radius:12px;background:var(--card2);color:var(--mut);font-weight:700;font-size:14px}
.ph-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:4px;border-radius:18px;overflow:hidden}
.ph-cell{position:relative;display:block;padding:0;border:0;aspect-ratio:1/1;background:var(--card2);overflow:hidden;cursor:pointer}
.ph-cell img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .25s}
.ph-cell:active img{transform:scale(.96)}
.ph-tag{position:absolute;left:5px;bottom:5px;padding:2px 6px;border-radius:6px;background:rgba(0,0,0,.55);color:#fff;font-size:9.5px;font-weight:700;letter-spacing:.3px}
.ph-empty{text-align:center;padding:38px 20px;border-radius:20px;background:var(--card);border:1px dashed var(--line)}
.ph-empty b{display:block;font-size:17px;margin-top:6px}.ph-empty small{color:var(--mut);font-size:13.5px}
.ph-eico{font-size:38px}
.ph-note{margin:12px 4px 4px;color:var(--mut);font-size:12px;text-align:center}
body.ph-lock{overflow:hidden}
.ph-view{position:fixed;inset:0;z-index:9000;background:#05070D;display:flex;flex-direction:column;color:#fff;animation:phIn .18s ease-out}
.ph-view.hidden{display:none}
@keyframes phIn{from{opacity:0}to{opacity:1}}
.ph-vtop{display:flex;align-items:center;justify-content:space-between;padding:calc(env(safe-area-inset-top,0px) + 10px) 12px 8px;font-weight:700;font-size:15px}
.ph-vx{width:40px;height:40px;border-radius:50%;background:rgba(255,255,255,.14);color:#fff;font-size:18px;font-weight:700;border:0}
.ph-vsp{width:40px}
.ph-stage{position:relative;flex:1;min-height:0;display:flex;align-items:center;justify-content:center;touch-action:pan-y}
.ph-stage img{max-width:100%;max-height:100%;object-fit:contain;opacity:0;transition:opacity .2s}
.ph-stage img.in{opacity:1}
.ph-nav{position:absolute;top:50%;transform:translateY(-50%);width:42px;height:42px;border-radius:50%;background:rgba(0,0,0,.4);color:#fff;font-size:28px;line-height:1;border:1px solid rgba(255,255,255,.18);padding:0 0 3px}
.ph-nav.prev{left:8px}.ph-nav.next{right:8px}
.ph-vbot{padding:10px 14px calc(env(safe-area-inset-bottom,0px) + 14px);background:linear-gradient(0deg,rgba(0,0,0,.6),transparent)}
.ph-vcap b{display:block;font-size:17px}
.ph-vcap small{color:#C9CFE0;font-size:12.5px}
.ph-vbtns{display:flex;gap:6px;margin-top:10px}
.ph-vbtns button{flex:1;padding:10px 4px;border-radius:12px;background:rgba(255,255,255,.12);color:#fff;font-weight:700;font-size:13px;border:0}
.ph-vbtns button.del{color:#FF9AA5}
.ph-rms{font-size:12px;padding:0 2px}
.ph-note .hidden{display:none}
