/* Palet final Wilamen "Tiga warna" di atas krem #FFFAF2. Satu tampilan terang. */
:root{
  color-scheme:light;
  --bg:#FFFAF2; --fg:#4C551D; --muted:#5F6638; --line:#4C551D33;
  --kuning:#F2B544; --jingga:#F08A63; --hijau:#A3AE55; --hijau-tua:#7E8A36;
  --kuning-muda:#F7CB6E; --jingga-tua:#E06A40;
  --kuning-pucat:#FCEBB5; --jingga-pucat:#FBD9BF; --hijau-pucat:#E4EAC6;
  --crit:#B23A1E; --ok:#7E8A36;
  --font:"Quicksand",system-ui,-apple-system,"Segoe UI",sans-serif;
  --r:14px;
}
*{box-sizing:border-box}
[hidden]{display:none!important}
html,body{margin:0}
body{background:var(--bg);color:var(--fg);font-family:var(--font);font-weight:500;font-size:15px;line-height:1.45}
h1,h2,h3,h4,p{margin:0}
h1{font-size:22px;font-weight:700;color:var(--hijau-tua);letter-spacing:-.01em}
h2{font-size:16px;font-weight:700}
a{color:inherit}
button,input,select,textarea{font:inherit;color:inherit}
button{cursor:pointer}
:focus-visible{outline:2px solid var(--jingga);outline-offset:2px}
.num{font-variant-numeric:tabular-nums}
.lbl{font-size:11.5px;font-weight:700;letter-spacing:.07em;text-transform:uppercase;color:var(--muted)}
.muted{color:var(--muted)}
.r{text-align:right}

