/* Boss Office calendar. Priority reads by weight, marker and edge, never by colour alone. */
.cal{--cal-urgent:var(--red);--cal-high:var(--yellow);--cal-done:var(--green);display:flex;flex-direction:column;gap:14px;min-width:0}
.cal h3{margin:0}
.cal-bar{display:flex;flex-wrap:wrap;align-items:center;gap:10px 18px}
.cal-nav,.cal-zoom,.cal-rec{display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.cal-nav h3{min-width:9.5em;text-align:center;font-size:18px}
.cal-zoom output{min-width:4ch;text-align:center;font:700 13px/1 var(--font-game);color:var(--work-ink)}
.cal .cal-bar button{padding:8px 12px}
.cal-filter{display:flex;align-items:center;gap:8px;margin:0;font-size:14px}
.cal-filter select{min-height:44px;background:var(--work-input);color:var(--work-ink);border:2px solid var(--work-edge);padding:0 8px}
.cal-rec small{flex-basis:100%;color:var(--work-muted);font-size:13px}
.cal .cal-rec button.recording{background:var(--cal-urgent);color:var(--work-title-ink)}
.cal-upload{position:relative;display:inline-flex;align-items:center;min-height:44px;padding:0 12px;border:2px dashed var(--work-wood);font-size:14px;cursor:pointer;margin:0}
.cal-upload input{position:absolute;inset:0;opacity:0;cursor:pointer;width:100%;min-height:0}
.cal-upload:focus-within{outline:3px solid var(--game-focus);outline-offset:3px}
.cal-legend{display:flex;flex-wrap:wrap;gap:6px 16px;margin:0;font-size:13px;color:var(--work-ink)}
.cal-legend>span:not(.cal-hint){display:inline-flex;align-items:center;gap:4px;padding:2px 8px 2px 6px;border-left:4px solid var(--work-ghost);background:var(--work-paper)}
.cal-legend .cal-hint{color:var(--work-muted);margin-left:auto}

.cal-main{display:grid;grid-template-columns:minmax(0,1fr);gap:16px;min-width:0}
@media(min-width:1600px){.cal-main{grid-template-columns:minmax(0,1fr) 290px}}
.cal-viewport{position:relative;overflow:hidden;height:min(68vh,780px);min-height:380px;background:var(--work-paper-deep);border:2px solid var(--work-edge);touch-action:none;cursor:grab;user-select:none;-webkit-user-select:none}
.cal-viewport:active{cursor:grabbing}
.cal-viewport:focus-visible{outline:3px solid var(--game-focus);outline-offset:3px}
.cal-world{position:absolute;left:0;top:0;width:1252px;transform-origin:0 0;will-change:transform}
.cal-week{display:grid;grid-template-columns:repeat(7,172px);gap:8px;height:22px;margin-bottom:8px;font:700 12px/22px var(--font-game);color:var(--work-muted);text-transform:uppercase;letter-spacing:.04em}
.cal-week span{padding-left:8px}
.cal-grid{display:grid;grid-template-columns:repeat(7,172px);gap:8px}
.cal-day{display:flex;flex-direction:column;min-height:286px;background:var(--work-paper);border:2px solid var(--work-wood);box-sizing:border-box}
.cal-day.is-outside{background:transparent;border:2px dashed var(--work-ghost);opacity:.5}
.cal-day.is-today{border-color:var(--work-edge);box-shadow:0 0 0 2px var(--work-edge)}
.cal-day.is-selected{box-shadow:0 0 0 4px var(--game-focus)}
.cal-day.is-match{background:color-mix(in srgb,var(--work-paper) 80%,var(--game-focus))}
.cal-day header{display:flex;align-items:center;gap:4px;padding:3px 3px 3px 4px;border-bottom:2px solid var(--work-paper-deep)}
.cal-day.is-today header{background:var(--work-navy)}
.cal-day.is-today header .cal-count{color:var(--work-title-ink)}
.cal .cal-world button{min-height:0;min-width:0;padding:0;border:0;border-radius:0;background:transparent;box-shadow:none;transform:none;color:var(--work-ink);font-size:13px;line-height:1.2}
.cal .cal-world .cal-num{min-width:30px;height:26px;font:700 15px/26px var(--font-game);text-align:center}
.cal .cal-world .cal-num:hover,.cal .cal-world .cal-num[aria-pressed=true]{background:var(--work-paper-deep);color:var(--work-ink)}
.cal-day.is-today .cal-num{color:var(--work-title-ink)}
.cal-count{margin-left:auto;font:12px/1 var(--font-game);color:var(--work-muted)}
.cal .cal-world .cal-icon{width:26px;height:26px;font:700 15px/24px var(--font-game);text-align:center;border:2px solid var(--work-wood);background:var(--work-paper-deep)}
.cal .cal-world .cal-icon:hover{background:var(--work-highlight)}
.cal .cal-world .cal-icon:disabled{opacity:.35;cursor:not-allowed}
.cal-tags{display:flex;flex-wrap:wrap;gap:3px}
.cal-day-tags{padding:4px 6px 0}
.cal-tag{font:11px/1.5 var(--font-game);padding:0 4px;background:var(--work-paper-deep);color:var(--work-ink);border:1px solid var(--work-ghost);max-width:150px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cal-lines{list-style:none;margin:0;padding:4px 4px 6px;display:flex;flex-direction:column;gap:2px}
.cal-entry{display:flex;align-items:stretch;gap:4px;min-height:22px;border-left:3px solid transparent;padding-left:2px}
.cal .cal-world .cal-check{flex:0 0 16px;width:16px;height:16px;margin-top:3px;border:2px solid var(--work-edge);background:var(--work-input);position:relative}
.cal .cal-world .cal-check[aria-pressed=true]{background:var(--cal-done);border-color:var(--cal-done)}
.cal .cal-world .cal-check[aria-pressed=true]::after{content:'';position:absolute;left:3px;top:0;width:4px;height:8px;border:solid var(--work-paper);border-width:0 2px 2px 0;transform:rotate(45deg)}
.cal .cal-world .cal-line{flex:1;display:flex;align-items:center;gap:3px;min-width:0;text-align:left;padding:1px 2px}
.cal .cal-world .cal-line:hover{background:var(--work-paper-deep)}
.cal-text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}
.cal-more{flex:0 0 auto;font:700 11px/1 var(--font-game);color:var(--work-muted);padding:1px 3px;border:1px solid var(--work-ghost)}
.cal-mark{flex:0 0 auto;font:700 12px/1 var(--font-game)}
.p-urgent .cal-mark{color:var(--cal-urgent)}.p-high .cal-mark{color:var(--cal-high)}.p-low .cal-mark{color:var(--work-muted)}
.cal-entry.p-urgent{border-left:4px solid var(--cal-urgent);background:color-mix(in srgb,var(--cal-urgent) 13%,var(--work-paper))}
.cal-entry.p-urgent .cal-text{font-weight:800}
.cal-entry.p-high{border-left-color:var(--cal-high)}
.cal-entry.p-high .cal-text{font-weight:700}
.cal-entry.p-normal{border-left-color:var(--work-ghost)}
.cal-entry.p-low{border-left:3px dotted var(--work-ghost)}
.cal-entry.p-low .cal-text{color:var(--work-muted);font-size:12px}
.cal-entry.is-done{background:transparent}
.cal-entry.is-done .cal-text{text-decoration:line-through 2px;color:var(--work-muted);font-weight:400}
.cal-entry.is-done .cal-mark{opacity:.55}
.cal-entry.is-filtered{opacity:.28}
.cal-legend .p-urgent{border-left-color:var(--cal-urgent)!important;font-weight:800}
.cal-legend .p-high{border-left-color:var(--cal-high)!important;font-weight:700}
.cal-legend .p-low{border-left-style:dotted!important;color:var(--work-muted)}

.cal-voice{display:flex;flex-wrap:wrap;gap:10px;align-items:stretch}
.cal-voice h3{flex-basis:100%;font-size:15px}
.cal-voice-card{flex:1 1 300px;max-width:520px;padding:12px 14px;background:var(--work-paper);border:2px solid var(--work-edge);border-left:6px solid var(--work-ghost)}
.cal-voice-card.is-ready{border-left-color:var(--cal-done)}
.cal-voice-card.is-failed{border-left-color:var(--cal-urgent)}
.cal-voice-card h4{margin:2px 0 4px;font-size:17px;color:var(--work-ink)}
.cal-voice-card p{margin:0 0 8px;overflow-wrap:anywhere}
.cal-voice-day{font:12px/1.4 var(--font-game);color:var(--work-muted)!important;text-transform:uppercase;letter-spacing:.05em}
.cal-wait{color:var(--work-muted)!important}
.cal-actions{display:flex;flex-wrap:wrap;gap:8px}
.cal .cal-actions button{padding:8px 14px}

.cal-bucket{display:flex;flex-direction:column;gap:8px;padding:14px;background:var(--work-paper);border:2px solid var(--work-edge);min-width:0;align-self:start;max-height:min(68vh,780px);overflow:auto}
.cal-bucket h3{font-size:16px}
.cal-score{margin:0;font-size:14px}
.cal-score strong{font:700 28px/1 var(--font-game);color:var(--cal-done);margin-right:6px}
.cal-stats{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:0}
.cal-stats div{padding:6px 8px;background:var(--work-paper-deep)}
.cal-stats dt{font-size:12px;color:var(--work-muted)}
.cal-stats dd{margin:0;font:700 18px/1.3 var(--font-game);color:var(--work-ink)}
.cal-wins{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:4px}
.cal-wins li{display:flex;flex-direction:column;gap:1px;padding:6px 8px;border-left:3px solid var(--cal-done);background:color-mix(in srgb,var(--cal-done) 8%,var(--work-paper))}
.cal-wins li.p-urgent,.cal-wins li.p-high{border-left-width:5px}
.cal-win-title{display:flex;gap:4px;font-size:14px;overflow-wrap:anywhere}
.cal-wins li.p-urgent .cal-win-title{font-weight:800}.cal-wins li.p-high .cal-win-title{font-weight:700}
.cal-wins small,.cal-empty{color:var(--work-muted)!important;font-size:12px}
.cal-error{padding:20px;color:var(--work-ink)}

.cal-dialog{width:min(560px,calc(100vw - 24px));max-height:calc(100dvh - 24px);padding:0;border:2px solid var(--work-edge);background:var(--work-paper);color:var(--work-ink);box-shadow:6px 6px 0 var(--work-edge)}
.cal-dialog::backdrop{background:rgb(0 0 0 / .45)}
.cal-sheet{display:flex;flex-direction:column;gap:12px;padding:16px 18px 18px}
.cal-sheet header{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:-16px -18px 0;padding:8px 10px 8px 18px;background:var(--work-navy)}
.cal-sheet header h3{margin:0;color:var(--work-title-ink);font:700 16px/1.3 var(--font-game);overflow-wrap:anywhere}
.cal-sheet label{display:flex;flex-direction:column;gap:4px;margin:0;font-size:14px;color:var(--work-ink)}
.cal-sheet label small{color:var(--work-muted);font-size:12px}
.cal-sheet :is(input:not([type=radio]),textarea){min-height:44px;box-sizing:border-box;width:100%;padding:8px 10px;background:var(--work-input);color:var(--work-ink);border:2px solid var(--work-input-edge);border-radius:0}
.cal-sheet textarea{resize:vertical;min-height:120px}
.cal-sheet button{min-height:44px;padding:8px 14px;border:2px solid var(--work-edge);border-radius:0;background:var(--work-paper-deep);color:var(--work-ink);box-shadow:inset 2px 2px var(--work-highlight),inset -2px -3px var(--work-wood)}
.cal-sheet button.primary{background:var(--work-navy);color:var(--work-title-ink);box-shadow:inset 0 3px var(--work-highlight),inset 0 -4px var(--work-edge)}
.cal-sheet button.danger{background:var(--work-paper);color:var(--cal-urgent);border-color:var(--cal-urgent)}
.cal-sheet header button{background:var(--work-paper);padding:6px 12px}
.cal-sheet :is(button,input,textarea,select):focus-visible{outline:3px solid var(--game-focus);outline-offset:2px}
.cal-row{display:grid;grid-template-columns:minmax(0,180px) minmax(0,1fr);gap:12px}
.cal-priority{display:flex;flex-wrap:wrap;gap:6px;margin:0;padding:0;border:0}
.cal-priority legend{font-size:14px;margin-bottom:4px;color:var(--work-ink)}
.cal-sheet .cal-priority label{flex-direction:row;align-items:center;gap:6px;min-height:44px;padding:0 12px;border:2px solid var(--work-ghost);border-left-width:5px;cursor:pointer}
.cal-sheet .cal-priority label.p-urgent{border-left-color:var(--cal-urgent);font-weight:800}
.cal-sheet .cal-priority label.p-high{border-left-color:var(--cal-high);font-weight:700}
.cal-sheet .cal-priority label.p-low{border-left-style:dotted;color:var(--work-muted)}
.cal-sheet .cal-priority label:has(input:checked){background:var(--work-paper-deep);border-color:var(--work-edge)}
.cal-sheet .cal-priority input{accent-color:var(--work-navy);margin:0;width:16px;height:16px}
.cal-form-error{margin:0;color:var(--cal-urgent);font-weight:700}
.cal-form-error:empty{display:none}
.cal-meta{margin:0;color:var(--work-muted);font-size:14px}
.cal-body{max-height:50vh;overflow:auto;font-size:15px;line-height:1.55}
.cal-body p{margin:0 0 10px;overflow-wrap:anywhere}

@media(max-width:700px){
 .cal-nav{width:100%}.cal-nav h3{flex:0 0 100%;order:-1;text-align:left;font-size:16px}
 .cal-legend .cal-hint{margin-left:0;flex-basis:100%}
 .cal-viewport{height:62vh;min-height:320px}
 /* Native date controls and flex/grid children must shrink to the sheet's padded width. */
 .cal-dialog,.cal-sheet,.cal-sheet label,.cal-row,.cal-priority{min-width:0;box-sizing:border-box}
 .cal-dialog{max-width:calc(100vw - 24px)}
 .cal-sheet :is(input:not([type=radio]),textarea,select){min-width:0;max-width:100%;min-inline-size:0}
 .cal-row{grid-template-columns:minmax(0,1fr)}
 .cal-voice-card{min-width:0;max-width:100%;box-sizing:border-box}
 .cal-voice-card h4{overflow-wrap:anywhere}
 .cal-bucket{max-height:none}
}
@media(prefers-reduced-motion:reduce){.cal-world{will-change:auto}}
