[data-auth=member] .kb-guest-view,[data-auth=guest] .kb-member-view{display:none}.tools-wrap{padding-top:var(--kb-space-5)}.kb2 .tools-title{margin-bottom:var(--kb-space-5)}.tools-pomo{display:grid;gap:var(--kb-space-4);align-items:start}@media(min-width:900px){.tools-pomo{grid-template-columns:repeat(2,minmax(0,1fr))}}.kb2 .tools-pomo .kb-card-title{display:flex;align-items:center;gap:var(--kb-space-2);font-size:var(--kb-text-md)}.pomo-card{display:flex;flex-direction:column;align-items:center;gap:var(--kb-space-4)}.pomo-card .kb-card-title{align-self:flex-start}.pomo-modes{display:inline-flex;padding:3px;border-radius:var(--kb-radius-full);background:var(--kb-bg-sunken)}.pomo-modes button{border:0;background:none;padding:var(--kb-space-1) var(--kb-space-4);border-radius:var(--kb-radius-full);font:inherit;font-size:var(--kb-text-sm);color:var(--kb-ink);cursor:pointer}.pomo-modes button[aria-checked=true]{background:var(--kb-surface-raised);color:var(--kb-ink-strong);font-weight:var(--kb-weight-medium);box-shadow:var(--kb-shadow-1)}.pomo-dial{position:relative;width:min(240px,70vw);aspect-ratio:1}.pomo-dial svg{width:100%;height:100%;transform:rotate(-90deg)}.pomo-track{fill:none;stroke:var(--kb-bg-sunken);stroke-width:8}.pomo-ring{fill:none;stroke:var(--kb-accent);stroke-width:8;stroke-linecap:round;stroke-dasharray:339.29;transition:stroke-dashoffset .25s linear}.is-break .pomo-ring{stroke:var(--kb-success)}.pomo-time{position:absolute;inset:0;display:grid;place-items:center;font-family:var(--kb-font-mono);font-size:clamp(2.4rem,1.6rem + 3vw,3.4rem);font-weight:var(--kb-weight-bold);color:var(--kb-ink-strong);font-variant-numeric:tabular-nums}@media(prefers-reduced-motion:reduce){.pomo-ring{transition:none}}.pomo-task{width:100%;max-width:420px}.pomo-actions{justify-content:center}.pomo-settings{display:grid;grid-template-columns:repeat(2,minmax(0,140px));gap:var(--kb-space-3)}.pomo-sum{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--kb-space-2);margin:0 0 var(--kb-space-3)}.pomo-sum div{padding:var(--kb-space-3);border-radius:var(--kb-radius);background:var(--kb-bg-sunken)}.pomo-sum dt{font-size:var(--kb-text-xs);color:var(--kb-muted)}.pomo-sum dd{margin:0;font-size:var(--kb-text-sm);font-weight:var(--kb-weight-bold);color:var(--kb-ink-strong)}.pomo-recent{list-style:none;margin:0;padding:0;font-size:var(--kb-text-sm)}.pomo-recent li{display:flex;flex-direction:column;padding:var(--kb-space-2) 0;border-top:1px solid var(--kb-border)}.pomo-recent li:first-child{border-top:0}.pomo-recent small{font-size:var(--kb-text-xs)}.tools-tt{margin-top:var(--kb-space-7)}.tt-head{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:var(--kb-space-3);margin-bottom:var(--kb-space-4)}.kb2 .tt-head h2{display:flex;align-items:center;gap:var(--kb-space-2);margin:0;font-size:var(--kb-text-xl)}.tt-term{display:inline-flex;align-items:center;gap:var(--kb-space-2);font-size:var(--kb-text-sm)}.tt-term .kb-input{width:auto;min-height:36px}.tt-grid{display:none;grid-template-columns:40px repeat(7,minmax(0,1fr));gap:2px;background:var(--kb-border);border:1px solid var(--kb-border);border-radius:var(--kb-radius-lg);overflow:hidden}@media(min-width:768px){.tt-grid{display:grid}.tt-grid[hidden]{display:none}}.tt-corner,.tt-dayhead,.tt-period,.tt-cell{background:var(--kb-surface)}.tt-corner{grid-row:1;grid-column:1}.tt-dayhead{grid-row:1;display:flex;align-items:center;justify-content:center;gap:var(--kb-space-1);font-size:var(--kb-text-sm);font-weight:var(--kb-weight-medium);color:var(--kb-ink-strong)}.tt-dayhead small{font-size:11px;color:var(--kb-accent-hover)}.tt-dayhead.is-today,.tt-cell.is-today{background:color-mix(in srgb,var(--kb-accent-soft) 45%,var(--kb-surface))}.tt-period{grid-column:1;display:grid;place-items:center;font-size:var(--kb-text-xs);color:var(--kb-muted)}.tt-course{position:relative;z-index:1;margin:2px;padding:var(--kb-space-2);display:flex;flex-direction:column;gap:2px;text-align:left;border:1px solid color-mix(in srgb,var(--c) 40%,var(--kb-border));border-left:4px solid var(--c);border-radius:var(--kb-radius-sm);background:color-mix(in srgb,var(--c) 10%,var(--kb-surface-raised));color:var(--kb-ink-strong);font:inherit;font-size:var(--kb-text-xs);cursor:pointer;overflow:hidden}.tt-course b{font-size:var(--kb-text-sm);line-height:1.3}.tt-course small{color:var(--kb-ink)}.tt-course:hover{box-shadow:var(--kb-shadow-2)}.tt-course.is-off,.tt-row.is-off{border-style:dashed;background:var(--kb-bg-sunken)}.tt-off-tag{margin-top:auto}.tt-days{display:flex;gap:var(--kb-space-1);overflow-x:auto;margin-bottom:var(--kb-space-3);scrollbar-width:none}.tt-days::-webkit-scrollbar{display:none}.tt-days button{flex:1 1 0;min-width:38px;height:36px;border:1px solid var(--kb-border);border-radius:var(--kb-radius);background:var(--kb-surface);color:var(--kb-ink);font:inherit;font-size:var(--kb-text-sm);cursor:pointer}.tt-days button[aria-selected=true]{background:var(--kb-accent);border-color:var(--kb-accent);color:var(--kb-on-accent)}.tt-daylist{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--kb-space-2)}@media(min-width:768px){.tt-days,.tt-daylist{display:none}.is-empty .tt-daylist{display:flex}}.tt-row{display:flex;align-items:center;gap:var(--kb-space-3);width:100%;padding:var(--kb-space-3);border:1px solid var(--kb-border);border-left:4px solid var(--c);border-radius:var(--kb-radius);background:var(--kb-surface);color:var(--kb-ink);font:inherit;text-align:left;cursor:pointer}.tt-row>span:last-child{display:flex;flex-direction:column;min-width:0}.tt-row b{color:var(--kb-ink-strong)}.tt-row small{font-size:var(--kb-text-xs)}.tt-row-time{flex:none;width:5.5em;font-size:var(--kb-text-xs);color:var(--kb-muted)}.tt-day-empty{padding:var(--kb-space-4) 0;text-align:center;font-size:var(--kb-text-sm)}.tt-head .kb-tag:empty{display:none}.tools-site-tt .tt-course,.tools-site-tt .tt-row{cursor:default}.tools-site-tt .tt-course:hover{box-shadow:none}.tt-site-desc{margin:calc(var(--kb-space-3) * -1) 0 var(--kb-space-4);font-size:var(--kb-text-sm)}.tt-form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--kb-space-3)}.tt-span2{grid-column:1 / -1}.tt-color{padding:4px;height:40px;cursor:pointer}