/* Kerangka */
.shell{display:grid;grid-template-columns:230px minmax(0,1fr);min-height:100vh}
.side{background:var(--hijau-pucat);padding:20px 14px;display:flex;flex-direction:column;gap:18px;position:sticky;top:0;height:100vh;overflow-y:auto}
.brand{display:flex;flex-direction:column;gap:2px;text-decoration:none;padding:0 8px}
.brand span{font-size:12px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}
#nav{display:flex;flex-direction:column;gap:3px}
#nav a{text-decoration:none;padding:8px 12px;border-radius:10px;font-weight:600;display:flex;justify-content:space-between;gap:8px}
#nav a:hover{background:#FFFAF299}
#nav a[aria-current="page"]{background:var(--fg);color:var(--bg)}
.who{margin-top:auto;padding:10px 8px 0;border-top:1.5px solid var(--line);display:flex;flex-direction:column;gap:4px;align-items:flex-start}
.who b{display:block}
.who small{color:var(--muted);font-size:12.5px}
.link{background:none;border:0;padding:2px 0;color:var(--muted);font-size:13px;text-decoration:underline}
#main{padding:24px 28px 56px;min-width:0}
.page{display:flex;flex-direction:column;gap:20px;max-width:1280px}
.head{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.head .sp{margin-left:auto}
.head p{color:var(--muted);font-size:14px;flex-basis:100%}
.bar-tools{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.bar-tools .sp{margin-left:auto}
.loading,.empty{color:var(--muted);padding:14px 0}

/* Tombol dan isian */
.btn{background:var(--fg);color:var(--bg);border:0;border-radius:99px;padding:8px 16px;font-weight:700;white-space:nowrap;text-decoration:none;display:inline-block;font-size:14px}
.btn.ghost{background:transparent;color:var(--fg);border:1.5px solid var(--line)}
.btn.danger{background:transparent;color:var(--crit);border:1.5px solid currentColor}
.btn.sm{padding:4px 11px;font-size:13px}
.btn:disabled{opacity:.5;cursor:default}
.chipbtn{border:1.5px solid var(--line);background:transparent;border-radius:99px;padding:5px 13px;font-weight:600;font-size:13.5px;display:inline-flex;align-items:center;gap:6px}
.chipbtn[aria-pressed="true"]{background:var(--fg);color:var(--bg);border-color:transparent}
.chipbtn span{opacity:.75}
.dot{width:9px;height:9px;border-radius:50%;background:var(--c)}
.f{display:flex;flex-direction:column;gap:3px;min-width:0}
.f label{font-size:12px;font-weight:700;color:var(--muted)}
.f small{font-size:12px;color:var(--muted)}
input:not([type=checkbox]),select,textarea{width:100%;padding:8px 11px;border:1.5px solid var(--line);border-radius:11px;background-color:var(--bg);transition:border-color .15s,box-shadow .15s}
input:not([type=checkbox]):hover,select:hover,textarea:hover{border-color:var(--hijau-tua)}
input:not([type=checkbox]):focus,select:focus,textarea:focus{outline:0;border-color:var(--hijau-tua);box-shadow:0 0 0 3px var(--hijau-pucat)}
input:disabled,select:disabled,textarea:disabled{opacity:.6;cursor:not-allowed}
input[type=checkbox]{accent-color:var(--hijau-tua);width:17px;height:17px}
select{appearance:none;-webkit-appearance:none;cursor:pointer;font-weight:600;padding-right:30px;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1.5 1.5 6 6l4.5-4.5' fill='none' stroke='%237E8A36' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
  background-repeat:no-repeat;background-position:right 11px center}
select option{background:#FFFAF2;color:#4C551D;font-weight:500}
.bar-tools input,.bar-tools select{width:auto;border-radius:99px;padding:5px 13px;font-size:13.5px}
.bar-tools select{padding-right:30px}
.chk{display:flex;gap:8px;align-items:center;font-weight:600}
.ferr{color:var(--crit);font-weight:600;font-size:14px}

/* Pil status */
.pill{display:inline-block;font-size:11.5px;font-weight:700;border-radius:99px;padding:1px 9px;border:1.5px solid var(--line);color:var(--muted);white-space:nowrap}
.pill.ok{color:var(--ok);border-color:currentColor}
.pill.warn{background:var(--kuning);border-color:transparent;color:var(--fg)}
.pill.bad{color:var(--crit);border-color:currentColor}
.pill.fill{background:var(--hijau-tua);border-color:transparent;color:var(--bg)}

/* Tabel */
.tablewrap{overflow-x:auto;border:1.5px solid var(--line);border-radius:var(--r)}
table{border-collapse:collapse;width:100%;font-size:14px}
th,td{padding:9px 12px;text-align:left;vertical-align:top;border-bottom:1px solid var(--line)}
th{font-size:11.5px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);background:var(--hijau-pucat);white-space:nowrap}
tbody tr:last-child td{border-bottom:0}
tbody tr:hover{background:#E4EAC655}
td.r,th.r{text-align:right}
td small{display:block;color:var(--muted);font-size:12.5px}
td .acts{display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end}
td select{padding:4px 28px 4px 10px;border-radius:99px;font-size:13px;min-width:108px}
.plus{color:var(--ok);font-weight:700}
.minus{color:var(--crit);font-weight:700}

/* Kartu ringkasan */
.tiles{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px 22px}
.tiles b{display:block;font-size:20px;font-weight:700}
.tiles small{color:var(--muted);font-size:12.5px;display:block}
.panels{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.panel{background:var(--hijau-pucat);border-radius:var(--r);padding:14px 16px;display:flex;flex-direction:column;gap:8px;min-width:0}
.panel.y{background:var(--kuning-pucat)}
.panel.o{background:var(--jingga-pucat)}
.panel h2{display:flex;justify-content:space-between;gap:8px;align-items:baseline}
.panel h2 a{font-size:13px;font-weight:600;color:var(--muted)}
.rows{list-style:none;margin:0;padding:0;display:flex;flex-direction:column}
.rows li{display:flex;justify-content:space-between;gap:12px;padding:5px 0;border-top:1px solid var(--line);font-size:14px}
.rows li:first-child{border-top:0}
.rows li span:first-child{min-width:0;overflow-wrap:anywhere}
.hbar{display:grid;grid-template-columns:minmax(0,150px) minmax(0,1fr) auto;gap:10px;align-items:center;font-size:13.5px;padding:3px 0}
.hbar i{display:block;height:10px;border-radius:99px;background:var(--jingga);min-width:2px}
.hbar .track{background:#FFFAF2AA;border-radius:99px}

/* Target */
.big{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap}
.big b{font-size:clamp(32px,6vw,46px);font-weight:700;letter-spacing:-.02em;line-height:1}
.big span{color:var(--muted);font-weight:600}
.gbar{position:relative;height:18px;border-radius:99px;background:var(--hijau-pucat)}
.gbar i{position:absolute;inset:0 auto 0 0;border-radius:99px;background:var(--jingga)}
.gbar u{position:absolute;top:-3px;bottom:-3px;width:2px;background:var(--fg);opacity:.45}
.ticks{position:relative;height:18px;font-size:12px;color:var(--muted);font-weight:600}
.ticks span{position:absolute;transform:translateX(-50%);white-space:nowrap}
.ticks span:last-child{transform:none;right:0}
.weeks{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}
.wk{background:var(--kuning-pucat);border-radius:var(--r);padding:12px 14px;display:flex;flex-direction:column;gap:3px;min-width:0;align-items:flex-start}
.wk.now{box-shadow:inset 0 0 0 2px var(--jingga)}
.wk b{font-size:17px}
.wk small{color:var(--muted);font-size:12.5px}

/* Kanban */
.boards{display:flex;gap:8px;flex-wrap:wrap;padding-bottom:12px;border-bottom:1.5px solid var(--line)}
.boards .chipbtn{font-size:14px;font-weight:700;padding:7px 14px}
.coltabs{display:none;gap:6px;flex-wrap:wrap}
.board{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:10px;align-items:start}
.colm{background:var(--hijau-pucat);border-radius:var(--r);padding:10px;display:flex;flex-direction:column;gap:8px;min-width:0;min-height:120px}
.colm.over{box-shadow:inset 0 0 0 2px var(--jingga)}
.colm header{display:flex;justify-content:space-between;align-items:baseline;padding:2px 4px}
.colm header h3{font-size:14px;font-weight:700}
.colm header span{font-size:12.5px;color:var(--muted);font-weight:700}
.card{background:var(--bg);border-radius:11px;padding:10px 11px;display:flex;flex-direction:column;gap:7px;box-shadow:0 1px 0 var(--line);cursor:pointer;min-width:0}
.card.drag{opacity:.4}
.card.ib{box-shadow:0 -4px 0 var(--jingga)}
.card.ia{box-shadow:0 4px 0 var(--jingga)}
.card h4{font-size:14px;font-weight:600;line-height:1.35;overflow-wrap:anywhere}
.colm.done .card h4{text-decoration:line-through;color:var(--muted)}
.ctop,.cfoot{display:flex;gap:6px;align-items:center;flex-wrap:wrap}
.chip{font-size:11.5px;font-weight:700;border-radius:99px;padding:1px 8px;background:color-mix(in srgb,var(--c) 45%,var(--bg))}
.key{font-size:11.5px;font-weight:700;border-radius:99px;padding:0 7px;border:1.5px solid var(--jingga)}
.due{font-size:12.5px;color:var(--muted);font-weight:600}
.due.late{color:var(--crit);font-weight:700}
.mv{margin-left:auto;display:flex;gap:4px}
.mv button{width:28px;height:26px;border-radius:8px;border:1.5px solid var(--line);background:transparent;line-height:1;font-weight:700;padding:0}
.mv button:disabled{opacity:.25;cursor:default}

/* Dialog */
dialog{border:0;border-radius:18px;background:var(--bg);color:var(--fg);padding:22px;width:min(520px,calc(100vw - 32px));max-height:calc(100vh - 32px);overflow-y:auto}
dialog.wide{width:min(820px,calc(100vw - 32px))}
dialog::backdrop{background:#0008}
.dform{display:flex;flex-direction:column;gap:12px}
.dgrid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.dgrid .full{grid-column:1/-1}
.dacts{display:flex;gap:8px;flex-wrap:wrap;margin-top:4px}
.dacts .sp{margin-left:auto}
.items{display:flex;flex-direction:column;gap:8px}
.irow{display:grid;grid-template-columns:minmax(0,1.3fr) minmax(0,1.3fr) 72px 120px 34px;gap:6px;align-items:center}
.irow button{width:34px;height:34px;border-radius:10px;border:1.5px solid var(--line);background:transparent;font-weight:700;padding:0}
.totals{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;align-items:end;background:var(--kuning-pucat);border-radius:var(--r);padding:12px}
.totals b{font-size:18px;display:block}

/* Masuk */
.login{min-height:100vh;display:grid;place-items:center;padding:16px}
.login-card{width:min(360px,100%);display:flex;flex-direction:column;gap:14px;background:var(--hijau-pucat);border-radius:22px;padding:28px}
.login-card h1{font-size:19px}

#toast{position:fixed;left:50%;bottom:18px;transform:translateX(-50%);background:var(--fg);color:var(--bg);padding:9px 18px;border-radius:99px;font-weight:600;font-size:14px;max-width:calc(100vw - 32px);z-index:50}
.ro .w{display:none!important}

@media (max-width:899px){
  .shell{grid-template-columns:minmax(0,1fr)}
  .side{position:static;height:auto;padding:12px 16px;gap:10px}
  .brand{flex-direction:row;align-items:center;gap:10px;padding:0}
  .brand img{width:110px;height:auto}
  #nav{flex-direction:row;overflow-x:auto;padding-bottom:4px}
  #nav a{white-space:nowrap;padding:6px 12px}
  .who{margin-top:0;flex-direction:row;flex-wrap:wrap;gap:4px 14px;align-items:baseline;padding-top:8px}
  #main{padding:18px 16px 48px}
  .panels{grid-template-columns:minmax(0,1fr)}
  .weeks{grid-template-columns:repeat(2,minmax(0,1fr))}
  .coltabs{display:flex}
  .board{grid-template-columns:minmax(0,1fr)}
  .colm{display:none}
  .colm.on{display:flex}
  .dgrid{grid-template-columns:minmax(0,1fr)}
  .irow{grid-template-columns:minmax(0,1fr) minmax(0,1.4fr) 34px;padding-bottom:8px;border-bottom:1px solid var(--line)}
  .irow select,.irow .iname{grid-column:1/-1}
  .totals{grid-template-columns:repeat(2,minmax(0,1fr))}
  .hbar{grid-template-columns:minmax(0,110px) minmax(0,1fr) auto}
}
@media (prefers-reduced-motion:reduce){*{transition:none!important}}

/* Pesanan dari wilamen.com: gambar desain dan file .3mf */
.oitem{display:flex;gap:10px;align-items:center}
.othumb{width:52px;height:65px;object-fit:cover;border-radius:8px;border:1.5px solid var(--line);cursor:pointer;flex:none;background:var(--bg)}
.omodel{margin-top:4px}
.odesign{display:grid;grid-template-columns:minmax(0,200px) minmax(0,1fr);gap:16px;align-items:start;background:var(--kuning-pucat);border-radius:var(--r);padding:12px;margin-bottom:12px}
.odesign img{width:100%;border-radius:10px;border:1.5px solid var(--line);display:block}
.odesign ul{margin:6px 0 10px;padding-left:18px}
.odesign .otext{font-size:26px;font-weight:700;letter-spacing:.08em;margin:2px 0}
.oacts{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
@media (max-width:640px){.odesign{grid-template-columns:1fr}}
