:root{--bg: #ede6d8;--frame: #1c1a17;--screen: #f6f1e7;--surface: #ffffff;--surface2: #fbf7ee;--ink: #2a2520;--muted: #8c8377;--line: #e2d9c8;--line2: #d6cbb6;--green: #2f5347;--green-soft: #e3ece5;--green-ink: #234035;--gold: #b08d57;--gold-soft: #f2e8d6;--gold-ink: #7c5e2e;--cond: #6b5d4b;--cond-soft: #ece5da;--event: #3c566b;--event-soft: #e3e9ee;--danger: #a6452f;--r: 14px;--rs: 10px}*{box-sizing:border-box;margin:0;padding:0;-webkit-tap-highlight-color:transparent}html,body,#root{height:100%}body{background:var(--bg);font-family:Tajawal,sans-serif;color:var(--ink);background-image:radial-gradient(circle at 20% 10%,#f1eadc 0,transparent 45%),radial-gradient(circle at 90% 80%,#e6dcc8 0,transparent 40%)}h1,h2,h3,.disp{font-family:El Messiri,serif}button,input,textarea,select{font-family:inherit}.app{width:100%;max-width:480px;margin:0 auto;min-height:100%;background:var(--screen);display:flex;flex-direction:column;position:relative;overflow:hidden;box-shadow:0 0 60px -20px #281e0f40}.topbar{flex:0 0 auto;background:var(--green);color:#fff;padding:calc(env(safe-area-inset-top,0px) + 16px) 16px 12px;display:flex;align-items:center;justify-content:space-between;gap:10px;z-index:40}.topbar.plain{background:var(--screen);color:var(--ink);border-bottom:1px solid var(--line)}.topbar h2{font-size:18px;font-weight:600}.topbar .ic{cursor:pointer;display:inline-flex;width:38px;height:38px;align-items:center;justify-content:center;border-radius:10px}.topbar .ic svg{width:22px;height:22px}.topbar .right{display:flex;align-items:center;gap:4px}.fam-title{text-align:center;cursor:pointer;flex:1;min-width:0;padding:0 8px}.fam-title .nm{font-family:El Messiri;font-size:17px;font-weight:600;line-height:1.15;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:flex;align-items:center;justify-content:center;gap:5px}.fam-title .sub{font-size:11.5px;opacity:.85;margin-top:1px}.dotbadge{position:relative}.dotbadge:after{content:"";position:absolute;top:8px;left:8px;width:7px;height:7px;background:var(--gold);border-radius:50%;border:1.5px solid var(--green)}.scroll{flex:1 1 auto;overflow-y:auto;-webkit-overflow-scrolling:touch;position:relative}.scroll::-webkit-scrollbar{width:0}.pad{padding:16px}.screen{display:flex;flex-direction:column;min-height:100%;animation:fade .35s ease}@keyframes fade{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}.svgico{width:22px;height:22px;stroke:currentColor;fill:none;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}.svgico.sm{width:18px;height:18px}.svgico.lg{width:26px;height:26px}.chips{display:flex;gap:7px;flex-wrap:wrap;padding:12px 16px 4px}.chip{font-size:13px;padding:6px 14px;border-radius:999px;border:1px solid var(--line2);background:var(--surface);color:var(--muted);cursor:pointer;font-weight:500;font-family:Tajawal}.chip.on{background:var(--green);color:#fff;border-color:var(--green)}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:14px;margin-bottom:12px;cursor:pointer;transition:transform .15s,box-shadow .15s}.card:active{transform:scale(.99)}.card .meta{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px}.tag{font-size:12px;font-weight:500;padding:4px 11px;border-radius:999px}.t-joy{background:var(--green-soft);color:var(--green-ink)}.t-cond{background:var(--cond-soft);color:var(--cond)}.t-event{background:var(--event-soft);color:var(--event)}.t-gold{background:var(--gold-soft);color:var(--gold-ink)}.date{font-size:12px;color:var(--muted)}.card h3{font-size:16px;font-weight:600;margin-bottom:4px}.card p.body{font-size:13.5px;color:#5d564c;line-height:1.7}.pinned{border:1.5px solid var(--gold);background:linear-gradient(0deg,var(--surface),var(--gold-soft))}.pinrow{display:flex;align-items:center;gap:6px;font-size:12px;color:var(--gold-ink);font-weight:500;margin-bottom:6px}.photo{height:120px;border-radius:var(--rs);background:var(--surface2) repeating-linear-gradient(45deg,#f3ecdd 0,#f3ecdd 10px,#efe7d6 10px,#efe7d6 20px);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:5px;margin-top:12px;color:var(--muted);overflow:hidden}.photo img{width:100%;height:100%;object-fit:cover}.photo .lock{font-size:11px;display:flex;align-items:center;gap:5px;background:#fffc;padding:3px 9px;border-radius:999px}.fab{position:sticky;bottom:20px;margin:0 16px 20px;background:var(--green);color:#fff;border:none;padding:15px;border-radius:var(--r);font-family:Tajawal;font-weight:700;font-size:15px;cursor:pointer;display:flex;align-items:center;justify-content:center;gap:8px;box-shadow:0 10px 24px -8px #2f534799;z-index:30}.overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#1e160c73;opacity:0;visibility:hidden;transition:.25s;z-index:50}.overlay.open{opacity:1;visibility:visible}.drawer{position:fixed;top:0;right:0;bottom:0;width:280px;max-width:84vw;background:var(--screen);transform:translate(100%);transition:transform .28s cubic-bezier(.4,0,.2,1);z-index:55;display:flex;flex-direction:column;box-shadow:-12px 0 30px -10px #1e160c66}.drawer.open{transform:none}.drawer .dhead{background:var(--green);color:#fff;padding:calc(env(safe-area-inset-top,0px) + 24px) 18px 20px}.drawer .dhead .em{width:50px;height:50px;border-radius:50%;background:#ffffff24;display:flex;align-items:center;justify-content:center;margin-bottom:10px}.drawer .dhead .nm{font-family:El Messiri;font-size:20px;font-weight:600}.drawer .dhead .sub{font-size:12.5px;opacity:.8;margin-top:2px}.dnav{flex:1;overflow-y:auto;padding:10px}.dgroup{font-size:11px;color:var(--muted);padding:14px 12px 6px;letter-spacing:.5px}.ditem{display:flex;align-items:center;gap:13px;padding:12px;border-radius:var(--rs);cursor:pointer;color:var(--ink);font-size:15px;text-decoration:none}.ditem:hover{background:var(--surface2)}.ditem.on{background:var(--green-soft);color:var(--green-ink);font-weight:500}.ditem svg{stroke:currentColor}.dsend{margin:10px;display:flex;align-items:center;justify-content:center;gap:8px;padding:13px;border-radius:var(--rs);border:1px solid var(--green);color:var(--green);font-weight:700;cursor:pointer;font-family:Tajawal}.fitem{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:11px 18px;cursor:pointer;color:var(--ink);font-size:14px}.fitem:hover{background:var(--surface)}.fitem .rel{font-size:11.5px;color:var(--muted);margin-top:2px}.fitem.add{color:var(--green);font-weight:500}.field{margin-bottom:16px}.field label{display:block;font-size:13.5px;font-weight:500;margin-bottom:7px;color:#4a4339}.field input,.field textarea,.field select{width:100%;border:1px solid var(--line2);background:var(--surface);border-radius:var(--rs);padding:12px 14px;font-family:Tajawal;font-size:14px;color:var(--ink)}.field input:focus,.field textarea:focus,.field select:focus{border-color:var(--green);outline:none}.field textarea{min-height:96px;resize:vertical}.field .hint{font-size:12px;color:var(--muted);margin-top:6px}.field .req-star{color:var(--danger)}.grid2{display:grid;grid-template-columns:1fr 1fr;gap:8px}.vis{display:flex;gap:8px}.vis label{flex:1;border:1px solid var(--line2);border-radius:var(--rs);padding:10px;text-align:center;font-size:13px;cursor:pointer;background:var(--surface)}.vis input{display:none}.vis label.on,.vis input:checked+span{font-weight:700;color:var(--green)}.vis label.on{border-color:var(--green);background:var(--green-soft)}.errbox{background:#f6e4de;color:var(--danger);font-size:12.5px;padding:10px 12px;border-radius:10px;margin-bottom:14px}.btn{width:100%;background:var(--green);color:#fff;border:none;padding:14px;border-radius:var(--r);font-family:Tajawal;font-weight:700;font-size:15px;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;gap:8px}.btn:disabled{opacity:.55;cursor:default}.btn.ghost{background:transparent;color:var(--green);border:1px solid var(--green)}.linklike{color:var(--green);cursor:pointer;font-weight:500}.otp{width:52px;height:58px;text-align:center;font-size:22px;font-family:El Messiri;border:1px solid var(--line2);border-radius:var(--rs);background:var(--surface);color:var(--ink)}.otp:focus{border-color:var(--green);outline:none}.hero{background:linear-gradient(165deg,var(--green) 0 56%,transparent 56%);padding:46px 22px 26px;text-align:center;color:#fff}.hero .brand{font-family:El Messiri;font-size:32px;font-weight:700}.hero .brand .dot{color:var(--gold)}.hero .tg{font-size:12.5px;opacity:.85;margin-top:3px}.panel{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:20px;margin-top:-4px}.pending{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:30px}.pending .ring{width:96px;height:96px;border-radius:50%;background:var(--gold-soft);display:flex;align-items:center;justify-content:center;margin-bottom:22px;color:var(--gold-ink)}.pending .ring.ok{background:var(--green-soft);color:var(--green-ink)}.pending h3{font-size:20px;font-weight:600;margin-bottom:8px}.pending p{color:var(--muted);font-size:14px;line-height:1.8;max-width:280px}.codebox{margin:18px 0;border:1.5px dashed var(--gold);border-radius:var(--rs);padding:14px 26px;background:var(--gold-soft)}.codebox .code{font-family:El Messiri;font-size:26px;font-weight:700;letter-spacing:4px;color:var(--gold-ink)}.detail-hero{height:150px;background:var(--green-soft) repeating-linear-gradient(45deg,#e7efe8 0,#e7efe8 12px,#e0e9e1 12px,#e0e9e1 24px);display:flex;align-items:center;justify-content:center;color:var(--green-ink)}.detail .pad h2{font-size:21px;font-weight:600;margin:14px 0 8px}.detail .pad p{font-size:14.5px;line-height:1.9;color:#4f483e}.ev{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:14px;margin-bottom:12px;display:flex;gap:13px}.ev .cal{flex:0 0 56px;height:62px;border-radius:var(--rs);background:var(--event-soft);color:var(--event);display:flex;flex-direction:column;align-items:center;justify-content:center;font-weight:700}.ev .cal .d{font-size:22px;line-height:1}.ev .cal .m{font-size:11px;font-weight:500}.ev h3{font-size:15.5px;font-weight:600}.ev .when{font-size:12.5px;color:var(--muted);margin:3px 0 8px}.count{display:inline-flex;align-items:center;gap:5px;font-size:12px;color:var(--gold-ink);background:var(--gold-soft);padding:3px 10px;border-radius:999px}.rsvp{display:flex;gap:8px;margin-top:10px}.rsvp button{flex:1;border:1px solid var(--line2);background:var(--surface);border-radius:var(--rs);padding:8px;font-family:Tajawal;font-size:13px;cursor:pointer;color:var(--ink)}.rsvp button.yes.on{background:var(--green);color:#fff;border-color:var(--green)}.rsvp button.no.on{background:var(--cond-soft);color:var(--cond);border-color:var(--line2)}.albums{display:grid;grid-template-columns:1fr 1fr;gap:12px}.album{border-radius:var(--r);overflow:hidden;border:1px solid var(--line);cursor:pointer;background:var(--surface)}.album .cv{height:108px;background:var(--green-soft) repeating-linear-gradient(45deg,#e7efe8 0,#e7efe8 10px,#dfe8e0 10px,#dfe8e0 20px);position:relative}.album .cv .lk{position:absolute;top:7px;left:7px;background:#ffffffd9;font-size:10px;padding:2px 8px;border-radius:999px;color:var(--cond);display:flex;align-items:center;gap:4px}.album .cap{padding:9px 11px}.album .cap .t{font-size:13.5px;font-weight:500}.album .cap .n{font-size:11.5px;color:var(--muted)}.crumbs{display:flex;flex-wrap:wrap;align-items:center;gap:5px;font-size:13px;margin-bottom:14px}.crumbs .c{color:var(--green);cursor:pointer}.crumbs .sep{color:var(--line2)}.crumbs .cur{font-weight:600}.node{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:12px;text-align:center;cursor:pointer}.node.root{border:1.5px solid var(--green);max-width:230px;margin:0 auto}.node .nm{font-size:16px;font-weight:600}.node .info{font-size:12px;color:var(--muted);margin-top:3px}.connector{width:1px;height:18px;background:var(--line2);margin:6px auto}.kids{display:flex;flex-wrap:wrap;gap:10px;justify-content:center}.kid{flex:1 1 132px;max-width:160px}.descbtn{display:inline-flex;align-items:center;gap:4px;margin-top:9px;font-size:12px;background:var(--green-soft);color:var(--green-ink);padding:4px 11px;border-radius:999px}.treebar{display:flex;gap:8px;margin-bottom:14px}.treebar button{flex:1;display:flex;align-items:center;justify-content:center;gap:6px;border:1px solid var(--line2);background:var(--surface);color:var(--ink);border-radius:var(--rs);padding:10px;font-family:Tajawal;font-size:13px;font-weight:500;cursor:pointer}.treebar button.on{background:var(--green);color:#fff;border-color:var(--green)}.treebar button svg{width:18px;height:18px;stroke:currentColor;fill:none;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}.full .fnode{padding:3px 0}.full .fnode span{display:inline-flex;align-items:center;gap:7px;font-size:14px;color:var(--ink);cursor:pointer;border:1px solid var(--line);background:var(--surface);padding:6px 12px;border-radius:999px}.full .fnode span i{width:6px;height:6px;border-radius:50%;background:var(--gold);display:inline-block}.sresult{background:var(--surface);border:1px solid var(--line);border-radius:var(--rs);padding:11px 13px;margin-bottom:9px;cursor:pointer}.sresult .nm{font-size:15px;font-weight:600;color:var(--green)}.sresult .ln{font-size:12px;color:var(--muted);margin-top:2px}.bio{margin-top:18px;background:var(--surface);border:1px solid var(--line2);border-radius:var(--r);padding:15px}.bio .h{display:flex;align-items:center;justify-content:space-between}.bio .av{display:flex;align-items:center;gap:11px}.bio .av .c{width:42px;height:42px;border-radius:50%;background:var(--gold-soft);display:flex;align-items:center;justify-content:center;color:var(--gold-ink)}.bio .av .nm{font-size:16px;font-weight:600}.bio .av .info{font-size:12px;color:var(--muted)}.bio p{font-size:14px;line-height:1.85;color:#4f483e;margin:11px 0}.bio .x{background:none;border:none;cursor:pointer;color:var(--muted)}.biocard{display:flex;gap:13px;background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:13px;margin-bottom:11px;cursor:pointer;align-items:center}.biocard .c{width:48px;height:48px;border-radius:50%;background:var(--gold-soft);color:var(--gold-ink);display:flex;align-items:center;justify-content:center;flex:0 0 48px}.biocard h3{font-size:15.5px;font-weight:600}.biocard .r{font-size:12.5px;color:var(--muted);margin-top:2px}.noti{display:flex;gap:12px;padding:13px;border-bottom:1px solid var(--line);align-items:flex-start}.noti .ic{flex:0 0 38px;height:38px;border-radius:50%;display:flex;align-items:center;justify-content:center}.noti.unread{background:var(--surface)}.noti .t{font-size:14px;font-weight:500}.noti .s{font-size:12.5px;color:var(--muted);margin-top:2px}.noti .tm{font-size:11px;color:var(--muted);margin-top:5px}.tabs{display:flex;border-bottom:1px solid var(--line);background:var(--screen);position:sticky;top:0;z-index:5}.tabs button{flex:1;border:none;background:none;padding:13px 2px;font-family:Tajawal;font-size:13px;font-weight:500;color:var(--muted);cursor:pointer;position:relative}.tabs button.on{color:var(--green)}.tabs button.on:after{content:"";position:absolute;bottom:-1px;right:20%;left:20%;height:2.5px;background:var(--green);border-radius:2px}.st-on{background:var(--green-soft);color:var(--green-ink)}.st-pend{background:var(--gold-soft);color:var(--gold-ink)}.st-rej{background:#f0dcd6;color:var(--danger)}.req{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:14px;margin-bottom:12px}.req .top{display:flex;align-items:center;gap:11px;margin-bottom:10px}.req .av{width:40px;height:40px;border-radius:50%;background:var(--green-soft);color:var(--green-ink);display:flex;align-items:center;justify-content:center;font-weight:600}.req .nm{font-size:15px;font-weight:600}.req .ph{font-size:12.5px;color:var(--muted)}.req .acts{display:flex;gap:8px;margin-top:10px}.req .acts button{flex:1;border-radius:var(--rs);padding:9px;font-family:Tajawal;font-size:13.5px;font-weight:500;cursor:pointer;border:1px solid var(--line2)}.req .acts .ok{background:var(--green);color:#fff;border-color:var(--green)}.req .acts .no{background:var(--surface);color:var(--danger);border-color:#e3c9c0}.req .acts .edit{background:var(--surface);color:var(--ink)}.req .visline{display:flex;align-items:center;gap:7px;font-size:12.5px;color:var(--muted);margin-top:8px}.req select{border:1px solid var(--line2);border-radius:8px;padding:5px 8px;font-family:Tajawal;font-size:12.5px;background:var(--surface);color:var(--ink)}.done{background:var(--green-soft);color:var(--green-ink);border-radius:var(--r);padding:13px;text-align:center;font-size:14px;font-weight:500;margin-bottom:12px}.arow{display:flex;align-items:center;gap:11px;background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:12px;margin-bottom:10px}.arow .av{width:38px;height:38px;border-radius:50%;background:var(--green-soft);color:var(--green-ink);display:flex;align-items:center;justify-content:center;font-weight:600;flex:0 0 38px}.arow .nm{font-size:14.5px;font-weight:600}.rbadge{display:inline-block;margin-top:4px;font-size:11.5px;padding:2px 9px;border-radius:999px}.rown{background:var(--gold-soft);color:var(--gold-ink)}.radm{background:var(--green-soft);color:var(--green-ink)}.rmem{background:var(--surface2);color:var(--muted);border:1px solid var(--line2)}.abtn{display:inline-flex;align-items:center;gap:5px;border:1px solid var(--line2);background:var(--surface);color:var(--ink);border-radius:var(--rs);padding:8px 13px;font-family:Tajawal;font-size:13px;font-weight:500;cursor:pointer}.abtn svg{width:16px;height:16px;stroke:currentColor;fill:none;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}.abtn.del{color:var(--danger);border-color:#e3c9c0}.empty{text-align:center;color:var(--muted);padding:50px 20px;font-size:14px}.spacer-lg{height:70px}.center-link{text-align:center;margin-top:14px;font-size:13px;color:var(--muted)}.demo-banner{background:var(--gold-soft);color:var(--gold-ink);font-size:11.5px;text-align:center;padding:5px 10px;border-bottom:1px solid #e8d9bd}
