/* Kinerio · web app. Token & komponen dari prototype 04-webapp/design/src/app.html (spec v1 bagian 1). Tampilan terang tetap. */
:root{
  --navy:#1B2A4A; --navy2:#24365C; --blue:#2E5AA7; --bluel:#E4ECF8; --blued:#1F4486;
  --green:#2E8B57; --greenl:#E2F2E8; --greend:#1D6640;
  --yel:#F2B233; --yell:#FDF1D3; --yeld:#7A5300;
  --red:#C2412D; --redl:#FBE4DF; --redd:#93301F;
  --paper:#F7F8FA; --card:#FFFFFF; --ink:#1E2430; --mute:#5A6475; --line:#DDE2EA; --rule:#E9EDF2;
  --disp:"Plus Jakarta Sans",system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;
  --sans:"Inter",system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;
  --mono:"JetBrains Mono",ui-monospace,"SF Mono",Menlo,monospace;
  --shadow:0 0 0 1px var(--line),0 6px 16px -12px rgba(27,42,74,.25);
  --col:480px;
  color-scheme:light;
}
*{box-sizing:border-box}
html{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-webkit-text-size-adjust:100%;text-size-adjust:100%}
body{margin:0;background:#E9EDF3;color:var(--ink);font-family:var(--sans);font-size:16px;line-height:1.45;overflow-x:hidden}
button,input,select,textarea{font:inherit;color:inherit}
button{cursor:pointer}
a{color:var(--blue)}
:focus-visible{outline:3px solid var(--yel);outline-offset:2px}
.num,.mono{font-family:var(--mono);font-variant-numeric:tabular-nums}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
svg.i{fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;flex:none}

/* ---------- kerangka: satu kolom HP, di desktop jadi kolom tengah ---------- */
.scr{position:relative;width:100%;max-width:var(--col);margin:0 auto;min-height:100vh;min-height:100dvh;background:var(--paper);display:flex;flex-direction:column}
@media (min-width:600px){.scr{box-shadow:0 0 0 1px var(--line),0 30px 60px -40px rgba(27,42,74,.45)}}
.scr.navy{background:var(--navy)}
.top{flex:none;min-height:64px;padding:12px 16px 10px;display:flex;align-items:center;gap:12px;padding-top:max(12px,env(safe-area-inset-top))}
.top .tt{flex:1;min-width:0}
.top .t{font-family:var(--disp);font-weight:700;font-size:20px;line-height:1.2;text-wrap:balance}
.top .s{font-size:14px;color:var(--mute);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.navy .top .t{color:#fff}.navy .top .s{color:#B9C4D9}
.ibtn{flex:none;width:44px;height:44px;border-radius:14px;border:0;background:var(--card);display:grid;place-items:center;box-shadow:inset 0 0 0 1.5px var(--line);color:var(--ink);text-decoration:none}
.ibtn svg{width:22px;height:22px}
.navy .ibtn{background:rgba(255,255,255,.08);box-shadow:inset 0 0 0 1.5px rgba(255,255,255,.16);color:#fff}
.main{flex:1;padding:4px 16px 24px;display:flex;flex-direction:column;gap:12px}
.main>*{flex:none;min-width:0}
.has-tab .main{padding-bottom:calc(108px + env(safe-area-inset-bottom))}
.card{background:var(--card);border-radius:18px;box-shadow:var(--shadow);padding:14px;min-width:0}
.lbl{font-size:13px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--mute)}
.row{display:flex;align-items:center;gap:10px}
.between{justify-content:space-between}
.note{font-size:13.5px;color:var(--mute);line-height:1.4;text-wrap:pretty}
.warn{display:flex;gap:8px;align-items:flex-start;font-size:13.5px;line-height:1.4;color:var(--redd);background:var(--redl);border-radius:12px;padding:10px 12px}
.warn svg{width:17px;height:17px;margin-top:1px}
.foot{font-size:12.5px;color:var(--mute);line-height:1.45;text-wrap:pretty;padding-top:8px;border-top:1px solid var(--rule)}
.navy .foot{color:#9FB0CC;border-color:rgba(255,255,255,.12)}

/* tombol */
.btn{min-height:52px;border-radius:14px;border:0;padding:0 18px;font-family:var(--disp);font-weight:700;font-size:17px;display:inline-flex;align-items:center;justify-content:center;gap:8px;text-decoration:none;text-align:center;line-height:1.2}
.btn svg{width:20px;height:20px}
.btn.pri{background:var(--blue);color:#fff}
.btn.navyb{background:var(--navy);color:#fff}
.btn.sec{background:var(--card);color:var(--blued);box-shadow:inset 0 0 0 1.5px var(--line)}
.btn.ghost{background:transparent;color:var(--mute);min-height:44px;font-size:15.5px}
.btn.danger{background:transparent;color:var(--redd);min-height:44px;font-size:15.5px;box-shadow:inset 0 0 0 1.5px #EBC2B9}
.btn.full{width:100%}
.btn.sm{min-height:44px;font-size:15px;padding:0 14px}
.btn[disabled]{opacity:.5;cursor:not-allowed}
.btn.busy{position:relative;color:transparent!important}
.btn.busy::after{content:"";position:absolute;width:20px;height:20px;border-radius:50%;border:2.5px solid rgba(255,255,255,.5);border-top-color:#fff;animation:spin .8s linear infinite}
.btn.sec.busy::after{border-color:var(--bluel);border-top-color:var(--blue)}
@keyframes spin{to{transform:rotate(360deg)}}
.pill{display:inline-flex;align-items:center;gap:5px;min-height:26px;padding:0 9px;border-radius:999px;font-size:13px;font-weight:700;white-space:nowrap}
.pill.g{background:var(--greenl);color:var(--greend)}
.pill.y{background:var(--yell);color:var(--yeld)}
.pill.r{background:var(--redl);color:var(--redd)}
.pill.b{background:var(--bluel);color:var(--blued)}
.pill svg{width:14px;height:14px}
.cp{min-height:40px;min-width:62px;padding:0 10px;border-radius:10px;border:0;background:var(--bluel);color:var(--blued);font-weight:700;font-size:14px;display:inline-flex;align-items:center;justify-content:center;gap:5px;flex:none;white-space:nowrap;text-decoration:none}
.cp svg{width:15px;height:15px}
.cp.done{background:var(--greenl);color:var(--greend)}
.cp.navyc{background:var(--navy);color:#fff;min-height:44px}
.cp.yl{background:var(--yell);color:var(--yeld)}
@media (prefers-reduced-motion:no-preference){
  .cp,.btn,.ibtn,.tab,.d,.seg button,.tabs3 button{transition-property:transform,background-color,box-shadow,color;transition-duration:150ms;transition-timing-function:ease-out}
  .btn:active,.cp:active,.ibtn:active{transform:scale(.97)}
}

/* form */
.fld{display:grid;gap:6px}
.fld>label,.fld>.lab{font-size:14.5px;font-weight:700}
.inp{width:100%;min-height:48px;padding:10px 12px;border-radius:12px;border:0;box-shadow:inset 0 0 0 1.5px var(--line);background:var(--card);font-size:16px}
.inp:focus{outline:none;box-shadow:inset 0 0 0 2px var(--blue)}
textarea.inp{min-height:110px;resize:vertical;line-height:1.45}
select.inp{appearance:none;background-image:linear-gradient(45deg,transparent 50%,var(--mute) 50%),linear-gradient(135deg,var(--mute) 50%,transparent 50%);background-position:calc(100% - 18px) 50%,calc(100% - 13px) 50%;background-size:5px 5px;background-repeat:no-repeat;padding-right:34px}
.seg{display:grid;grid-template-columns:1fr 1fr;background:var(--rule);border-radius:12px;padding:3px;gap:3px}
.seg button{min-height:44px;display:grid;place-items:center;border-radius:10px;font-size:15px;font-weight:700;color:var(--mute);border:0;background:transparent}
.seg button[aria-pressed="true"]{background:var(--card);color:var(--ink);box-shadow:0 1px 3px rgba(0,0,0,.12)}
.field{display:flex;justify-content:space-between;align-items:center;gap:10px;min-height:52px;padding:0 6px 0 12px;border-radius:12px;box-shadow:inset 0 0 0 1.5px var(--line);background:var(--card);font-weight:600}
.field input{border:0;background:transparent;font-family:var(--mono);color:var(--blued);font-weight:600;min-height:44px;text-align:right;min-width:0;max-width:60%}
.switch{position:relative;width:52px;height:32px;flex:none}
.switch input{position:absolute;inset:0;opacity:0;margin:0;cursor:pointer}
.switch i{position:absolute;inset:0;border-radius:999px;background:var(--line);transition:background-color .15s}
.switch i::after{content:"";position:absolute;top:3px;left:3px;width:26px;height:26px;border-radius:50%;background:#fff;box-shadow:0 1px 3px rgba(0,0,0,.25);transition:transform .15s}
.switch input:checked+i{background:var(--green)}
.switch input:checked+i::after{transform:translateX(20px)}
.switch input:focus-visible+i{outline:3px solid var(--yel);outline-offset:2px}

/* tab bar */
.tabbar{position:fixed;left:50%;transform:translateX(-50%);bottom:0;width:100%;max-width:var(--col);z-index:5;height:calc(72px + env(safe-area-inset-bottom));padding:6px 10px env(safe-area-inset-bottom);background:var(--card);box-shadow:0 -1px 0 var(--line);display:grid;grid-template-columns:repeat(4,1fr)}
.tab{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;font-size:12.5px;font-weight:600;color:var(--mute);text-decoration:none;border-radius:12px;min-height:56px}
.tab svg{width:24px;height:24px}
.tab[aria-current="page"]{color:var(--blue)}

/* ---------- masuk ---------- */
.login{display:flex;flex-direction:column;gap:16px;padding:max(28px,env(safe-area-inset-top)) 20px 28px}
.brand{display:flex;align-items:center;gap:10px;font-family:var(--disp);font-weight:800;font-size:22px;color:var(--navy)}
.brand i{width:36px;height:36px;border-radius:11px;background:var(--navy);display:grid;place-items:center}
.brand i::after{content:"";width:14px;height:14px;border-radius:4px;background:var(--yel);box-shadow:inset 0 0 0 3px var(--yel)}
.login h1{margin:0;font-family:var(--disp);font-weight:800;font-size:26px;line-height:1.2;text-wrap:balance}
.login p{margin:0}
.boot{min-height:100vh;display:grid;place-items:center}
.spin{width:28px;height:28px;border-radius:50%;border:3px solid var(--bluel);border-top-color:var(--blue);animation:spin .8s linear infinite}

/* ---------- s1 tempel ---------- */
.hero1{height:132px;border-radius:20px;overflow:hidden;background:#E7ECF3 center/cover no-repeat}
.steps{display:flex;gap:6px;align-items:center;font-size:13.5px;font-weight:700;color:var(--mute);flex-wrap:wrap}
.steps span{display:inline-grid;place-items:center;width:24px;height:24px;border-radius:50%;background:var(--line);color:var(--ink);font-family:var(--mono);font-size:12.5px;margin-left:6px}
.steps span:first-child{margin-left:0}
.steps span.on{background:var(--blue);color:#fff}
.steps b.on{color:var(--ink)}
.paste{font-family:var(--mono);font-size:13.5px;line-height:1.5;min-height:150px;box-shadow:inset 0 0 0 1.5px var(--blue);background:var(--paper)}
.h2{font-family:var(--disp);font-weight:800;font-size:22px;line-height:1.2;margin:0;text-wrap:balance}
.parsed{display:grid;gap:6px;grid-template-columns:minmax(0,1fr)}
.prow{display:flex;gap:10px;align-items:center;font-size:15px;font-weight:600;min-height:44px;width:100%;border:0;background:transparent;padding:0;text-align:left}
.prow .k{font-family:var(--mono);font-size:13px;color:var(--blued);background:var(--bluel);border-radius:8px;padding:3px 7px;flex:none}
.prow .x{flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.prow .c{font-size:13px;color:var(--mute);font-weight:600;flex:none}
.redit[hidden]{display:none}
.redit{display:grid;gap:8px;padding:10px;border-radius:14px;background:var(--paper);box-shadow:inset 0 0 0 1px var(--line)}
.bgrid{display:grid;gap:4px;overflow-x:auto}
.bgrid table{border-collapse:separate;border-spacing:3px;width:100%}
.bgrid th{font-size:12px;font-weight:700;color:var(--mute);text-align:center;padding:0 0 2px}
.bgrid th.r{text-align:left;font-family:var(--mono);color:var(--blued);white-space:nowrap;padding-right:4px}
.bgrid td button{width:100%;min-width:24px;height:36px;border-radius:8px;border:0;background:var(--rule);display:grid;place-items:center;color:#fff;padding:0}
.bgrid td button[aria-pressed="true"]{background:var(--green)}
.bgrid td button svg{width:14px;height:14px}

/* ---------- s2 skor ---------- */
.gauge{display:flex;align-items:center;gap:18px;padding:4px 20px 20px;color:#fff}
.ring{position:relative;width:132px;height:132px;flex:none}
.ring svg{width:132px;height:132px;transform:rotate(-90deg)}
.ring .v{position:absolute;inset:0;display:grid;place-items:center;align-content:center}
.ring .v b{font-family:var(--mono);font-size:44px;line-height:1;font-weight:700}
.ring .v span{font-size:13px;color:#B9C4D9;font-weight:600}
.gtxt{display:grid;gap:6px;min-width:0}
.gtxt h2{margin:0;font-family:var(--disp);font-size:21px;line-height:1.2;font-weight:800;text-wrap:balance}
.gtxt p{margin:0;font-size:14.5px;color:#C7D0E2;line-height:1.35}
.sheet{flex:1;background:var(--paper);border-radius:26px 26px 0 0;display:flex;flex-direction:column}
.sheet .main{padding-top:16px}
.rhk{display:grid;gap:8px;padding:12px 14px;grid-template-columns:minmax(0,1fr)}
.rhk .h{display:flex;align-items:center;gap:10px}
.rhk .h b{font-family:var(--mono);font-size:13px;color:var(--mute);font-weight:700;flex:none}
.rhk .h .x{flex:1;min-width:0;font-weight:700;font-size:15.5px;line-height:1.25}
.rhk .h .sc{font-family:var(--mono);font-weight:700;font-size:17px;flex:none}
.months{display:grid;grid-template-columns:repeat(12,1fr);gap:3px}
.months i{height:10px;border-radius:3px;background:var(--rule)}
.months i.f{background:var(--green)}
.months i.e{background:var(--red);opacity:.28}
.months i.c{background:var(--red)}
.rhk .m{font-size:13.5px;color:var(--mute);font-weight:600}
.rhk.red{box-shadow:0 0 0 1.5px #F0B9AE,0 6px 16px -12px rgba(27,42,74,.25)}
.mlab{display:grid;grid-template-columns:repeat(12,1fr);gap:3px;font-size:10.5px;color:var(--mute);text-align:center;font-weight:600}

/* ---------- s3 hari ini ---------- */
.hello{flex:none;display:flex;gap:12px;align-items:center;padding:max(14px,env(safe-area-inset-top)) 16px 12px}
.ava{width:52px;height:52px;border-radius:16px;background:var(--navy);color:#fff;display:grid;place-items:center;font-family:var(--disp);font-weight:800;font-size:20px;flex:none}
.hello .t{font-family:var(--disp);font-weight:800;font-size:21px;line-height:1.15}
.hello .s{font-size:14.5px;color:var(--mute)}
.dl{display:flex;gap:12px;align-items:center;background:var(--navy);color:#fff;border-radius:18px;padding:14px;text-decoration:none}
.dl .big{font-family:var(--mono);font-size:30px;font-weight:700;line-height:1;font-variant-numeric:tabular-nums}
.dl .big small{display:block;font-family:var(--sans);font-size:12.5px;font-weight:600;color:#B9C4D9;margin-top:4px}
.dl .x{flex:1;min-width:0;font-size:14px;line-height:1.3;color:#DDE4F0}
.dl .x b{color:#fff;font-family:var(--disp);font-size:15.5px;display:block;margin-bottom:2px}
.dl .sc{flex:none;width:58px;height:58px;border-radius:16px;display:grid;place-items:center;align-content:center;font-family:var(--mono);font-weight:700;font-size:22px;line-height:1}
.dl .sc small{font-family:var(--sans);font-size:11px;font-weight:600;margin-top:3px;opacity:.85}
.dl .sc.y{background:rgba(242,178,51,.16);color:var(--yel)}
.dl .sc.r{background:rgba(194,65,45,.22);color:#F3A493}
.dl .sc.g{background:rgba(46,139,87,.22);color:#8FD6AE}
.catat{background:var(--blue);color:#fff;border-radius:22px;padding:16px;display:grid;gap:12px;box-shadow:0 18px 30px -18px rgba(46,90,167,.8)}
.catat .h{display:flex;align-items:center;gap:12px}
.catat .h .plus{width:48px;height:48px;border-radius:15px;background:#fff;color:var(--blue);display:grid;place-items:center;flex:none}
.catat .h .plus svg{width:26px;height:26px;stroke-width:2.6}
.catat .h b{font-family:var(--disp);font-size:21px;font-weight:800;display:block;line-height:1.15}
.catat .h span{font-size:14.5px;color:#DCE6F7}
.modes{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
.modes button{min-height:48px;border-radius:12px;background:rgba(255,255,255,.14);display:flex;align-items:center;justify-content:center;gap:7px;font-size:15.5px;font-weight:700;border:0;color:#fff}
.modes button:hover{background:rgba(255,255,255,.22)}
.modes svg{width:19px;height:19px}
.ent{display:flex;gap:12px;align-items:flex-start;padding:12px 0;border-top:1px solid var(--rule);text-decoration:none;color:inherit}
.ents .ent:first-child{border-top:0;padding-top:4px}
.ent .th{width:58px;height:58px;border-radius:12px;background:var(--paper) center/cover no-repeat;flex:none;box-shadow:0 0 0 1px rgba(0,0,0,.06);display:grid;place-items:center;color:var(--mute)}
.ent .th svg{width:22px;height:22px}
.ent .x{flex:1;min-width:0;display:grid;gap:5px}
.ent .tm{font-family:var(--mono);font-size:13px;color:var(--mute);font-weight:600}
.ent .u{font-weight:700;font-size:15.5px;line-height:1.3;overflow-wrap:anywhere;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
.ent .tags{display:flex;gap:6px;flex-wrap:wrap}
.linkbtn{border:0;background:transparent;color:var(--blue);font-weight:700;font-size:14px;min-height:40px;padding:0 4px;letter-spacing:0;text-transform:none;display:inline-flex;align-items:center;gap:5px}
.linkbtn svg{width:15px;height:15px}
.streak{display:flex;align-items:center;gap:10px;font-size:14.5px;font-weight:600}
.streak .sq{display:flex;gap:3px}
.streak .sq i{width:12px;height:22px;border-radius:4px;background:var(--green)}
.streak .sq i.n{background:var(--rule)}
.empty{display:grid;gap:4px;justify-items:start;padding:6px 0 2px;color:var(--mute);font-size:15px}

/* ---------- s4 catat (bottom sheet) ---------- */
.dim{position:fixed;inset:0;background:rgba(14,19,32,.48);z-index:20;opacity:0;transition:opacity .2s}
.dim.on{opacity:1}
.bsheet{position:fixed;left:50%;bottom:0;width:100%;max-width:var(--col);z-index:21;background:var(--card);border-radius:28px 28px 0 0;padding:10px 16px calc(20px + env(safe-area-inset-bottom));display:grid;gap:12px;max-height:94dvh;overflow-y:auto;overscroll-behavior:contain;transform:translate(-50%,100%);transition:transform .25s cubic-bezier(.2,.8,.2,1)}
.bsheet.on{transform:translate(-50%,0)}
@media (prefers-reduced-motion:reduce){.bsheet,.dim{transition:none}}
.grab{width:44px;height:5px;border-radius:3px;background:var(--line);margin:0 auto 2px}
.bsheet .hd{display:flex;align-items:center;justify-content:space-between;gap:10px}
.bsheet .hd b{font-family:var(--disp);font-size:20px;font-weight:800}
.tabs3{display:grid;grid-template-columns:repeat(3,1fr);gap:6px;background:var(--rule);border-radius:14px;padding:4px}
.tabs3 button{min-height:44px;border-radius:11px;display:flex;align-items:center;justify-content:center;gap:6px;font-size:15px;font-weight:700;color:var(--mute);border:0;background:transparent}
.tabs3 button[aria-selected="true"]{background:var(--card);color:var(--blue);box-shadow:0 1px 3px rgba(0,0,0,.12)}
.tabs3 svg{width:18px;height:18px}
.rec{display:flex;align-items:center;gap:12px;padding:12px;border-radius:16px;background:var(--bluel)}
.rec .mic{width:52px;height:52px;border-radius:50%;background:var(--blue);color:#fff;display:grid;place-items:center;flex:none;border:0}
.rec .mic.on{background:var(--red);box-shadow:0 0 0 6px rgba(194,65,45,.18)}
.rec .mic svg{width:24px;height:24px}
.wave{flex:1;display:flex;align-items:center;gap:3px;height:40px;min-width:0}
.wave i{flex:1;border-radius:2px;background:var(--blue);opacity:.35;height:20%}
.rec.on .wave i{opacity:.75;animation:wv 1s ease-in-out infinite alternate}
@keyframes wv{from{height:15%}to{height:95%}}
@media (prefers-reduced-motion:reduce){.rec.on .wave i{animation:none;height:60%}}
.rec .tm{font-family:var(--mono);font-weight:700;font-size:17px;color:var(--blued)}
.rec .hint{font-size:14px;font-weight:600;color:var(--blued);line-height:1.3}
.said{font-size:16.5px;line-height:1.45;min-height:96px}
.att{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.ph{position:relative;width:64px;height:64px;border-radius:12px;background:#E7ECF3 center/cover no-repeat;flex:none;box-shadow:0 0 0 1px rgba(0,0,0,.06);display:grid;place-items:center;color:var(--mute);font-size:12px;font-weight:700}
.ph .rm{position:absolute;top:-8px;right:-8px;width:28px;height:28px;border-radius:50%;border:0;background:var(--ink);color:#fff;display:grid;place-items:center;box-shadow:0 0 0 2px #fff}
.ph .rm svg{width:14px;height:14px}
.ph .bar{position:absolute;left:6px;right:6px;bottom:6px;height:4px;border-radius:2px;background:rgba(255,255,255,.6);overflow:hidden}
.ph .bar i{display:block;height:100%;background:var(--blue)}
.add{width:64px;height:64px;border-radius:12px;box-shadow:inset 0 0 0 1.5px var(--line);display:grid;place-items:center;color:var(--mute);flex:none;border:0;background:var(--card)}
.add svg{width:22px;height:22px}
.att .x{font-size:14px;color:var(--mute);line-height:1.3;flex:1;min-width:120px}
.sug{display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:14px;box-shadow:inset 0 0 0 1.5px var(--line);background:var(--paper)}
.sug.on{box-shadow:inset 0 0 0 1.5px var(--green);background:var(--greenl)}
.sug .x{flex:1;min-width:0}
.sug .x span{display:block;font-size:12.5px;font-weight:700;color:var(--mute);letter-spacing:.04em;text-transform:uppercase}
.sug.on .x span{color:var(--greend)}
.sug .x b{font-size:15.5px;line-height:1.25;display:block;overflow-wrap:anywhere}
.sug .ok{flex:none;min-height:40px;padding:0 12px;border-radius:10px;background:var(--green);color:#fff;font-weight:700;font-size:14px;border:0;display:inline-flex;align-items:center;gap:5px}
.sug .ok svg{width:15px;height:15px}
.sug.on .ok{background:transparent;color:var(--greend);box-shadow:inset 0 0 0 1.5px var(--green)}
.jam2{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.prog{font-size:14px;color:var(--blued);font-weight:600;text-align:center}

/* ---------- s5 entri jadi ---------- */
.okbar{display:flex;gap:10px;align-items:center;padding:10px 12px;border-radius:14px;background:var(--greenl);color:var(--greend);font-weight:700;font-size:14.5px;line-height:1.3}
.okbar.y{background:var(--yell);color:var(--yeld)}
.okbar svg{width:20px;height:20px;flex:none}
.f7{background:var(--card);border-radius:18px;box-shadow:0 0 0 1px var(--line);overflow:hidden}
.fr{display:grid;grid-template-columns:26px minmax(0,1fr) auto;gap:10px;align-items:center;padding:10px 12px;border-top:1px solid var(--rule)}
.fr:first-child{border-top:0}
.fr .no{font-family:var(--mono);font-size:13px;font-weight:700;color:var(--blued);width:26px;height:26px;border-radius:8px;background:var(--bluel);display:grid;place-items:center}
.fr .k{font-size:12.5px;font-weight:700;color:var(--mute);letter-spacing:.04em;text-transform:uppercase;display:flex;gap:6px;align-items:center;flex-wrap:wrap}
.fr .v{font-size:15.5px;font-weight:600;line-height:1.3;overflow-wrap:anywhere;border:0;background:transparent;padding:2px 0;text-align:left;width:100%;min-height:28px;cursor:text}
.fr .v.mono{font-size:16px}
.fr .v.kosong{color:var(--mute);font-weight:500;font-style:italic}
.fr .ed{display:grid;gap:8px;margin-top:4px}
.fr .ed .row{gap:8px}
.fr.link{grid-template-columns:26px minmax(0,1fr);align-items:start}
.lk{display:grid;gap:8px;min-width:0;grid-template-columns:minmax(0,1fr)}
.lkopt{display:grid;grid-template-columns:1fr 1fr;gap:6px}
.lkopt.one{grid-template-columns:1fr}
.lkopt button{min-height:44px;border-radius:11px;display:flex;align-items:center;justify-content:center;gap:6px;font-size:14px;font-weight:700;box-shadow:inset 0 0 0 1.5px var(--line);color:var(--mute);border:0;background:var(--card)}
.lkopt button[aria-pressed="true"]{box-shadow:inset 0 0 0 2px var(--blue);color:var(--blued);background:var(--bluel)}
.lkopt svg{width:17px;height:17px}
.url{display:flex;align-items:center;gap:8px;padding:8px 8px 8px 12px;border-radius:12px;background:var(--paper);box-shadow:inset 0 0 0 1px var(--line)}
.url a{flex:1;min-width:0;font-family:var(--mono);font-size:13px;font-weight:600;color:var(--blued);word-break:break-all;line-height:1.3;text-decoration:none}

/* ---------- s7 kalender ---------- */
.cal{display:grid;grid-template-columns:repeat(7,1fr);gap:5px;text-align:center}
.cal .w{font-size:12.5px;font-weight:700;color:var(--mute);padding-bottom:2px}
.cal .d{aspect-ratio:1;border-radius:11px;display:grid;place-items:center;align-content:center;font-family:var(--mono);font-size:15px;font-weight:600;position:relative;border:0;background:transparent;padding:0;min-height:40px}
.cal .d.f{background:var(--greenl);color:var(--greend)}
.cal .d.f::after{content:"";width:6px;height:6px;border-radius:50%;background:var(--green);margin-top:2px}
.cal .d.e{background:var(--redl);color:var(--redd);box-shadow:inset 0 0 0 1.5px #EBA597}
.cal .d.e::after{content:"!";font-size:11px;line-height:1;font-weight:700;margin-top:1px}
.cal .d.we{color:#8D96A5}
.cal .d.we.f{color:var(--greend)}
.cal .d.fu{color:#8D96A5;box-shadow:inset 0 0 0 1px var(--rule)}
.cal .d.today{background:var(--blue);color:#fff}
.cal .d.today::after{content:"";width:6px;height:6px;border-radius:50%;background:#fff;margin-top:2px}
.cal .d[aria-pressed="true"]{outline:2.5px solid var(--navy);outline-offset:1px}
.legend{display:flex;gap:14px;flex-wrap:wrap;font-size:13.5px;color:var(--mute);font-weight:600}
.legend span{display:inline-flex;gap:6px;align-items:center}
.legend i{width:12px;height:12px;border-radius:4px}
.miss{display:flex;gap:12px;align-items:center}
.miss .x{flex:1;min-width:0;font-size:15px;line-height:1.35}
.miss .x b{display:block;font-family:var(--disp);font-size:16.5px}
.stats{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
.stats div{background:var(--card);border-radius:14px;box-shadow:0 0 0 1px var(--line);padding:10px 12px;display:grid;gap:2px;min-width:0}
.stats b{font-family:var(--mono);font-size:22px;font-weight:700;line-height:1.1;font-variant-numeric:tabular-nums}
.stats b small{font-size:15px;color:var(--mute)}
.stats span{font-size:12.5px;color:var(--mute);font-weight:600;line-height:1.25}

/* ---------- s8 rekap ---------- */
.cd{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;padding:0 16px 16px}
.cd div{border-radius:14px;background:rgba(255,255,255,.07);box-shadow:inset 0 0 0 1px rgba(255,255,255,.12);padding:10px 12px;color:#fff;display:grid;gap:2px;min-width:0}
.cd b{font-family:var(--mono);font-size:24px;line-height:1.05;font-weight:700;font-variant-numeric:tabular-nums}
.cd span{font-size:12.5px;color:#B9C4D9;font-weight:600;line-height:1.25}
.cd div.hot{background:rgba(242,178,51,.16);box-shadow:inset 0 0 0 1px rgba(242,178,51,.45)}
.cd div.hot b{color:var(--yel)}
.rk{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:6px 10px;align-items:center;padding:12px 0;border-top:1px solid var(--rule)}
.rks .rk:first-child{border-top:0;padding-top:2px}
.rk .x{font-weight:700;font-size:15.5px;line-height:1.25;min-width:0}
.rk .x small{display:block;font-family:var(--mono);font-size:12.5px;color:var(--mute);font-weight:600;margin-bottom:2px}
.rk .c{grid-column:1/-1;font-size:13.5px;color:var(--mute);font-weight:600}
.bar2{grid-column:1/-1;height:8px;border-radius:4px;background:var(--rule);overflow:hidden}
.bar2 i{display:block;height:100%;border-radius:4px}

/* ---------- s9 arsip ---------- */
.mrow{display:flex;align-items:center;gap:12px;padding:10px 8px;margin:0 -8px;border:0;box-shadow:inset 0 1px 0 var(--rule);border-radius:0;width:calc(100% + 16px);background:transparent;text-align:left;min-height:60px}
.mrows .mrow:first-child{box-shadow:none}
.mrow[aria-pressed="true"]{border-radius:12px;box-shadow:none}
.mrow[aria-pressed="true"]+.mrow{box-shadow:none}
.mrow .pill.b{background:var(--card)}
.mrow[aria-pressed="true"]{background:var(--bluel)}
.mrow .x{flex:1;min-width:0}
.mrow .x b{font-family:var(--disp);font-size:16.5px;font-weight:800;display:block}
.mrow .x span{font-size:13.5px;color:var(--mute);font-weight:500}
.exp{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.exp .btn{min-height:48px;font-size:15.5px}
.drive{display:flex;align-items:center;gap:12px}
.drive .lg{width:44px;height:44px;border-radius:12px;background:var(--bluel);color:var(--blued);display:grid;place-items:center;flex:none}
.drive .lg svg{width:22px;height:22px}
.drive .x{flex:1;min-width:0;font-size:14.5px;line-height:1.35}
.drive .x b{display:block;font-size:15.5px}

/* ---------- pengaturan & admin ---------- */
.set{display:flex;align-items:center;gap:12px;min-height:56px;padding:6px 0;border-top:1px solid var(--rule);text-decoration:none;color:inherit}
.sets .set:first-child{border-top:0}
.set .x{flex:1;min-width:0;font-size:15.5px;font-weight:600;line-height:1.3}
.set .x small{display:block;font-size:13.5px;color:var(--mute);font-weight:500}
.set>svg{width:20px;height:20px;color:var(--mute)}
.tw4{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.tw4 label{display:grid;gap:4px;font-size:13.5px;font-weight:700;color:var(--mute)}
.meter{height:8px;border-radius:4px;background:var(--rule);overflow:hidden}
.meter i{display:block;height:100%;background:var(--blue);border-radius:4px}
.kv{display:grid;grid-template-columns:repeat(auto-fill,minmax(130px,1fr));gap:8px}
.kv div{background:var(--paper);border-radius:12px;padding:10px;display:grid;gap:2px;min-width:0}
.kv b{font-family:var(--mono);font-size:20px;font-variant-numeric:tabular-nums}
.kv span{font-size:12.5px;color:var(--mute);font-weight:600}
.log{font-size:13px;display:grid;gap:6px;max-height:320px;overflow:auto}
.log div{display:grid;gap:1px;padding:6px 0;border-top:1px solid var(--rule);overflow-wrap:anywhere}
.log div span{color:var(--mute);font-family:var(--mono);font-size:12px}

/* toast */
.toast{position:fixed;left:50%;bottom:calc(92px + env(safe-area-inset-bottom));transform:translate(-50%,12px);z-index:40;background:var(--ink);color:#fff;padding:12px 16px;border-radius:14px;font-weight:600;font-size:15px;max-width:min(92vw,440px);box-shadow:0 12px 30px -12px rgba(0,0,0,.5);opacity:0;pointer-events:none;transition:opacity .2s,transform .2s;text-align:center}
.toast.on{opacity:1;transform:translate(-50%,0)}

/* dialog konfirmasi */
.dlg{position:fixed;inset:0;z-index:30;display:grid;place-items:center;padding:16px;background:rgba(14,19,32,.48)}
.dlg .card{max-width:400px;width:100%;display:grid;gap:12px;padding:18px}
.dlg h3{margin:0;font-family:var(--disp);font-size:19px}

/* layar sempit (320 px) */
.tw4{grid-template-columns:repeat(2,minmax(0,1fr))}
input[type=date].inp,input[type=time].inp{min-width:0;width:100%;-webkit-appearance:none;appearance:none}
.cal{grid-template-columns:repeat(7,minmax(0,1fr))}
.cal .d{min-height:0;min-width:0}
@media (max-width:360px){.cal{gap:3px}.cal .d{font-size:13.5px;border-radius:9px}.card{padding:12px}.stats b{font-size:19px}}

.card>*,.fld,.fld>*{min-width:0}
