.tl{padding-bottom:var(--sp-section)}.tl-note{margin:0 0 var(--sp-24);padding:var(--sp-16);border:1px dashed var(--line);border-radius:var(--r-s)}.tl-app{grid-template-columns:repeat(12,minmax(0,1fr));align-items:start;gap:24px;display:grid}.tl-panel{background:var(--sheet);border:1px solid var(--line-soft);border-radius:var(--r-m);padding:var(--sp-32);box-shadow:var(--shadow-sheet)}.tl-in{gap:var(--sp-24);top:calc(var(--header-h) + var(--sp-24));grid-column:1/span 5;display:grid;position:sticky}.tl-cal{grid-column:6/span 7}.tl-pane{gap:var(--sp-24);display:grid}.tl-pane[hidden]{display:none}.tl-row{align-items:center;gap:var(--sp-12);flex-wrap:wrap;display:flex}.tl-row>input{flex:10rem;min-width:0}.tl input[type=date],.tl input[type=number],.tl-set input[type=date],.tl-set input[type=text]{font:inherit;font-size:var(--fs-m);color:var(--ink);background:var(--sheet);border:1px solid var(--line);border-radius:var(--r-s);padding:0 var(--sp-16);font-variant-numeric:tabular-nums;min-height:52px;transition:border-color var(--dur-color),box-shadow var(--dur-color)}.tl input:focus,.tl-set input[type=date]:focus,.tl-set input[type=text]:focus{border-color:var(--cyan);box-shadow:0 0 0 3px rgba(var(--cyan-a),.18);outline:none}.tl-small{font-size:var(--fs-xs);color:var(--ink-3);margin:0;line-height:1.8}.tl-rule{align-items:center;gap:var(--sp-8);font-size:var(--fs-s);color:var(--ink-3);margin:0;display:flex}.tl-mini{align-items:center;gap:var(--sp-8);min-height:44px;padding:0 var(--sp-16);font:inherit;font-size:var(--fs-s);color:var(--ink);background:var(--paper);border:1px solid var(--line);cursor:pointer;white-space:nowrap;transition:border-color var(--dur-color),background-color var(--dur-color),color var(--dur-color);border-radius:999px;font-weight:700;display:inline-flex}.tl-mini:hover{border-color:var(--ink)}.tl-mini:focus-visible,.tl-icon:focus-visible,.seg button:focus-visible,.quick button:focus-visible,.pill:focus-visible,.day:focus-visible,.del:focus-visible{outline:2px solid var(--entrust);outline-offset:2px}.tl-mini.is-done{border-color:var(--cyan);background:color-mix(in srgb,var(--cyan) 10%,var(--sheet))}.tl-icon{border:1px solid var(--line);background:var(--sheet);width:44px;height:44px;color:var(--ink);cursor:pointer;transition:border-color var(--dur-color);border-radius:50%;place-items:center;display:grid}.tl-icon:hover{border-color:var(--ink)}.seg{padding:var(--sp-4);border:1px solid var(--line);background:var(--paper);border-radius:999px;grid-template-columns:1fr 1fr;display:grid}.seg button{min-height:44px;font:inherit;font-size:var(--fs-s);color:var(--ink-2);cursor:pointer;transition:background-color var(--dur-color),color var(--dur-color);background:0 0;border:0;border-radius:999px;font-weight:700}.seg button[aria-selected=true]{background:var(--ink);color:var(--paper)}.stepper{border:1px solid var(--line);border-radius:var(--r-s);background:var(--sheet);align-items:stretch;display:flex;overflow:hidden}.stepper:focus-within{border-color:var(--cyan);box-shadow:0 0 0 3px rgba(var(--cyan-a),.18)}.stepper button{background:var(--paper);width:48px;color:var(--ink);cursor:pointer;transition:background-color var(--dur-color);border:0;place-items:center;display:grid}.stepper button:hover{background:var(--paper-2)}.tl .stepper input{width:5.5rem;box-shadow:none;text-align:center;font-size:var(--fs-xl);-moz-appearance:textfield;appearance:textfield;border:0;border-radius:0;font-weight:800}.stepper input::-webkit-inner-spin-button,.stepper input::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.dir{gap:var(--sp-8);display:flex}.tl .chip input:checked+span,.tl-set .chip input:checked+span{background:var(--ink);border-color:var(--ink);color:var(--paper);box-shadow:none}.quick{gap:var(--sp-4);margin-top:var(--sp-12);flex-wrap:wrap;display:flex}.quick button{min-width:44px;min-height:44px;padding:0 var(--sp-8);font:inherit;font-size:var(--fs-s);font-variant-numeric:tabular-nums;color:var(--ink-2);border:1px dashed var(--line);border-radius:var(--r-s);cursor:pointer;transition:border-color var(--dur-color),color var(--dur-color);background:0 0;font-weight:700}.quick button:hover{border-style:solid;border-color:var(--ink);color:var(--ink)}.res{gap:var(--sp-8);padding:0 0 var(--sp-24);margin-bottom:var(--sp-24);border-bottom:1px solid var(--ink);display:grid}.res-label{font-size:var(--fs-s);color:var(--ink-2)}.res-main{font-size:var(--fs-2xl);letter-spacing:.01em;font-variant-numeric:tabular-nums;padding-bottom:var(--sp-8);justify-self:start;font-weight:800;line-height:1.3;position:relative}.res-main:after{content:"";background:var(--cyan);height:2px;box-shadow:var(--cyan-glow-soft);border-radius:2px;position:absolute;bottom:0;left:0;right:0}.res.is-error .res-main{color:var(--ink-3)}.res.is-error .res-main:after{background:var(--line);box-shadow:none}.res.is-error .res-sub{color:#c2410c}.res-sub{font-size:var(--fs-s);color:var(--ink-2);line-height:1.8}.res-warn{font-size:var(--fs-xs);color:var(--ink-2);padding:var(--sp-8) var(--sp-12);border-left:2px solid var(--ink-3);background:var(--paper);line-height:1.8}.res-warn[hidden],.res-copy[hidden]{display:none}.res-copy{gap:var(--sp-8);margin-top:var(--sp-8);flex-wrap:wrap;display:flex}.res-dock{display:none}@media (width<=1023px){.res-dock{z-index:20;left:var(--sp-12);right:var(--sp-12);bottom:calc(var(--sp-12) + env(safe-area-inset-bottom));gap:var(--sp-4);padding:var(--sp-12) var(--sp-16);background:var(--ink);color:var(--paper);border-radius:var(--r-m);transform:translateY(calc(100% + var(--sp-24)));opacity:0;transition:transform .45s var(--ease),opacity .3s;pointer-events:none;margin:0;display:grid;position:fixed;box-shadow:0 12px 32px -12px #00000080}.res-dock.is-on{opacity:1;transform:none}.res-dock small{font-size:var(--fs-xs);color:var(--inv-ink-2)}.res-dock b{font-size:var(--fs-l);font-variant-numeric:tabular-nums;border-left:2px solid var(--cyan);padding-left:var(--sp-8);font-weight:800}}.cal-nav{justify-content:space-between;align-items:center;gap:var(--sp-12);margin-bottom:var(--sp-24);display:flex}.cal-jump{justify-content:center;gap:var(--sp-8);flex-wrap:wrap;display:flex}.cal-months{gap:var(--sp-32);grid-template-columns:minmax(0,1fr);display:grid}@media (width>=720px){.cal-months{grid-template-columns:repeat(2,minmax(0,1fr))}}.cal-title{font-size:var(--fs-l);margin-bottom:var(--sp-12);font-variant-numeric:tabular-nums;font-weight:800;display:block}.cal-grid{gap:var(--sp-4);grid-template-columns:repeat(7,minmax(0,1fr));display:grid}.cal-wd{font-size:var(--fs-xs);text-align:center;color:var(--ink-3);padding-bottom:var(--sp-4);font-weight:700}.day{--hatch:none;--dot:none;aspect-ratio:1;min-height:36px;font:inherit;font-size:var(--fs-s);font-variant-numeric:tabular-nums;color:var(--ink);background:var(--dot),var(--hatch);border-radius:var(--r-s);cursor:pointer;transition:background-color var(--dur-color),border-color var(--dur-color),color var(--dur-color);border:1px solid #0000;place-items:center;font-weight:700;display:grid;position:relative}.day:hover{border-color:var(--ink-3)}.day.off{color:var(--ink-3);--hatch:repeating-linear-gradient(-45deg,var(--paper-2) 0 3px,transparent 3px 7px)}.day.hol{--dot:radial-gradient(circle at calc(100% - 7px) 7px,var(--ink-2) 0 2.5px,transparent 3px)}.day.exc{border-color:var(--ink);border-style:dashed}.day.today>span{text-underline-offset:3px;text-decoration:underline}.day.cnt{background-color:color-mix(in srgb,var(--cyan) 7%,var(--sheet))}.day.cnt small{font-family:var(--mono);color:var(--cyan-deep);font-size:10px;font-weight:700;line-height:1;position:absolute;bottom:2px;right:4px}.day.skip{--hatch:repeating-linear-gradient(-45deg,var(--line) 0 2px,transparent 2px 6px)}.day.base{border-color:var(--ink);border-width:2px}.day.goal{--hatch:none;background-color:var(--cyan);color:#0b1e26;box-shadow:var(--cyan-glow);border-color:#0000}.day.goal small{color:#0b1e26}.cal-legend{margin:var(--sp-24) 0 0;padding:var(--sp-16) 0 0;border-top:1px solid var(--line-soft);gap:var(--sp-8) var(--sp-24);font-size:var(--fs-xs);color:var(--ink-2);flex-wrap:wrap;list-style:none;display:flex}.cal-legend li{align-items:center;gap:var(--sp-8);display:flex}.lg{border:1px solid var(--line);width:20px;height:20px;font:700 9px/1 var(--mono);color:var(--cyan-deep);border-radius:5px;place-items:end;padding:1px 2px;font-style:normal;display:inline-grid;position:relative}.lg-cnt{background:color-mix(in srgb,var(--cyan) 7%,var(--sheet))}.lg-off{background:repeating-linear-gradient(-45deg,var(--paper-2) 0 3px,transparent 3px 7px)}.lg-hol{background:radial-gradient(circle at calc(100% - 5px) 5px,var(--ink-2) 0 2.5px,transparent 3px)}.lg-base{border:2px solid var(--ink)}.lg-goal{background:var(--cyan);box-shadow:var(--cyan-glow-soft);border-color:#0000}.cal-hint{align-items:center;gap:var(--sp-8);margin:var(--sp-12) 0 0;font-size:var(--fs-xs);color:var(--ink-3);display:flex}.cal-notes{margin:var(--sp-12) 0 0;gap:var(--sp-4) var(--sp-16);font-size:var(--fs-xs);color:var(--ink-2);flex-wrap:wrap;padding:0;list-style:none;display:flex}.cal-notes .mono{margin-right:var(--sp-4);color:var(--ink-3)}.preset{margin-bottom:var(--sp-32);gap:0;display:grid}.pill{min-height:44px;padding:0 var(--sp-16);font:inherit;font-size:var(--fs-s);color:var(--ink);background:var(--sheet);border:1px solid var(--line);cursor:pointer;transition:border-color var(--dur-color),background-color var(--dur-color),color var(--dur-color);border-radius:999px;font-weight:700}.pill:hover{border-color:var(--ink-3)}.pill[aria-pressed=true]{background:var(--ink);border-color:var(--ink);color:var(--paper)}.sets{grid-template-columns:repeat(2,minmax(0,1fr));gap:24px;display:grid}.set{min-width:0;padding:var(--sp-24) var(--sp-32) var(--sp-32);background:var(--sheet);border:1px solid var(--line-soft);border-radius:var(--r-m);margin:0}.set legend{float:left;width:100%;margin-bottom:var(--sp-16)}.set legend small{margin-left:var(--sp-8);color:var(--ink-3);font-weight:400;font-size:var(--fs-xs)}.set legend+*{clear:both}.wk .chip span{min-width:44px;padding:0 var(--sp-12);justify-content:center}@media (width<=719px){.wk{gap:var(--sp-4);grid-template-columns:repeat(7,minmax(0,1fr));display:grid}.wk .chip span{aspect-ratio:1;width:100%;min-width:0;padding:0}}.nth{gap:var(--sp-4);grid-template-columns:auto repeat(7,minmax(0,1fr));align-items:center;max-width:26rem;display:grid}.nth-h{font-size:var(--fs-xs);color:var(--ink-3);text-align:center;padding-right:var(--sp-8);font-weight:700}.nth-c{aspect-ratio:1;cursor:pointer;max-height:40px;display:block;position:relative}.nth-c input{opacity:0;cursor:pointer;margin:0;position:absolute;inset:0}.nth-c span{border:1px solid var(--line);transition:background-color var(--dur-color),border-color var(--dur-color);border-radius:6px;position:absolute;inset:0}.nth-c:hover span{border-color:var(--ink-3)}.nth-c input:checked+span{border-color:var(--ink);background:repeating-linear-gradient(-45deg,var(--ink-3) 0 2px,transparent 2px 5px)}.nth-c input:focus-visible+span{outline:2px solid var(--entrust);outline-offset:2px}.switch{align-items:center;gap:var(--sp-12);min-height:44px;font-size:var(--fs-s);cursor:pointer;font-weight:700;display:inline-flex;position:relative}.switch input{opacity:0;width:1px;height:1px;position:absolute}.sw{background:var(--line);width:48px;height:28px;transition:background-color var(--dur-color);border-radius:999px;position:relative}.sw:after{content:"";background:var(--sheet);width:22px;height:22px;transition:transform .3s var(--ease);border-radius:50%;position:absolute;top:3px;left:3px;box-shadow:0 1px 3px #00000040}.switch input:checked+.sw{background:var(--ink)}.switch input:checked+.sw:after{transform:translate(20px)}.switch input:focus-visible+.sw{outline:2px solid var(--entrust);outline-offset:2px}.hol-pick{margin-top:var(--sp-12);border-top:1px solid var(--line-soft)}.hol-pick summary{cursor:pointer;padding:var(--sp-12) 0;font-size:var(--fs-s);font-weight:700}.hol-pick summary small{color:var(--ink-3);margin-left:var(--sp-4);font-weight:400}.hol-y{margin-bottom:var(--sp-16)}.hol-y>b{font-size:var(--fs-xs);color:var(--ink-3);margin-bottom:var(--sp-4);display:block}.hol-y ul{gap:0 var(--sp-16);grid-template-columns:repeat(2,minmax(0,1fr));margin:0;padding:0;list-style:none;display:grid}.hol-y label{align-items:center;gap:var(--sp-8);min-height:36px;font-size:var(--fs-s);cursor:pointer;display:flex}.hol-y input{width:18px;height:18px;accent-color:var(--ink)}.hol-y input:disabled+.mono,.hol-y input:disabled~span{color:var(--ink-3)}.hol-y .mono{font-size:var(--fs-xs);color:var(--ink-3);min-width:3em}.add{align-items:center;gap:var(--sp-8);flex-wrap:wrap;display:flex}.add input[type=date]{flex:9.5rem;min-width:0;min-height:44px}.add input[type=text]{flex:2 10rem;min-width:0;min-height:44px}.items{margin:var(--sp-16) 0 0;border-top:1px solid var(--line-soft);padding:0;list-style:none}.items li{align-items:center;gap:var(--sp-4) var(--sp-12);padding:var(--sp-8) 0;border-bottom:1px solid var(--line-soft);font-size:var(--fs-s);flex-wrap:wrap;display:flex}.items li.empty{color:var(--ink-3);font-size:var(--fs-xs)}.items b{font-weight:700}.del{min-height:36px;padding:0 var(--sp-12);font:inherit;font-size:var(--fs-xs);color:var(--ink-2);border:1px solid var(--line);cursor:pointer;background:0 0;border-radius:999px;margin-left:auto}.del:hover{color:#c2410c;border-color:#c2410c}.set-foot{justify-content:space-between;align-items:center;gap:var(--sp-16);margin-top:var(--sp-32);flex-wrap:wrap;display:flex}.saved{align-items:center;gap:var(--sp-8);font-size:var(--fs-s);color:var(--ink-3);transition:color var(--dur-color);display:inline-flex}.saved.is-on{color:var(--ink)}.set-acts{gap:var(--sp-12);flex-wrap:wrap;display:flex}.set-acts .btn{cursor:pointer;font-family:inherit}.yr{background:var(--sheet);border:1px solid var(--line-soft);border-radius:var(--r-m);padding:var(--sp-32)}.yr-nav{align-items:center;gap:var(--sp-16);margin-bottom:var(--sp-32);display:flex}.yr-title{font-size:var(--fs-xl);font-variant-numeric:tabular-nums;text-align:center;min-width:5em;font-weight:800}.yr-total{font-size:var(--fs-s);font-variant-numeric:tabular-nums;margin-left:auto;font-weight:700}.yr-bars{gap:var(--sp-8);grid-template-columns:repeat(12,minmax(0,1fr));align-items:end;height:240px;margin:0;padding:0;list-style:none;display:grid}.yr-bars li{justify-items:center;gap:var(--sp-4);grid-template-rows:1fr auto auto;height:100%;display:grid}.yr-bars i{width:100%;max-width:48px;height:calc(var(--r) * 100%);background:var(--paper-2);border:1px solid var(--line);transition:height var(--dur-move) var(--ease);border-radius:6px 6px 2px 2px;align-self:end}.yr-bars li.now i{background:color-mix(in srgb,var(--cyan) 18%,var(--sheet));border-color:var(--cyan-deep)}.yr-bars b{font-size:var(--fs-m);font-variant-numeric:tabular-nums;font-weight:800}.yr-bars span{font-size:var(--fs-xs);color:var(--ink-3)}.faq{border-top:1px solid var(--ink)}.faq details{border-bottom:1px solid var(--line)}.faq summary{justify-content:space-between;align-items:center;gap:var(--sp-24);padding:var(--sp-24) var(--sp-4);font-size:var(--fs-l);cursor:pointer;font-weight:700;line-height:1.6;list-style:none;display:flex}.faq summary::-webkit-details-marker{display:none}.faq summary i{flex:none;width:20px;height:20px;position:relative}.faq summary i:before,.faq summary i:after{content:"";background:var(--ink);width:100%;height:1.5px;transition:transform .4s var(--ease);position:absolute;top:50%;left:0}.faq summary i:after{transform:rotate(90deg)}.faq details[open] summary i:after{transform:rotate(0)}.faq details p{padding:0 var(--sp-48) var(--sp-24) var(--sp-4);color:var(--ink-2);margin:0;line-height:2}.tl-out{grid-column:6/span 7}.tl .col-q{width:100%;font:inherit;font-family:var(--mono);font-size:var(--fs-2xl);letter-spacing:.04em;color:var(--ink);background:var(--sheet);border:1px solid var(--line);border-radius:var(--r-s);padding:var(--sp-12) var(--sp-16);min-height:72px;transition:border-color var(--dur-color),box-shadow var(--dur-color);font-weight:700;display:block}.tl .col-q:focus{border-color:var(--cyan);box-shadow:0 0 0 3px rgba(var(--cyan-a),.18);outline:none}.fld.is-bad .col-q{border-color:#c2410c}.tl-in>.quick{margin-top:calc(-1 * var(--sp-12))}.quick [data-ex]{font-family:var(--mono)}.col-pair{align-items:baseline;gap:0 var(--sp-16);font-family:var(--mono);font-size:var(--fs-3xl);word-break:break-all;flex-wrap:wrap;display:flex}.col-arw{font-style:normal;font-family:var(--font);font-size:var(--fs-xl);color:var(--ink-3);font-weight:400}.res.is-error .col-pair{font-family:var(--font);font-size:var(--fs-2xl)}.fit{gap:var(--sp-8);flex-wrap:wrap;display:flex}.fit span{align-items:center;gap:var(--sp-4);min-height:28px;padding:0 var(--sp-12);font-size:var(--fs-xs);border:1px solid var(--line);border-radius:999px;font-weight:700;display:inline-flex}.fit .ok:before{content:"✓";color:var(--ink)}.fit .ng{color:var(--ink-3);border-style:dashed}.fit .ng:before{content:"×"}.codes{margin:0;display:grid}.code{align-items:center;gap:var(--sp-16);padding:var(--sp-8) 0;border-bottom:1px solid var(--line-soft);grid-template-columns:8.5rem minmax(0,1fr);display:grid}.code dt{font-size:var(--fs-xs);color:var(--ink-3);font-weight:700}.code dd{align-items:center;gap:var(--sp-8) var(--sp-12);flex-wrap:wrap;min-width:0;margin:0;display:flex}.code code{font-family:var(--mono);font-size:var(--fs-m);word-break:break-all;min-width:0;font-weight:700}.code-val{font-size:var(--fs-s);color:var(--ink-3)}.code-copy{min-height:36px;padding:0 var(--sp-12);font-size:var(--fs-xs);margin-left:auto}.is-done[data-msg]>*{display:none}.is-done[data-msg]:after{content:attr(data-msg)}.fx{margin-top:var(--sp-24)}.fx summary{cursor:pointer;padding:var(--sp-12) 0;font-size:var(--fs-s);font-weight:700}.fx .tl-small{margin-top:var(--sp-8)}.map-bar{justify-content:space-between;align-items:center;gap:var(--sp-16);margin-bottom:var(--sp-24);flex-wrap:wrap;display:flex}.map-base{font-size:var(--fs-m);font-variant-numeric:tabular-nums;font-weight:700}.seg-s{grid-template-columns:repeat(3,auto);display:inline-grid}.seg-s button{padding:0 var(--sp-16)}.seg-s button[aria-pressed=true]{background:var(--ink);color:var(--paper)}.map{gap:var(--sp-4);grid-template-columns:repeat(auto-fill,minmax(9.5rem,1fr));margin:0;padding:0;list-style:none;display:grid}.map button{align-items:center;gap:var(--sp-8);width:100%;min-height:44px;padding:0 var(--sp-12);font:inherit;text-align:left;color:var(--ink);background:var(--sheet);border:1px solid var(--line-soft);border-radius:var(--r-s);cursor:pointer;transition:border-color var(--dur-color),background-color var(--dur-color);grid-template-columns:2.25rem minmax(0,1fr) auto;display:grid;position:relative}.map button:hover{border-color:var(--ink)}.map button:focus-visible{outline:2px solid var(--entrust);outline-offset:2px}.map button.is-done{border-color:var(--cyan)}.map button.is-done[data-msg]:after{font-size:var(--fs-xs);grid-column:1/-1;font-weight:700}.map-n{font-size:var(--fs-xs);color:var(--ink-3);font-variant-numeric:tabular-nums}.map b{font-family:var(--mono);font-size:var(--fs-m)}.map-c{font-size:var(--fs-xs);color:var(--ink-3)}.map li:first-child button{border-color:var(--ink);border-width:2px}.marks{grid-template-columns:repeat(4,minmax(0,1fr));gap:24px;margin:0;padding:0;list-style:none;display:grid}.marks li{gap:var(--sp-4);padding:var(--sp-24);background:var(--sheet);border:1px solid var(--line-soft);border-radius:var(--r-m);display:grid}.marks b{font-family:var(--mono);font-size:var(--fs-2xl);line-height:1.2}.marks .mono{font-size:var(--fs-l);font-variant-numeric:tabular-nums;font-weight:700}.marks small{font-size:var(--fs-xs);color:var(--ink-3)}.marks li.end{border-color:var(--ink)}@media (width<=1023px){.tl-out{grid-column:1/-1}.marks{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width<=719px){.code{gap:var(--sp-4);grid-template-columns:minmax(0,1fr)}.marks{gap:var(--sp-12)}.marks li{padding:var(--sp-16)}}@media (width<=1023px){.tl-in,.tl-cal{grid-column:1/-1}.tl-in{position:static}.sets{grid-template-columns:minmax(0,1fr)}}@media (width<=719px){.tl-panel,.set,.yr{padding:var(--sp-24) var(--sp-16)}.yr-bars{row-gap:var(--sp-24);grid-template-columns:repeat(6,minmax(0,1fr));height:auto}.yr-bars li{height:120px}.faq summary{font-size:var(--fs-m)}.faq details p{padding-right:var(--sp-4)}}@media (width<=359px){.day{min-height:32px;font-size:var(--fs-xs)}.cal-grid{gap:2px}}@media (pointer:coarse){.cal-grid{gap:2px}.tl-cal{padding-inline:var(--sp-16)}.cal-months{column-gap:var(--sp-16)}.hol-y label,.code-copy{min-height:44px}.tl-icon{flex:none}}@media (pointer:coarse) and (width<=719px){.tl-cal.tl-panel{padding-inline:6px}}
