:root{ --bgimg:url("bg.jpg"); }

#login{
  --red:#e30613; --red2:#ff7a1a; --yellow:#ffc20e; --blue:#1d4fa3;
  
  --card-bg:rgba(10,30,76,.34);
  --card-line:rgba(255,255,255,.38);
  --text:#ffffff; --muted:rgba(255,255,255,.80);
  --field-bg:rgba(255,255,255,.16);
  --sh-dark:rgba(0,10,40,.45); --sh-light:rgba(255,255,255,.22);
  --err:#ffd0d4; --ok:#b8ffd6;
}
#login[data-theme="light"]{
  --card-bg:rgba(255,255,255,.50);
  --card-line:rgba(255,255,255,.75);
  --text:#14213d; --muted:rgba(20,33,61,.72);
  --field-bg:rgba(255,255,255,.55);
  --sh-dark:rgba(80,100,150,.35); --sh-light:rgba(255,255,255,.95);
  --err:#b3121f; --ok:#0b7a42;
}
#login *{box-sizing:border-box;margin:0;padding:0;-webkit-tap-highlight-color:transparent}
#login button,#login input{font-family:inherit}
#login,#login{height:100%}
#login{
  font-family:'Plus Jakarta Sans',system-ui,-apple-system,'Segoe UI',Roboto,sans-serif;
  color:var(--text); background:#e9e9e9; overflow:hidden; font-weight:700;
}
#login .bg{
  position:fixed; inset:0; z-index:0;
  background:var(--bgimg) center 28%/cover no-repeat;
  transform:scale(1.1);
  animation:bgZoom 7s cubic-bezier(.2,.7,.2,1) forwards;
}
@keyframes bgZoom{ to{ transform:scale(1) } }
#login .bg-shade{
  position:fixed; inset:0; z-index:1; pointer-events:none;
  background:linear-gradient(to bottom, rgba(0,0,0,0) 45%, rgba(5,15,40,.28));
}
#login .intro{
  position:fixed; inset:0; z-index:50; display:flex; align-items:flex-end; justify-content:center; cursor:pointer;
  padding-bottom:max(12vh,60px);
  background:linear-gradient(to top, rgba(5,15,40,.45), rgba(5,15,40,0) 45%);
  transition:opacity 1.2s ease .1s, visibility 0s 1.4s;
}
#login .intro-inner{ width:min(78vw,420px); }
#login .loader{ opacity:0; animation:fade .8s ease .4s forwards; }
@keyframes fade{ to{ opacity:1 } }
#login .track{ position:relative; height:12px; border-radius:12px; background:rgba(255,255,255,.35); overflow:hidden; box-shadow:0 2px 12px rgba(0,0,0,.25); }
#login .track.thin{ height:6px; margin-top:7px; border-radius:6px; }
#login .track i{ position:absolute; left:0; top:0; bottom:0; width:0; border-radius:inherit; }
#login .track .r{ background:linear-gradient(180deg,#ff4b4b,#e30613 55%,#b90410); animation:load 4.4s cubic-bezier(.45,.1,.35,1) .8s forwards; }
#login .track .y{ background:linear-gradient(180deg,#ffe066,#ffc20e); animation:load 4.4s cubic-bezier(.45,.1,.35,1) 1.05s forwards; }
@keyframes load{ to{ width:100% } }
#login.ready .intro{ opacity:0; visibility:hidden; pointer-events:none; }
#login .stage{ position:relative; z-index:2; height:100%; display:grid; place-items:center; padding:20px; overflow-y:auto; }
#login .card{
  width:min(100%,400px); padding:24px 24px 22px; border-radius:30px;
  background:var(--card-bg);
  border:1px solid var(--card-line);
  backdrop-filter:blur(10px) saturate(1.3); -webkit-backdrop-filter:blur(10px) saturate(1.3);
  box-shadow:0 18px 46px rgba(0,10,40,.35), inset 0 1px 0 rgba(255,255,255,.35);
  opacity:0; transform:translateY(46px) scale(.96);
  transition:opacity 1.6s ease, transform 1.8s cubic-bezier(.16,.84,.24,1), background .4s, border-color .4s;
}
#login.show .card{ opacity:1; transform:none; }
#login .stagger{ opacity:0; transform:translateY(16px); transition:opacity 1s ease, transform 1.1s cubic-bezier(.16,.84,.24,1); }
#login.show .stagger{ opacity:1; transform:none; transition-delay:calc(.5s + var(--i)*.14s); }
#login .top{ display:flex; justify-content:flex-end; margin-bottom:6px; }
#login .theme{
  width:42px; height:42px; border-radius:50%; border:1px solid var(--card-line); cursor:pointer; color:var(--text);
  background:var(--field-bg); display:grid; place-items:center;
  box-shadow:4px 4px 10px var(--sh-dark), -3px -3px 9px var(--sh-light);
  transition:box-shadow .2s;
}
#login .theme:active{ box-shadow:inset 3px 3px 7px var(--sh-dark), inset -3px -3px 7px var(--sh-light); }
#login .theme svg{ width:20px; height:20px }
#login .theme .moon{display:none}
#login[data-theme="light"] .theme .moon{display:block}
#login[data-theme="light"] .theme .sun{display:none}
#login .tabs{ display:grid; grid-template-columns:1fr 1fr; gap:10px; margin-bottom:22px; }
#login .tab{
  height:46px; border-radius:30px; border:0; cursor:pointer; font-family:inherit; font-weight:700; font-size:15px;
  color:var(--text); background:var(--field-bg);
  box-shadow:inset 3px 3px 8px var(--sh-dark), inset -3px -3px 8px var(--sh-light);
  transition:all .35s;
}
#login .tab[aria-selected="true"]{
  color:#fff; background:linear-gradient(90deg,var(--red),var(--red2));
  box-shadow:0 6px 16px rgba(227,6,19,.45);
}
#login h2{ text-align:center; font-size:32px; font-weight:800; letter-spacing:-.02em; margin-bottom:6px; text-shadow:0 1px 8px rgba(0,0,0,.18); }
#login .sub{ text-align:center; color:var(--muted); font-size:13.5px; font-weight:600; margin-bottom:20px; }
#login .field{ position:relative; margin-bottom:16px; }
#login .field input[type="text"],#login .field input[type="password"],#login .field input[type="email"]{
  width:100%; height:54px; border:0; outline:0; border-radius:30px; padding:0 52px 0 54px;
  font-family:inherit; font-weight:700; font-size:15px; color:var(--text); background:var(--field-bg);
  box-shadow:inset 4px 4px 9px var(--sh-dark), inset -4px -4px 9px var(--sh-light);
  transition:box-shadow .25s;
}
#login .field input::placeholder{ color:var(--muted); font-weight:600 }
#login .field input:focus-visible{ box-shadow:inset 4px 4px 9px var(--sh-dark), inset -4px -4px 9px var(--sh-light), 0 0 0 3px rgba(255,194,14,.75); }
#login .field input:-webkit-autofill{ -webkit-text-fill-color:var(--text); transition:background-color 9999s; }
#login .field .ico{ position:absolute; left:20px; top:50%; transform:translateY(-50%); width:22px; height:22px; color:var(--yellow); pointer-events:none; }
#login[data-theme="light"] .field .ico{ color:var(--red); }
#login .eye{
  position:absolute; right:10px; top:50%; transform:translateY(-50%); width:38px; height:38px; border:0; border-radius:50%;
  background:transparent; color:var(--muted); cursor:pointer; display:grid; place-items:center;
}
#login .eye svg{ width:21px; height:21px }
#login .eye .off{display:none}
#login .eye.on .off{display:block}
#login .eye.on .open{display:none}
#login .eye:focus-visible{ outline:2px solid var(--yellow) }
#login .remember{ display:flex; align-items:center; gap:12px; margin:2px 6px 12px; cursor:pointer; user-select:none; font-weight:700; font-size:14px; }
#login .remember input{ position:absolute; opacity:0; width:0; height:0; }
#login .box{
  width:24px; height:24px; border-radius:8px; flex:none; display:grid; place-items:center;
  background:var(--field-bg); box-shadow:inset 2px 2px 5px var(--sh-dark), inset -2px -2px 5px var(--sh-light);
  transition:background .25s, box-shadow .25s;
}
#login .box svg{ width:15px; height:15px; color:#fff; opacity:0; transform:scale(.4); transition:all .25s; }
#login .remember input:checked + .box{ background:linear-gradient(135deg,var(--red),var(--red2)); box-shadow:0 3px 9px rgba(227,6,19,.45); }
#login .remember input:checked + .box svg{ opacity:1; transform:none; }
#login .remember input:focus-visible + .box{ outline:3px solid rgba(255,194,14,.8); outline-offset:2px; }
#login .msg{ min-height:20px; margin:0 6px 10px; font-size:13px; font-weight:700; text-align:center; color:var(--err); }
#login .msg.ok{ color:var(--ok) }
#login .shake{ animation:shake .45s }
@keyframes shake{ 20%,60%{transform:translateX(-7px)} 40%,80%{transform:translateX(7px)} }
#login .btnwrap{ display:flex; justify-content:center; }
#login .btn{
  position:relative; overflow:hidden; width:100%; height:54px; border:0; border-radius:30px; cursor:pointer; color:#fff;
  font-family:inherit; font-weight:800; font-size:16px; letter-spacing:.01em;
  background:linear-gradient(90deg,var(--red),var(--red2));
  box-shadow:0 8px 20px rgba(227,6,19,.5), 0 0 0 0 rgba(227,6,19,.4);
  animation:pulse 2.6s ease-in-out infinite;
  transition:width .5s cubic-bezier(.65,0,.25,1), transform .15s;
}
@keyframes pulse{
  0%,100%{ box-shadow:0 8px 20px rgba(227,6,19,.5), 0 0 0 0 rgba(227,6,19,.38); }
  55%{ box-shadow:0 8px 24px rgba(227,6,19,.6), 0 0 0 11px rgba(227,6,19,0); }
}
#login .btn:active{ transform:scale(.98) }
#login .btn .lbl{ position:relative; z-index:1; transition:opacity .2s; }
#login .ripple{
  position:absolute; border-radius:50%; pointer-events:none; z-index:0;
  background:rgba(255,255,255,.55); transform:scale(0); opacity:1;
  animation:ripple .7s ease-out forwards;
}
@keyframes ripple{ to{ transform:scale(1); opacity:0; } }
#login .spin{
  position:absolute; left:50%; top:50%; width:24px; height:24px; margin:-12px 0 0 -12px; z-index:1;
  border-radius:50%; border:3px solid rgba(255,255,255,.35); border-top-color:#fff;
  opacity:0; transition:opacity .25s ease .35s;
}
#login .btn.loading{ width:54px; animation:none; cursor:default; box-shadow:0 8px 20px rgba(227,6,19,.5); }
#login .btn.loading .lbl{ opacity:0; }
#login .btn.loading .spin{ opacity:1; animation:spin .8s linear .35s infinite; }
@keyframes spin{ to{ transform:rotate(360deg) } }
#login .btn:focus-visible,#login .theme:focus-visible{ outline:3px solid rgba(255,194,14,.85); outline-offset:2px }
#login .credit{
  position:fixed; left:0; right:0; bottom:0; z-index:3; text-align:center;
  padding:12px 12px calc(12px + env(safe-area-inset-bottom,0px));
  font-weight:800; font-size:12px; letter-spacing:.06em; color:#fff;
  background:linear-gradient(to top,rgba(5,15,40,.55),rgba(5,15,40,0)); text-shadow:0 1px 6px rgba(0,0,0,.6);
  opacity:0; transition:opacity 1.4s ease .8s;
}
#login.show .credit{ opacity:1; }
#login .hide{ display:none }
@media (prefers-reduced-motion:reduce){#login .bg,#login .card,#login .stagger,#login .intro{ transition-duration:.01s !important; transition-delay:0s !important }
#login .loader,#login .track i{ animation-duration:.01s !important; animation-delay:0s !important }
#login .btn{ animation:none !important }}
#app{
  --red:#e30613; --red2:#ff7a1a; --yellow:#ffc20e; --blue:#1d4fa3;
  --ink:#14213d; --muted:#5b6785; --card:rgba(255,255,255,.7); --line:rgba(255,255,255,.8);
  --ok:#0b7a42; --okbg:#d6f4e3; --bad:#b3121f; --badbg:#ffe0e3; --warn:#7a5200; --warnbg:#fff0bd; --info:#1d4fa3; --infobg:#dce8ff;
}
#app *{box-sizing:border-box;margin:0;padding:0;-webkit-tap-highlight-color:transparent}
#app button,#app input,#app select,#app textarea{font-family:inherit;font-size:inherit;color:inherit}
#app button{cursor:pointer}
#app{
  font-family:'Plus Jakarta Sans',system-ui,-apple-system,'Segoe UI',Roboto,sans-serif; font-weight:700;
  color:var(--ink); min-height:100vh; min-height:100dvh; display:flex; flex-direction:column;
}
#app .bg{ position:fixed; inset:0; z-index:-2; background:var(--bgimg) center 28%/cover no-repeat; transform:scale(1.1); animation:bgZoom 7s cubic-bezier(.2,.7,.2,1) forwards; }
#app .bg-shade{ position:fixed; inset:0; z-index:-1; background:linear-gradient(to bottom,rgba(0,0,0,0) 45%,rgba(5,15,40,.28)); }
#app .bar{
  position:sticky; top:0; z-index:20; display:flex; align-items:center; gap:12px;
  padding:calc(10px + env(safe-area-inset-top,0px)) 14px 14px; color:#fff;
  background:linear-gradient(90deg,#d10513,#ee3a2a); box-shadow:0 6px 18px rgba(150,0,10,.28);
}
#app .bar::after{ content:""; position:absolute; left:0; right:0; bottom:0; height:4px; background:var(--yellow); }
#app .bar h1{ flex:1; font-size:18px; font-weight:800; letter-spacing:-.01em; }
#app .circ{
  width:44px; height:44px; border-radius:50%; border:2px solid rgba(255,255,255,.75); background:rgba(255,255,255,.18);
  display:grid; place-items:center; overflow:hidden; color:#fff; flex:none;
}
#app .circ img{ width:100%; height:100%; object-fit:cover; }
#app .circ svg{ width:22px; height:22px; }
#app .circ:active{ transform:scale(.94); }
#app main{ flex:1; width:100%; max-width:760px; margin:0 auto; padding:16px 14px 22px; }
#app #view.enter{ animation:enter .55s cubic-bezier(.16,.84,.24,1); }
@keyframes enter{ from{ opacity:0; transform:translateY(14px) } to{ opacity:1; transform:none } }
#app .credit{
  text-align:center; padding:14px 12px calc(14px + env(safe-area-inset-bottom,0px)); font-size:12px; font-weight:800; letter-spacing:.06em;
  background:rgba(255,255,255,.6); backdrop-filter:blur(8px); -webkit-backdrop-filter:blur(8px); border-top:1px solid rgba(20,33,61,.08);
}
#app .card{ background:var(--card); border:1px solid var(--line); border-radius:22px; padding:16px; margin-bottom:14px; backdrop-filter:blur(12px); -webkit-backdrop-filter:blur(12px); box-shadow:0 8px 26px rgba(20,33,61,.1); }
#app .card h3{ font-size:16px; font-weight:800; margin-bottom:12px; }
#app .meta{ font-size:12.5px; color:var(--muted); font-weight:600; margin-top:3px; }
#app .mono{ font-weight:800; color:var(--ink); }
#app .hello h2{ font-size:22px; font-weight:800; letter-spacing:-.02em; }
#app .chiprow{ display:flex; flex-wrap:wrap; gap:8px; margin-top:10px; }
#app .badge{ display:inline-block; padding:4px 10px; border-radius:20px; font-size:11.5px; font-weight:800; white-space:nowrap; }
#app .badge.g{ background:var(--okbg); color:var(--ok); }
#app .badge.r{ background:var(--badbg); color:var(--bad); }
#app .badge.y{ background:var(--warnbg); color:var(--warn); }
#app .badge.b{ background:var(--infobg); color:var(--info); }
#app .tiles{ display:grid; grid-template-columns:1fr 1fr; gap:14px; }
#app .tile{
  text-align:left; border:1px solid var(--line); background:var(--card); border-radius:24px; padding:16px; min-height:150px;
  display:flex; flex-direction:column; gap:6px; backdrop-filter:blur(12px); -webkit-backdrop-filter:blur(12px);
  box-shadow:0 8px 26px rgba(20,33,61,.12); transition:transform .2s;
}
#app .tile:active{ transform:scale(.97); }
#app .tile b{ font-size:16px; font-weight:800; margin-top:auto; line-height:1.2; }
#app .tile small{ font-size:12.5px; color:var(--muted); font-weight:600; }
#app .ti{ width:52px; height:52px; border-radius:18px; display:grid; place-items:center; color:#fff; box-shadow:0 8px 16px rgba(0,0,0,.18); }
#app .ti svg{ width:28px; height:28px; }
#app .t1{ background:linear-gradient(135deg,#e30613,#ff7a1a); }
#app .t2{ background:linear-gradient(135deg,#f5a300,#ffc20e); }
#app .t3{ background:linear-gradient(135deg,#1d4fa3,#3d8bff); }
#app .t4{ background:linear-gradient(135deg,#475069,#7b86a6); }
#app .btn-p{
  display:flex; align-items:center; justify-content:center; gap:8px; height:50px; padding:0 18px; border:0; border-radius:16px; color:#fff; font-weight:800;
  background:linear-gradient(90deg,var(--red),var(--red2)); box-shadow:0 8px 18px rgba(227,6,19,.35); transition:transform .15s;
}
#app .btn-p:active{ transform:scale(.98); }
#app .btn-p svg{ width:20px; height:20px; }
#app .btn-p.d{ background:linear-gradient(90deg,#8d0a14,#c4162a); }
#app .wide{ width:100%; margin:0 0 14px; }
#app .btn-s{ height:42px; padding:0 14px; border-radius:13px; border:1.5px solid rgba(20,33,61,.16); background:#fff; font-weight:700; display:inline-flex; align-items:center; gap:7px; }
#app .btn-s svg{ width:18px; height:18px; }
#app .mini{ height:34px; padding:0 11px; border-radius:10px; border:1.5px solid rgba(20,33,61,.14); background:#fff; font-size:12.5px; font-weight:700; display:inline-flex; align-items:center; gap:6px; }
#app .mini svg{ width:16px; height:16px; }
#app .mini.d{ color:var(--bad); border-color:rgba(179,18,31,.3); }
#app label.f,#app .f{ display:block; margin-bottom:12px; font-size:13px; color:var(--muted); font-weight:700; }
#app .in{
  display:block; width:100%; height:48px; margin-top:5px; padding:0 14px; border:1.5px solid rgba(20,33,61,.16); border-radius:14px;
  background:rgba(255,255,255,.88); font-weight:700; color:var(--ink); outline:0;
}
#app textarea.in{ height:auto; min-height:96px; padding:12px 14px; resize:vertical; }
#app .in:focus{ border-color:var(--red); box-shadow:0 0 0 3px rgba(227,6,19,.16); }
#app .two{ display:grid; grid-template-columns:1fr 1fr; gap:10px; }
@media (max-width:420px){#app .two{ grid-template-columns:1fr; }}
#app .chips{ display:flex; gap:8px; overflow-x:auto; padding-bottom:4px; margin-bottom:10px; }
#app .chip{ flex:none; height:36px; padding:0 14px; border-radius:20px; border:1.5px solid rgba(20,33,61,.16); background:#fff; font-weight:700; font-size:13px; }
#app .chip.on{ background:var(--red); border-color:var(--red); color:#fff; }
#app .seg{ display:grid; grid-template-columns:1fr 1fr; gap:8px; margin-top:5px; }
#app .seg button{ height:46px; border-radius:14px; border:1.5px solid rgba(20,33,61,.16); background:#fff; font-weight:800; }
#app .seg button.on{ background:var(--red); border-color:var(--red); color:#fff; }
#app .seg button.on[data-v="bersih"]{ background:var(--ok); border-color:var(--ok); }
#app .stats{ display:grid; grid-template-columns:repeat(3,1fr); gap:10px; }
#app .stats.four{ grid-template-columns:repeat(2,1fr); }
#app .stat{ background:rgba(255,255,255,.7); border-radius:16px; padding:12px; text-align:center; border:1px solid rgba(20,33,61,.07); }
#app .stat b{ display:block; font-size:24px; font-weight:800; letter-spacing:-.02em; }
#app .stat span{ font-size:12px; color:var(--muted); font-weight:700; }
#app .item{ background:var(--card); border:1px solid var(--line); border-radius:20px; padding:14px; margin-bottom:10px; backdrop-filter:blur(10px); -webkit-backdrop-filter:blur(10px); box-shadow:0 6px 18px rgba(20,33,61,.09); }
#app .ih{ display:flex; justify-content:space-between; align-items:flex-start; gap:10px; }
#app .ih b{ font-size:15.5px; font-weight:800; line-height:1.25; }
#app .item p{ margin-top:8px; font-size:13.5px; font-weight:600; line-height:1.45; white-space:pre-wrap; word-break:break-word; }
#app .acts{ display:flex; gap:8px; margin-top:12px; }
#app .empty{ text-align:center; padding:28px 12px; color:var(--muted); font-weight:700; }
#app .tblwrap{ overflow-x:auto; border-radius:14px; }
#app table{ width:100%; border-collapse:collapse; font-size:13px; background:rgba(255,255,255,.72); }
#app th,#app td{ padding:9px 10px; text-align:left; border-bottom:1px solid rgba(20,33,61,.08); white-space:nowrap; }
#app th{ background:#fbe7e8; font-weight:800; font-size:12px; }
#app td.num,#app th.num{ text-align:right; }
#app details{ margin-top:12px; }
#app summary{ font-weight:800; cursor:pointer; padding:6px 0; }
#app .urow{ display:flex; justify-content:space-between; gap:10px; padding:12px 0; border-bottom:1px solid rgba(20,33,61,.08); }
#app .urow:last-child{ border-bottom:0; }
#app .uinfo b{ font-weight:800; margin-right:8px; }
#app .uacts{ display:flex; gap:6px; align-items:flex-start; flex:none; }
#app .photo-row{ display:flex; gap:14px; align-items:center; }
#app .ph{ width:84px; height:84px; border-radius:50%; overflow:hidden; background:#e8ecf5; display:grid; place-items:center; flex:none; border:3px solid #fff; box-shadow:0 6px 16px rgba(20,33,61,.18); color:var(--muted); }
#app .ph img{ width:100%; height:100%; object-fit:cover; }
#app .ph svg{ width:38px; height:38px; }
#app .photo-row .btn-s{ margin:0 6px 6px 0; }
#app .fb{ padding:12px 0; border-bottom:1px solid rgba(20,33,61,.08); }
#app .fb:last-child{ border-bottom:0; }
#app .fb p{ font-size:13.5px; font-weight:600; margin-top:6px; line-height:1.45; white-space:pre-wrap; word-break:break-word; }
#app .scrim{ position:fixed; inset:0; z-index:30; background:rgba(5,15,40,.5); opacity:0; visibility:hidden; transition:opacity .4s ease, visibility 0s .4s; }
#app.dopen .scrim{ opacity:1; visibility:visible; transition-delay:0s; }
#app .drawer{
  position:fixed; left:0; top:0; bottom:0; z-index:40; width:min(86vw,330px); display:flex; flex-direction:column; overflow-y:auto;
  background:rgba(255,255,255,.93); backdrop-filter:blur(18px); -webkit-backdrop-filter:blur(18px);
  transform:translateX(-105%); transition:transform .55s cubic-bezier(.16,.84,.24,1), visibility 0s linear .55s; box-shadow:14px 0 40px rgba(0,0,0,.3);
  visibility:hidden;
}
#app.dopen .drawer{ transform:none; visibility:visible; transition:transform .55s cubic-bezier(.16,.84,.24,1), visibility 0s; }
#app .dhead{ position:relative; padding:calc(26px + env(safe-area-inset-top,0px)) 18px 20px; color:#fff; text-align:center; background:linear-gradient(160deg,#d10513,#ee3a2a); }
#app .dhead::after{ content:""; position:absolute; left:0; right:0; bottom:0; height:4px; background:var(--yellow); }
#app .dclose{ position:absolute; right:12px; top:calc(12px + env(safe-area-inset-top,0px)); width:38px; height:38px; border-radius:50%; border:0; background:rgba(255,255,255,.2); color:#fff; display:grid; place-items:center; }
#app .dclose svg{ width:20px; height:20px; }
#app .dphoto{ width:104px; height:104px; margin:0 auto 12px; border-radius:50%; overflow:hidden; border:4px solid #fff; background:rgba(255,255,255,.25); display:grid; place-items:center; box-shadow:0 10px 24px rgba(0,0,0,.28); }
#app .dphoto img{ width:100%; height:100%; object-fit:cover; }
#app .dphoto svg{ width:48px; height:48px; }
#app .dhead h2{ font-size:18px; font-weight:800; }
#app .dhead .sm{ font-size:12.5px; font-weight:600; opacity:.92; margin-top:4px; }
#app .dsec{ padding:14px 14px 4px; }
#app .dsec h4{ font-size:12.5px; color:var(--muted); font-weight:800; margin:0 4px 8px; }
#app .dlink{ width:100%; display:flex; align-items:center; gap:12px; padding:11px 10px; margin-bottom:6px; border:0; border-radius:14px; background:rgba(20,33,61,.05); font-weight:800; text-align:left; }
#app .dlink .ic{ width:38px; height:38px; border-radius:12px; display:grid; place-items:center; color:#fff; flex:none; }
#app .dlink .ic svg{ width:20px; height:20px; }
#app .cs{ display:flex; gap:8px; margin-bottom:8px; }
#app .cs a.wa{ flex:1; display:flex; align-items:center; gap:10px; padding:10px 12px; border-radius:14px; background:#e6f7ee; color:#0b6b3a; text-decoration:none; font-weight:800; font-size:13px; line-height:1.25; min-width:0; }
#app .cs a.wa small{ display:block; font-weight:700; opacity:.85; }
#app .cs a.tel{ width:48px; flex:none; display:grid; place-items:center; border-radius:14px; background:var(--infobg); color:var(--info); }
#app .cs svg{ width:20px; height:20px; flex:none; }
#app .dfoot{ margin-top:auto; padding:10px 14px calc(16px + env(safe-area-inset-bottom,0px)); }
#app .sheet-wrap{ position:fixed; inset:0; z-index:60; display:flex; align-items:flex-end; justify-content:center; background:rgba(5,15,40,.5); opacity:0; visibility:hidden; transition:opacity .3s, visibility 0s .3s; }
#app .sheet-wrap.open{ opacity:1; visibility:visible; transition-delay:0s; }
#app .sheet{ width:min(100%,560px); max-height:92vh; max-height:92dvh; overflow-y:auto; background:#fff; border-radius:26px 26px 0 0; padding:18px 18px calc(18px + env(safe-area-inset-bottom,0px)); transform:translateY(50px); transition:transform .5s cubic-bezier(.16,.84,.24,1); }
#app .sheet-wrap.open .sheet{ transform:none; }
#app .sheet h3{ font-size:18px; font-weight:800; margin-bottom:14px; }
#app .sheet .sbtn{ display:grid; grid-template-columns:1fr 1.4fr; gap:10px; margin-top:6px; }
#app .sheet .sbtn .btn-s{ height:50px; justify-content:center; border-radius:16px; }
#app #sheetMsg{ min-height:18px; margin-bottom:6px; font-size:13px; color:var(--bad); font-weight:700; }
#app .toast{ position:fixed; left:50%; bottom:calc(86px + env(safe-area-inset-bottom,0px)); z-index:80; transform:translate(-50%,20px); opacity:0; background:#14213d; color:#fff; padding:12px 18px; border-radius:14px; font-size:13.5px; font-weight:700; max-width:88vw; text-align:center; transition:all .35s; pointer-events:none; }
#app .toast.on{ opacity:1; transform:translate(-50%,0); }
#app .only-print{ display:none; }
@media print{#app{ background:#fff; }
#app .bg,#app .bg-shade,#app .bar,#app .drawer,#app .scrim,#app .sheet-wrap,#app .toast,#app .noprint{ display:none !important; }
#app main{ max-width:none; padding:0; }
#app .card,#app .item{ box-shadow:none; backdrop-filter:none; background:#fff; border:1px solid #ccc; }
#app .only-print{ display:block; margin-bottom:10px; }
#app details{ display:block; }
#app details>summary{ display:none; }
#app .credit{ background:#fff; }}
@media (prefers-reduced-motion:reduce){#app *{ animation-duration:.01s !important; transition-duration:.01s !important; }}
#app #view.enter>*{animation:rise .6s cubic-bezier(.16,.84,.24,1) both}
#app #view.enter>*:nth-child(2){animation-delay:.07s}#app #view.enter>*:nth-child(3){animation-delay:.14s}#app #view.enter>*:nth-child(4){animation-delay:.21s}#app #view.enter>*:nth-child(n+5){animation-delay:.28s}
@keyframes rise{from{opacity:0;transform:translateY(18px) scale(.98)}to{opacity:1;transform:none}}
@keyframes pop{from{opacity:0;transform:scale(.4)}to{opacity:1;transform:none}}
@keyframes ringIn{to{stroke-dashoffset:var(--o)}}
@keyframes slam{from{opacity:0;transform:rotate(-8deg) scale(2.4)}to{opacity:1;transform:rotate(-8deg) scale(1)}}
#app .tiles .tile:last-child:nth-child(odd){grid-column:1/-1;min-height:110px}
#app .kh{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}#app .kh h3{margin:0}
#app .krow{display:flex;align-items:center;gap:16px;margin-bottom:12px}
#app .ring{position:relative;width:108px;height:108px;flex:none;display:flex;flex-direction:column;align-items:center;justify-content:center}
#app .ring svg{position:absolute;inset:0;transform:rotate(-90deg)}#app .ring circle{fill:none;stroke-width:10;stroke-linecap:round}
#app .rb{stroke:rgba(20,33,61,.14)}#app .rf{stroke:#e30613;stroke-dasharray:251.3;stroke-dashoffset:251.3;animation:ringIn 1.4s cubic-bezier(.2,.8,.2,1) .2s forwards}
#app .ring b{font-size:24px;font-weight:800;line-height:1}#app .ring span{font-size:10px;color:var(--muted)}
#app .kst{display:grid;gap:8px;flex:1}#app .kst div{background:rgba(255,255,255,.7);border-radius:14px;padding:8px 12px}#app .kst b{display:block;font-size:20px;font-weight:800}#app .kst span{font-size:12px;color:var(--muted)}
#app .cal{display:grid;grid-template-columns:repeat(7,1fr);gap:6px;text-align:center}#app .cal>span{font-size:11px;color:var(--muted);font-weight:800}
#app .cd{position:relative;height:42px;border:0;border-radius:12px;font-weight:800;background:rgba(255,255,255,.7);animation:pop .45s both;animation-delay:var(--d)}
#app .cd small{position:absolute;right:5px;top:2px;font-size:9px}
#app .cd.g{background:#bff0d4;color:#0b6b3a}#app .cd.y{background:#ffe38a;color:#7a5200}#app .cd.m{background:#ffc9ce;color:#b3121f}#app .cd.f{opacity:.55}
#app .cd.td{outline:2px solid var(--red)}#app .cd.sel{box-shadow:0 0 0 3px var(--yellow);transform:scale(1.08)}
#app .th{width:44px;height:44px;border-radius:10px;overflow:hidden;border:0;padding:0;background:#e8ecf5;display:grid;place-items:center;color:var(--muted)}
#app .th img{width:100%;height:100%;object-fit:cover}#app .th svg{width:20px;height:20px}#app .th.big{width:76px;height:76px;flex:none}
#app td.ket{white-space:normal;min-width:170px;max-width:260px}#app .acts2{display:flex;gap:6px}
#app .pbox{margin:6px 0 10px;height:170px;border-radius:14px;background:rgba(20,33,61,.06);display:grid;place-items:center;overflow:hidden;color:var(--muted);font-weight:600}
#app .pbox img{width:100%;height:100%;object-fit:contain}
#app .pend{display:flex;gap:12px;padding:10px 0;border-bottom:1px solid rgba(20,33,61,.08)}#app .pend:last-child{border-bottom:0}
#app .gal{display:grid;grid-template-columns:1fr 1fr;gap:10px}
#app .gi{position:relative;margin:0;border-radius:16px;overflow:hidden;background:#fff;box-shadow:0 6px 16px rgba(20,33,61,.15);animation:pop .5s both;animation-delay:var(--d)}
#app .gi>img{width:100%;aspect-ratio:4/3;object-fit:cover;display:block}#app .gi figcaption{padding:8px;font-size:11.5px;display:grid;gap:2px;font-weight:700}
#app .gi .sgn{display:flex;align-items:center;gap:6px;font-size:10.5px;color:var(--ok)}#app .gi .sgn img{height:22px;background:#fff}
#app .stamp{position:absolute;top:8px;right:8px;padding:3px 8px;border:2px solid #0b7a42;color:#0b7a42;background:rgba(255,255,255,.88);border-radius:6px;font-size:11px;font-weight:800;transform:rotate(-8deg);animation:slam .5s cubic-bezier(.2,1.6,.4,1) .35s both}
#app canvas.sgc{width:100%;height:140px;border:2px dashed rgba(20,33,61,.3);border-radius:14px;background:#fff;touch-action:none;margin-bottom:8px;display:block}
#app .rpf{width:64px;height:64px;object-fit:cover;border-radius:8px;display:block}#app .pv{width:100%;border-radius:14px;margin-bottom:10px}#app .appr{display:flex;align-items:center;gap:10px;font-size:13px}#app .appr img{height:50px;background:#fff;border-radius:8px}
#app .badge.pulse{animation:bpulse 1.2s infinite}
@keyframes bpulse{0%{box-shadow:0 0 0 0 rgba(227,6,19,.55)}70%{box-shadow:0 0 0 9px rgba(227,6,19,0)}100%{box-shadow:0 0 0 0 rgba(227,6,19,0)}}
#app tr.hl td{animation:hl 2.6s ease-out}
@keyframes hl{from{background:#fff1a0}to{background:transparent}}
#app .sk,#app .skb{background:linear-gradient(90deg,#e6eaf3 25%,#f6f8fc 50%,#e6eaf3 75%);background-size:200% 100%;animation:shim 1.2s infinite linear}
#app .skb{aspect-ratio:4/3}
@keyframes shim{to{background-position:-200% 0}}
#app .ring.full b::after{content:' ✓';color:#0b9a55}
#app .cal.slr{animation:sr .35s cubic-bezier(.2,.8,.2,1)}#app .cal.sll{animation:sl .35s cubic-bezier(.2,.8,.2,1)}
@keyframes sr{from{opacity:0;transform:translateX(36px)}}@keyframes sl{from{opacity:0;transform:translateX(-36px)}}
#app .bars{display:flex;align-items:flex-end;gap:8px;height:118px;margin-top:6px}
#app .bc{flex:1;display:flex;flex-direction:column;justify-content:flex-end;align-items:center;gap:3px}
#app .bc i{display:block;width:100%;border-radius:8px 8px 0 0;transform-origin:bottom;min-height:3px;animation:grow .8s cubic-bezier(.2,.8,.2,1) both}
@keyframes grow{from{transform:scaleY(0)}}
#app .bv{font-size:10.5px;font-weight:800}#app .bm{font-size:10.5px;color:var(--muted)}
#app .rk{display:grid;grid-template-columns:96px 1fr 40px;gap:8px;align-items:center;margin-top:8px;font-size:12.5px}
#app .rk .rt{height:12px;border-radius:8px;background:rgba(20,33,61,.1);overflow:hidden}
#app .rk .rt i{display:block;height:100%;border-radius:8px;background:linear-gradient(90deg,#e30613,#ffc20e);animation:wid 1s cubic-bezier(.2,.8,.2,1) both}
@keyframes wid{from{width:0!important}}
#app.lite *{animation-duration:.01s!important;animation-delay:0s!important;transition-duration:.01s!important}
#app.lite .bg{animation:none;transform:none}
#app.lite .card,#app.lite .tile,#app.lite .item,#app.lite .credit,#app.lite .drawer{backdrop-filter:none;-webkit-backdrop-filter:none}
.cf{position:fixed;top:-14px;width:9px;height:14px;z-index:300;border-radius:2px;pointer-events:none;animation:cfall linear both}
@keyframes cfall{to{top:105vh;margin-left:40px;transform:rotate(720deg)}}
.ptr{position:fixed;top:12px;left:50%;margin-left:-20px;width:40px;height:40px;z-index:200;border-radius:50%;background:#fff;box-shadow:0 6px 18px rgba(0,0,0,.25);display:grid;place-items:center;animation:ptrin 1s ease both}
.ptr i{width:20px;height:20px;border:3px solid #e30613;border-top-color:transparent;border-radius:50%;animation:spin .7s linear infinite}
@keyframes ptrin{0%{transform:translateY(-60px)}25%,75%{transform:none}100%{transform:translateY(-60px);opacity:0}}
@media print{@page{size:A4 landscape;margin:10mm}#app .tblwrap{overflow:visible}#app th,#app td{white-space:normal;font-size:11px}#app tr{break-inside:avoid}#app th{background:#eee!important;-webkit-print-color-adjust:exact;print-color-adjust:exact}#app .rpf{width:90px;height:90px}}
#app .pgs{padding-bottom:4px}
#app .pg{margin-bottom:16px}
#app .pg h4{margin:4px 0 8px;font-size:13px;color:var(--muted)}
#app .pgrid{display:grid;grid-template-columns:repeat(2,1fr);gap:10px;align-items:start}
#app .pgrid figure{margin:0;background:rgba(255,255,255,.88);border-radius:12px;overflow:hidden;box-shadow:0 3px 10px rgba(20,33,61,.12)}
#app .pgrid img{width:100%;height:auto;display:block}
#app .pgrid figcaption{padding:6px 8px;font-size:11px;font-weight:700;line-height:1.4}
@media print{#app .pgs{break-before:page}#app .pg{break-after:page;page-break-after:always;margin:0}#app .pg:last-child{break-after:auto;page-break-after:auto}#app .pgrid{grid-template-columns:repeat(5,1fr);gap:6px}#app .pgrid img{max-height:80mm;object-fit:contain}#app .pgrid figcaption{font-size:9px;padding:4px}#app .pgrid figure{break-inside:avoid;box-shadow:none;border:1px solid #ccc}}
body{ margin:0; background:#dfe6f2; }
#login{ position:fixed; inset:0; z-index:100; }
#app[hidden]{ display:none !important; }
@media print{ #login{ display:none !important; } }

@media screen{
#app{ --ink:#f4f6fb; --muted:#c3cadd; --card:rgba(6,9,20,.58); --line:rgba(255,255,255,.14); --ok:#7ff0b0; --okbg:rgba(46,204,113,.22); --bad:#ff9aa4; --badbg:rgba(255,80,96,.24); --warn:#ffd96b; --warnbg:rgba(255,194,14,.22); --info:#a9c8ff; --infobg:rgba(90,150,255,.24); }
#app .card,#app .item,#app .tile{ box-shadow:0 8px 26px rgba(0,0,0,.35); }
#app .stat,#app .kst div,#app .cd{ background:rgba(255,255,255,.1); border-color:rgba(255,255,255,.14); }
#app table{ background:rgba(6,9,20,.35); }
#app th{ background:rgba(227,6,19,.5); color:#fff; }
#app th,#app td{ border-color:rgba(255,255,255,.14)!important; }
#app .in{ background:rgba(255,255,255,.1); border-color:rgba(255,255,255,.24); color:#fff; color-scheme:dark; }
#app .in::placeholder{ color:#aab2c8; }
#app .btn-s,#app .mini,#app .chip,#app .seg button{ background:rgba(255,255,255,.1); border-color:rgba(255,255,255,.24); color:#fff; }
#app .credit{ background:rgba(6,9,20,.5); color:#fff; border-top-color:rgba(255,255,255,.14); }
#app .drawer{ background:rgba(8,10,22,.86); }
#app .dlink{ background:rgba(255,255,255,.08); }
#app .sheet{ background:rgba(12,15,30,.94); color:#fff; }
#app .pbox,#app .th{ background:rgba(255,255,255,.1); }
#app .gi,#app .pgrid figure{ background:rgba(6,9,20,.6); }
#app .sk,#app .skb{ background:linear-gradient(90deg,rgba(255,255,255,.08) 25%,rgba(255,255,255,.22) 50%,rgba(255,255,255,.08) 75%); background-size:200% 100%; }
#app .rb{ stroke:rgba(255,255,255,.2); }
#app .rk .rt{ background:rgba(255,255,255,.15); }
#app .cd.g{ background:rgba(46,204,113,.36); color:#c8ffe0; }
#app .cd.y{ background:rgba(255,194,14,.36); color:#fff1b8; }
#app .cd.m{ background:rgba(255,80,96,.36); color:#ffc9ce; }
#app .cd.f{ opacity:.5; }
#app .meta,#app .empty{ text-shadow:0 1px 2px rgba(0,0,0,.4); }
}
#app .card,#app .item,#app .tile,#app .credit{ backdrop-filter:blur(3px); -webkit-backdrop-filter:blur(3px); }
#app .gal{ grid-template-columns:repeat(3,1fr); gap:8px; }
#app .gh{ margin:14px 2px 8px; font-weight:800; font-size:14px; display:flex; justify-content:space-between; align-items:center; }
#app .gh:first-child{ margin-top:6px; }
#app .gh span{ font-size:12px; color:var(--muted); font-weight:700; }
#app .gi{ background:rgba(6,9,20,.55); border-radius:14px; }
#app .gi>img,#app .gi>.skb{ width:100%; aspect-ratio:3/4; object-fit:contain; background:rgba(0,0,0,.45); }
#app .gi figcaption{ padding:6px 7px 7px; font-size:10.5px; line-height:1.3; gap:1px; }
#app .gi figcaption b{ display:block; font-size:11.5px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
#app .gi figcaption span{ display:block; color:var(--muted); font-weight:600; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
#app{box-sizing:border-box;padding-bottom:calc(64px + env(safe-area-inset-bottom,0px))}
#app main{overflow-x:clip}
#app #view.sr{animation:vsr .42s cubic-bezier(.2,.85,.25,1)}#app #view.sl{animation:vsl .42s cubic-bezier(.2,.85,.25,1)}
@keyframes vsr{from{opacity:0;transform:translateX(56px)}}@keyframes vsl{from{opacity:0;transform:translateX(-56px)}}
#app .bnav{position:fixed;left:0;right:0;bottom:0;z-index:15;display:flex;height:calc(60px + env(safe-area-inset-bottom,0px));padding-bottom:env(safe-area-inset-bottom,0px);background:rgba(6,9,20,.88);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);border-top:1px solid rgba(255,255,255,.14);--p:0}
#app .bnav button{flex:1;position:relative;z-index:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;background:none;border:0;color:#c3cadd;font-size:10.5px;font-weight:700;font-family:inherit;transition:color .25s}
#app .bnav button.on{color:#fff}#app .bnav svg{width:22px;height:22px}
#app .bind{position:absolute;top:6px;left:calc(var(--p)*20% + 5px);width:calc(20% - 10px);height:48px;border-radius:16px;background:linear-gradient(135deg,#e30613,#ff7a1a);transition:left .42s cubic-bezier(.2,.9,.25,1.12),opacity .2s}
#app .bnav.none .bind{opacity:0}
#app #toast{bottom:calc(76px + env(safe-area-inset-bottom,0px))}
#app #btnHome.logo{width:104px;border-radius:22px;background:#fff;border-color:rgba(255,255,255,.9);padding:2px 6px}
#app #btnHome.logo img{width:100%;height:100%;object-fit:contain}
#app .btn-p .spn{display:inline-block;width:20px;height:20px;border:3px solid rgba(255,255,255,.4);border-top-color:#fff;border-radius:50%;animation:spin .7s linear infinite;vertical-align:middle}
#app .btn-p .ck{width:24px;height:24px;vertical-align:middle;stroke:#fff;fill:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:26;stroke-dashoffset:26;animation:ckd .45s ease forwards}
@keyframes ckd{to{stroke-dashoffset:0}}
#app .al{display:flex;align-items:center;gap:10px;padding:8px 0;border-bottom:1px solid rgba(255,255,255,.12)}
#app .al .no{width:26px;height:26px;border-radius:50%;background:var(--red);color:#fff;display:grid;place-items:center;font-size:12px;flex:none}
#app .al .ai{flex:1;min-width:0}#app .al .ar{display:flex;flex-direction:column;gap:6px;align-items:flex-end}
#app .alist{max-height:46vh;overflow:auto}
#app .lg{padding:10px 0;border-bottom:1px solid rgba(255,255,255,.12)}#app .lg:last-child{border-bottom:0}
#app .lg .ih{display:flex;justify-content:space-between;align-items:center;margin-bottom:4px}#app .lg a{color:#ffd96b;font-weight:700}
#app .sgb{margin-bottom:14px}#app .sgi{display:block;height:64px;background:#fff;border-radius:10px;margin:8px 0;padding:4px}
.lb{position:fixed;inset:0;z-index:400;display:none;touch-action:none;color:#fff;font-family:inherit}.lb.on{display:block}
.lbbg{position:absolute;inset:0;background:rgba(0,0,0,.93);animation:lbin .3s both}.lb.out .lbbg{opacity:0;transition:opacity .22s;animation:none}
@keyframes lbin{from{opacity:0}}
.lb img{position:absolute;left:0;right:0;top:0;bottom:0;margin:auto;max-width:100%;max-height:76vh;user-select:none;-webkit-user-drag:none;will-change:transform}
.lb.out img{opacity:0;transition:opacity .2s}
.lbc{position:absolute;left:0;right:0;bottom:0;padding:14px 16px calc(16px + env(safe-area-inset-bottom,0px));font-size:13px;line-height:1.5;background:linear-gradient(transparent,rgba(0,0,0,.8))}
.lbc b{font-size:15px}.lbn{margin-top:4px;color:#c3cadd;font-weight:700}
.lbx{position:absolute;top:calc(12px + env(safe-area-inset-top,0px));right:12px;width:42px;height:42px;border-radius:50%;border:0;background:rgba(255,255,255,.18);color:#fff;display:grid;place-items:center}
.lbx svg{width:22px;height:22px}
#app .bar h1{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}

/* ===== Animasi tambahan: lonceng, shake form, odometer ===== */
#app .bell{display:inline-flex;width:20px;height:20px;margin-right:6px;vertical-align:-4px;color:#e30613;transform-origin:50% 10%}
#app .bell svg{width:20px;height:20px}
#app .bell.once{animation:bellring 3.2s ease-in-out 1}
#app .bell.ring{animation:bellring 3.2s ease-in-out infinite}
@keyframes bellring{0%,34%,100%{transform:rotate(0)}4%{transform:rotate(18deg)}8%{transform:rotate(-16deg)}12%{transform:rotate(13deg)}16%{transform:rotate(-10deg)}20%{transform:rotate(7deg)}24%{transform:rotate(-4deg)}28%{transform:rotate(2deg)}}
@keyframes fshk{10%,90%{transform:translateX(-1px)}20%,80%{transform:translateX(2px)}30%,50%,70%{transform:translateX(-3px)}40%,60%{transform:translateX(3px)}}
#app .fshk{animation:fshk .42s cubic-bezier(.36,.07,.19,.97) both}
#app .f.bad .in{border-color:var(--bad)!important;box-shadow:0 0 0 3px rgba(227,6,19,.16)}
#app .pbox.bad,#app canvas.sgc.bad{outline:2px solid var(--bad);outline-offset:2px}
#app .od{display:inline-flex;line-height:1;vertical-align:top;font-variant-numeric:tabular-nums}
#app .dg{display:inline-block;height:1em;overflow:hidden;width:1ch;text-align:center}
#app .dc{display:block;will-change:transform}
#app .dc i{display:block;height:1em;line-height:1em;font-style:normal}
/* bug: animasi berulang jadi berkedip 100x/detik di mode hemat & reduced-motion */
#app.lite .bell,#app.lite .badge.pulse,#app.lite .sk,#app.lite .skb{animation:none!important}
#app.lite .spn{animation-duration:.7s!important}
@media (prefers-reduced-motion:reduce){#app .bell,#app .badge.pulse,#app .sk,#app .skb{animation:none!important}#app .spn{animation-duration:.7s!important}}

