:root{--pg:oklch(.9 0 0);--bg:oklch(.985 .004 85);--sf:oklch(.97 .005 85);--tx:oklch(.24 .01 85);--t2:oklch(.45 .012 85);--t3:oklch(.52 .012 85);--ac:oklch(.48 .08 200);--onac:oklch(.985 .004 85);--dg:oklch(.5 .17 27);--wn:oklch(.5 .11 70);--ok:oklch(.47 .1 155);--bd:oklch(.88 .006 85);--bs:oklch(.62 .01 85);--hv:oklch(.95 .006 85);--sel:oklch(.925 .028 200);--sh:0 12px 40px oklch(0 0 0/.18),0 1px 3px oklch(0 0 0/.08);--d1:80ms;--d2:160ms;--e:cubic-bezier(.2,0,0,1);--r:6px;font:14px/1.4 "IBM Plex Sans","Noto Sans Devanagari","Nirmala UI","Segoe UI",system-ui,sans-serif;color-scheme:light}
[data-theme=dark]{--pg:oklch(.12 .005 250);--bg:oklch(.19 .008 250);--sf:oklch(.23 .009 250);--tx:oklch(.94 .006 250);--t2:oklch(.76 .01 250);--t3:oklch(.68 .01 250);--ac:oklch(.74 .1 195);--onac:oklch(.19 .008 250);--dg:oklch(.74 .14 25);--wn:oklch(.8 .11 80);--ok:oklch(.76 .12 155);--bd:oklch(.3 .01 250);--bs:oklch(.55 .01 250);--hv:oklch(.26 .01 250);--sel:oklch(.31 .03 200);--sh:0 12px 40px oklch(0 0 0/.55),0 0 0 1px oklch(1 0 0/.07);color-scheme:dark}
*{box-sizing:border-box}
html,body{height:100%;margin:0}
body{background:var(--pg);color:var(--tx);display:flex;flex-direction:column;transition:background var(--d2)}
button,input,select,textarea{font:inherit;color:inherit}
button{background:none;border:0;cursor:pointer;padding:0;text-align:left}
:focus-visible{outline:2px solid var(--ac);outline-offset:2px}
.tm{font-variant-numeric:tabular-nums}
.devbar{display:flex;gap:8px;align-items:center;flex-wrap:wrap;padding:6px 12px;background:var(--sf);border-bottom:1px solid var(--bd);font-size:12px}
.seg{display:flex;gap:2px;flex-wrap:wrap}
.dbtn,.seg button{padding:4px 8px;border:1px solid var(--bs);border-radius:4px;background:var(--bg);font-size:12px}
.seg button[aria-pressed=true],.dbtn[aria-pressed=true]{background:var(--ac);color:var(--onac);border-color:var(--ac)}
.info{color:var(--t2)}.grow{flex:1}
#stage{flex:1;min-height:0;padding:12px;display:flex;justify-content:center;align-items:flex-start;overflow:auto}
#wrap{flex:none}
.frame{position:relative;overflow:hidden;background:var(--bg);container:ui/inline-size;transform-origin:0 0;border:1px solid var(--bd);border-radius:10px}
.app{height:100%;display:grid;grid-template-columns:minmax(0,1fr);grid-template-rows:minmax(0,1fr) auto;background:var(--bg)}
.side{display:none}
.list,.detail{grid-row:1;grid-column:1;min-width:0;min-height:0;overflow:auto;background:var(--bg)}
.app[data-route=list] .detail,.app[data-route=detail] .list{display:none}
.bottom{grid-row:2;display:flex;border-top:1px solid var(--bd);background:var(--sf);padding-bottom:env(safe-area-inset-bottom)}
.bottom button{flex:1;min-height:56px;display:grid;place-items:center;gap:0;font-size:11px;color:var(--t2);text-align:center}
.bottom button[aria-current=page]{color:var(--ac);font-weight:600}
.bottom .ic{font-size:18px;line-height:1}
.app[data-route=detail] .bottom{display:none}
.mbar{display:none;grid-row:2;border-top:1px solid var(--bd);background:var(--sf);padding:8px;gap:8px}
.app[data-route=detail] .mbar{display:flex}
.mbar button{flex:1;min-height:44px;border:1px solid var(--bs);border-radius:var(--r);text-align:center}
.fab{position:absolute;right:16px;bottom:72px;width:52px;height:52px;border-radius:10px;background:var(--ac);color:var(--onac);font-size:26px;text-align:center;box-shadow:var(--sh);transition:transform var(--d2) var(--e)}
.fab:active{transform:scale(.94)}
.app[data-route=detail] .fab{display:none}
.ph{display:flex;align-items:center;gap:8px;padding:12px 16px 4px;position:sticky;top:0;background:var(--bg);z-index:10}
.ph h1{font-size:20px;line-height:1.2;margin:0;font-weight:600;flex:1}
.ph small{color:var(--t2)}
.chips{display:flex;gap:4px;flex-wrap:wrap;padding:4px 16px 8px}
.chip{padding:3px 10px;border:1px solid var(--bs);border-radius:99px;font-size:12px;min-height:28px}
.chip[aria-pressed=true]{background:var(--ac);border-color:var(--ac);color:var(--onac)}
.grp{margin:12px 16px 2px;font-size:12px;font-weight:600;color:var(--t2)}
.grp.dg{color:var(--dg)}
.row{display:grid;grid-template-columns:64px 32px minmax(0,1fr);align-items:start;padding:0 8px 0 8px;border-top:1px solid var(--bd);margin:0 8px;transition:background var(--d1)}
.row:hover{background:var(--hv)}
.row.sel{background:var(--sel)}
.row .tm{font-size:12px;color:var(--t2);padding-top:9px;white-space:nowrap}
.ck{width:32px;height:32px;display:grid;place-items:center}
.ck::before,.ck::after{grid-area:1/1}
.ck::before{content:"";width:16px;height:16px;border:1.5px solid var(--bs);border-radius:4px;transition:all var(--d1)}
.ck[aria-pressed=true]::before{background:var(--ac);border-color:var(--ac)}
.ck::after{content:"";width:4px;height:8px;border:solid var(--onac);border-width:0 2px 2px 0;transform:rotate(45deg) translate(-1px,-1px) scale(0);transition:transform var(--d1)}
.ck[aria-pressed=true]::after{transform:rotate(45deg) translate(-1px,-1px) scale(1)}
.rb{padding:6px 4px;min-width:0;display:block}
.rt{display:block;overflow-wrap:anywhere}
.done .rt{text-decoration:line-through;color:var(--t3)}
.rm{display:block;font-size:12px;color:var(--t2)}
.rm.dg{color:var(--dg)}
.tag{display:inline-flex;align-items:center;gap:2px;padding:0 6px;border:1px solid var(--bd);border-radius:3px;font-size:12px;color:var(--t2)}
.empty{padding:32px 16px;color:var(--t2);max-width:36ch}
.empty b{display:block;color:var(--tx);margin-bottom:4px}
.empty button{margin-top:8px;color:var(--ac);text-decoration:underline;min-height:32px}
input,select,textarea{background:var(--bg);border:1px solid var(--bs);border-radius:3px;padding:6px 8px;min-height:36px;max-width:100%}
input:disabled,button:disabled{opacity:.45;cursor:not-allowed}
mark{background:var(--sel);color:inherit;border-radius:2px}
.sbox{margin:0 16px 4px;width:calc(100% - 32px)}
.dtop{display:flex;align-items:center;gap:8px;padding:8px 16px;border-bottom:1px solid var(--bd);position:sticky;top:0;background:var(--bg);z-index:10}
.back{display:none;min-width:44px;min-height:44px;font-size:20px}
.dtop .sv{flex:1;font-size:12px;color:var(--t2)}
.dtop .sv.er{color:var(--dg)}
.dtop .sv button{color:var(--ac);text-decoration:underline}
.dbody{max-width:72ch;margin:0;padding:16px 24px 48px}
.title{font-size:24px;font-weight:600;line-height:1.25;width:100%;border:0;border-bottom:1px solid transparent;padding:4px 0;background:none}
.title:hover{border-color:var(--bd)}
.props{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin:8px 0 4px}
.props select,.props input{min-height:30px;padding:3px 6px}
.props label{display:flex;align-items:center;gap:4px;color:var(--t2);font-size:12px}
.hint{font-size:12px;color:var(--t3);margin:0 0 8px}
.tags{display:flex;gap:4px;flex-wrap:wrap;align-items:center}
.tag button{padding:0 2px;color:var(--t2)}
.sec{margin-top:20px}
.sh{display:flex;align-items:center;gap:8px;border-bottom:1px solid var(--bd);padding-bottom:2px}
.sh h2{font-size:13px;margin:0;font-weight:600;flex:1;color:var(--t2)}
.sc{display:flex;opacity:.55}
.sec:hover .sc,.sec:focus-within .sc,.sc:has(:focus-visible){opacity:1}
.sc button{min-width:28px;min-height:28px;text-align:center;border-radius:3px}
.sc button:hover{background:var(--hv)}
textarea{width:100%;margin-top:6px;resize:vertical;line-height:1.6;border-color:transparent;padding:6px 0;background:none}
textarea:hover,textarea:focus{border-color:var(--bd)}
.tk{display:grid;grid-template-columns:32px minmax(0,1fr);align-items:start;padding:2px 0}
.tk span{padding-top:6px;overflow-wrap:anywhere}
.tk.done span{text-decoration:line-through;color:var(--t3)}
.addt{width:100%;margin-top:4px}
.file{display:flex;gap:8px;align-items:center;padding:6px 0;border-bottom:1px solid var(--bd)}
.file b{font-weight:400;flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.file small{color:var(--t2)}
.lnk{color:var(--ac);text-decoration:underline;min-height:28px}
.addsec{margin-top:20px}
#overlay{position:absolute;inset:0;pointer-events:none}
.scrim{position:absolute;inset:0;background:oklch(0 0 0/.35);display:flex;justify-content:center;align-items:flex-start;padding:10% 12px 12px;pointer-events:auto;animation:fade var(--d2) var(--e)}
.dlg{background:var(--sf);border:1px solid var(--bd);border-radius:10px;box-shadow:var(--sh);width:min(560px,100%);max-height:100%;overflow:auto;animation:rise var(--d2) var(--e)}
.dlg>input{width:100%;border:0;border-bottom:1px solid var(--bd);border-radius:10px 10px 0 0;padding:12px 16px;font-size:16px;min-height:48px;background:none}
.pi{display:flex;gap:8px;align-items:center;width:100%;padding:8px 16px;min-height:40px}
.pi[aria-selected=true],.pi:hover{background:var(--sel)}
.pi kbd{margin-left:auto;color:var(--t3);font:12px "IBM Plex Mono",ui-monospace,monospace}
.cap{padding:8px 16px 16px;display:grid;grid-template-columns:auto 1fr;gap:4px 12px;font-size:13px}
.cap dt{color:var(--t2)}.cap dd{margin:0}
.chelp{padding:0 16px 12px;font-size:12px;color:var(--t3)}
code{font:12px "IBM Plex Mono",ui-monospace,monospace}
#toast{position:absolute;left:50%;bottom:76px;transform:translateX(-50%);display:flex;flex-direction:column;gap:4px;pointer-events:none;z-index:99;width:max-content;max-width:calc(100% - 24px)}
.toast{background:var(--tx);color:var(--bg);padding:8px 12px;border-radius:var(--r);box-shadow:var(--sh);pointer-events:auto;animation:rise var(--d2) var(--e)}
.toast button{color:inherit;text-decoration:underline;margin-left:12px;min-height:24px}
.cal{display:grid;grid-template-columns:repeat(7,1fr);gap:2px;padding:0 12px 8px;text-align:center}
.cal span{font-size:11px;color:var(--t3)}
.cal button{min-height:40px;border-radius:4px;text-align:center;display:grid;place-items:center;align-content:center;font-variant-numeric:tabular-nums}
.cal button:hover{background:var(--hv)}
.cal button[aria-pressed=true]{background:var(--ac);color:var(--onac)}
.cal button.td{box-shadow:inset 0 0 0 1px var(--ac)}
.cal i{display:block;width:4px;height:4px;border-radius:50%;background:currentColor;opacity:.7;margin-top:1px}
@keyframes fade{from{opacity:0}}
@keyframes rise{from{opacity:0;transform:translateY(6px)}}
@container ui (max-width:699px){
  .ck{width:44px;height:44px}.row{grid-template-columns:60px 44px minmax(0,1fr)}.row .tm{padding-top:13px}.rb{padding:10px 4px}
  .tk{grid-template-columns:44px minmax(0,1fr)}.tk span{padding-top:10px}
  input,select,textarea,.chip,.props select,.props input{min-height:44px}.chip{padding:4px 14px}
  .back{display:grid;place-items:center}.dbody{padding:12px 16px 24px}.title{font-size:22px}
  .sc button{min-width:44px;min-height:44px}.pi{min-height:48px}.lnk{min-height:44px}.cal button{min-height:44px}
}
@container ui (min-width:700px){
  .app{grid-template-columns:56px 264px minmax(0,1fr);grid-template-rows:minmax(0,1fr)}
  .side{display:flex;flex-direction:column;gap:2px;padding:12px 6px;border-right:1px solid var(--bd);background:var(--sf);grid-row:1;grid-column:1}
  .list{grid-column:2;border-right:1px solid var(--bd)}
  .detail{grid-column:3}
  .app[data-route] .list,.app[data-route] .detail{display:block}
  .bottom,.fab,.mbar,.app[data-route=detail] .mbar{display:none}
  .side button{display:flex;align-items:center;gap:8px;min-height:36px;padding:0 8px;border-radius:var(--r);color:var(--t2);justify-content:center}
  .side button:hover{background:var(--hv)}
  .side button[aria-current=page]{background:var(--sel);color:var(--tx);font-weight:600}
  .side .lbl,.side .kb,.side .sub{display:none}
  .brand{font-size:18px;font-weight:600;letter-spacing:-.02em;padding:4px 8px 12px;text-align:center}
  .side .newb{background:var(--ac);color:var(--onac);margin-bottom:8px}
  .side .newb:hover{background:var(--ac);filter:brightness(1.08)}
}
@container ui (min-width:1100px){
  .app{grid-template-columns:208px 340px minmax(0,1fr)}
  .side{padding:12px}
  .side button{justify-content:flex-start}
  .side .lbl{display:inline;flex:1}
  .side .kb{display:inline;font:11px "IBM Plex Mono",ui-monospace,monospace;opacity:.7}
  .side .sub{display:block;margin-top:auto;color:var(--t3);font-size:11px;padding:8px}
  .brand{text-align:left}
}
@media (prefers-reduced-motion:reduce){*,*::before,*::after{transition:none!important;animation:none!important}}

@media (max-width:700px){#devs,#devinfo,#emptyBtn,#errBtn{display:none}#stage{padding:0}.frame{border:0!important;border-radius:0}.devbar{padding:4px 8px}}
