.mobile-nav,.mobile-presentation{display:none}.mobile-optional{margin-top:16px}.mobile-optional>summary{cursor:pointer;padding:14px 0;font-weight:600}.appointment-row{display:flex;align-items:center;gap:8px}.appointment-row>.list-event{flex:1;min-width:0}.status-next{white-space:nowrap;min-height:44px}.mobile-optional>.domain-fields{margin-top:0}.mobile-filters>summary{display:none}
@media(max-width:700px){
 html{scroll-padding-top:12px}body{padding-bottom:calc(84px + env(safe-area-inset-bottom))}.app-header{height:58px;padding:0 16px}.app-header #new{display:none}.brand-sub{display:inline}.prototype{font-size:11px}.sidebar{padding:12px 16px;gap:12px}input,select,textarea{font-size:16px!important;min-height:44px}button{min-height:44px}.sidebar>.sidebar-label{display:none}.sidebar>button{display:none}.sidebar #staff-filters{gap:8px;flex-wrap:wrap}.filter{padding:6px 4px;min-height:44px}.filter input{width:22px;height:22px;min-height:22px}.toolbar{padding:12px 16px}.toolbar .date-navigation{flex-wrap:wrap;width:100%}.date-navigation h1{font-size:19px;margin-left:8px}.toolbar .view-switch{margin-right:auto}#undo-toolbar{margin-left:0}.view-switch button{min-height:44px}.mobile-presentation{display:flex;margin:0 16px 12px;gap:4px;background:#edf3ef;border-radius:12px;padding:4px}.mobile-presentation button{flex:1;background:transparent;border:0}.mobile-presentation button[aria-pressed=true]{background:white;font-weight:600;box-shadow:0 1px 4px #1232}.calendar-controls{padding:0 16px 10px}.calendar-controls .selects{display:none}.calendar-scroll,.calendar-footer{display:none}.mobile-grid-mode .calendar-scroll{display:block;height:58dvh;min-height:280px}.mobile-grid-mode .calendar-controls .selects{display:flex;flex-wrap:wrap}.mobile-grid-mode .calendar-footer{display:flex}#settings-open{margin:0 16px 12px;max-width:calc(100% - 32px)}.agenda{padding:0 16px 20px}.agenda-heading{display:block}.agenda-heading h2{font-size:17px;margin-bottom:6px}.agenda-heading>span{font-size:12px}.appointment-row{display:block;background:white;border:1px solid #dce5df;border-radius:14px;margin:12px 0;overflow:hidden}.appointment-row>.list-event{display:grid;grid-template-columns:1fr;gap:7px;width:100%;border:0;border-radius:0;padding:16px;text-align:left}.list-event time{font-size:17px;font-weight:650;min-width:0}.list-event>.staff-dot{display:none}.list-event>span:not(.staff):not(.staff-dot){font-size:17px;white-space:normal;overflow-wrap:anywhere}.list-event .staff{font-size:13px;white-space:normal;line-height:1.6}.status-next{display:block;width:calc(100% - 24px);margin:0 12px 12px;color:#176b59;background:#eef7f1}.worklists{padding:20px 16px;scroll-margin-top:12px}.work-row p{overflow-wrap:anywhere;line-height:1.7}.work-row button{display:block;width:100%;margin:8px 0 0}.mobile-nav{display:flex;position:fixed;bottom:0;left:0;right:0;z-index:20;gap:8px;padding:10px 12px calc(10px + env(safe-area-inset-bottom));background:#fffffff5;border-top:1px solid #dce5df;box-shadow:0 -4px 18px #1832260a}.mobile-nav button{flex:1;min-height:48px;padding:8px;font-size:14px}.mobile-editing .mobile-nav{visibility:hidden}.toast{left:12px;right:12px;bottom:calc(86px + env(safe-area-inset-bottom));width:auto;max-width:none;transform:none;flex-wrap:wrap;font-size:14px}.toast button{min-height:44px}
 #editor,#settings-dialog,#cancel-booking{width:100%;max-width:100%;height:100dvh;max-height:100dvh;margin:0;padding:0;border:0;border-radius:0;overflow-y:auto;overscroll-behavior:contain}#booking,#settings-form,#cancel-form{padding:0 16px!important;min-height:100%;padding-bottom:env(safe-area-inset-bottom)!important}.dialog-top{position:sticky;top:0;background:white;z-index:4;margin:0 -16px;padding:12px 16px;border-bottom:1px solid #e2e9e6}.dialog-top .tiny-label{display:none}.dialog-top h2{font-size:20px}.dialog-top button{min-width:44px;min-height:44px}.domain-fields{padding:12px;margin:14px 0}.domain-fields>label{display:block;margin-top:12px;font-size:14px}.domain-fields>label:first-child{margin-top:0}.patient-summary{font-size:13px}.form-grid{gap:12px}.form-grid label{font-size:13px}form>label{font-size:14px}.durations{gap:8px}.durations button{min-width:52px;min-height:44px;font-size:14px}footer{position:sticky;bottom:0;background:white;z-index:4;padding:12px 0 calc(12px + env(safe-area-inset-bottom));margin-top:18px;border-top:1px solid #dce5df;gap:8px;flex-wrap:wrap}footer .primary{min-width:110px}#delete{font-size:13px;padding-left:0}.mobile-optional>summary{min-height:48px;font-size:14px}.mobile-optional{border-top:1px solid #e2e9e6}.note{font-size:12px}.slot-results{display:grid;grid-template-columns:1fr 1fr}.slot-results button{min-height:48px}.error{font-size:14px}
}
@media(max-width:380px){.date-navigation h1{width:100%;margin:10px 0 0}.form-grid{gap:8px}.mobile-nav button{font-size:13px}.brand-sub{font-size:12px}}
@media(max-width:700px){.mobile-filters{width:100%}.mobile-filters>summary{display:block;cursor:pointer;padding:8px 0;min-height:36px;font-size:13px}.mobile-filters #staff-filters{display:flex;margin-bottom:10px}.mobile-filters #settings-open{margin:0}.toolbar #today{display:none}.toolbar .date-navigation{flex-wrap:nowrap}.date-navigation h1{font-size:18px;white-space:nowrap;width:auto;margin:0 0 0 6px}.toolbar .view-switch{display:none}.mobile-grid-mode .toolbar .view-switch{display:flex}.toolbar{padding-top:8px;padding-bottom:8px}.toolbar #undo-toolbar{min-height:36px;padding:4px 12px}.sidebar{gap:6px}.agenda-heading{margin-top:10px}.mobile-presentation{margin-bottom:8px}#find-slots{width:100%;margin-top:14px;min-height:48px}}

@media(max-width:700px){.sidebar #jump{order:0}.sidebar #search{order:1}.mobile-filters{order:2}#undo-toolbar:disabled{display:none}}

.calendar-full-tools{display:none}body.calendar-fullscreen{overflow:hidden;padding:0}body.calendar-fullscreen .app-header,body.calendar-fullscreen .sidebar,body.calendar-fullscreen .trial-bar,body.calendar-fullscreen .mobile-nav{display:none}body.calendar-fullscreen main{position:fixed;inset:0;height:100dvh;z-index:25;background:white;display:flex;flex-direction:column;padding-top:env(safe-area-inset-top);padding-bottom:env(safe-area-inset-bottom);box-sizing:border-box}body.calendar-fullscreen main> :not(.calendar-full-tools):not(.toolbar):not(.calendar-controls):not(.calendar-scroll):not(#storage-status){display:none!important}body.calendar-fullscreen .calendar-full-tools{display:flex;align-items:center;gap:12px;padding:8px 12px;border-bottom:1px solid #dce5df}body.calendar-fullscreen .calendar-full-tools label{display:flex;align-items:center;gap:6px;font-size:12px;margin-left:auto}body.calendar-fullscreen .calendar-full-tools select{width:auto;max-width:180px}body.calendar-fullscreen .toolbar{padding:4px 12px;gap:4px;flex-shrink:0}body.calendar-fullscreen .toolbar .view-switch,body.calendar-fullscreen #undo-toolbar{display:none}body.calendar-fullscreen .calendar-controls{padding:4px 12px 8px;gap:4px;flex-shrink:0}body.calendar-fullscreen .calendar-controls>div:first-child{display:none}body.calendar-fullscreen .calendar-controls .selects{display:flex;gap:8px;flex-wrap:wrap;font-size:12px}body.calendar-fullscreen .calendar-controls label:has(#snap){display:none}body.calendar-fullscreen .calendar-scroll{display:block;flex:1;min-height:0;height:auto;width:100%;overscroll-behavior:contain}body.calendar-fullscreen .cal-head,body.calendar-fullscreen .cal-body{grid-template-columns:54px repeat(var(--cols),minmax(240px,1fr));min-width:calc(54px + var(--cols)*240px)}body.calendar-fullscreen .time-axis{position:sticky;left:0;background:white;z-index:4}body.calendar-fullscreen .zone{position:sticky;left:0;background:white;z-index:6}body.calendar-fullscreen .column-head{padding:8px 10px}body.calendar-fullscreen .event-time{font-size:13px}body.calendar-fullscreen .toast{z-index:30;bottom:12px}

.calendar-full-tools button{white-space:nowrap;flex-shrink:0}.calendar-full-tools label{white-space:nowrap}body.calendar-fullscreen .zone{align-self:stretch;display:flex;align-items:flex-end}

/* Contained editor fields and distinct visual roles. */
:root{--accent:#216b60;--line:#dce5e7;--muted:#596d78}
button{transition:background-color .14s,box-shadow .14s,transform .14s;touch-action:manipulation;-webkit-tap-highlight-color:transparent}
button:active:not(:disabled){transform:translateY(1px);box-shadow:inset 0 0 0 2px #234e401f}
.primary{box-shadow:0 2px 5px #173e341a}
input,select,textarea{border-color:#c7d3da;border-radius:10px;line-height:1.4}
input:focus,select:focus,textarea:focus{border-color:#24776b;box-shadow:0 0 0 3px #24776b14}
input:disabled,select:disabled{opacity:1;color:#304853;background:#edf2f5;-webkit-text-fill-color:#304853}
.form-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.form-grid>label{min-width:0}
.editor-body>label{display:block;margin-top:16px;font-weight:500}.editor-section-title{font-size:14px;margin:24px 0 0;color:#304853}
.patient-fields{background:#f0f5f8;border:1px solid #dfe8ee}
.patient-summary{color:#4e6473;border-left:3px solid #7b9ab3;padding-left:10px;line-height:1.7}
#booking .error:not(:empty){padding:12px;border:1px solid #ecc8c1;border-radius:10px;background:#fff3ee}
#booking .mobile-optional{border:1px solid #dce5e7;border-radius:12px;padding:0 12px;margin-bottom:16px}
#booking .mobile-optional>summary{color:#435f71}
#find-slots{color:#315f86;border-color:#c9dae8;background:#f3f8fc}
#booking .durations button[aria-pressed=true]{background:#216b60;color:#fff;border-color:#216b60}
@media(max-width:700px){
 main,.sidebar{background:#f6f8fb}.app-header{border-bottom-color:#e1e7ed}
 .agenda-heading h2{color:#304853}
 .appointment-row{border-color:#dde5ea;box-shadow:0 3px 10px #273e5107;border-radius:16px;border-left:4px solid var(--event-color)}
 .appointment-row>.list-event{background:linear-gradient(100deg,var(--event-bg),#fff 65%);padding:15px 14px 12px;gap:7px}
 .list-event time{color:var(--event-ink);font-size:18px;letter-spacing:.2px}
 .list-event .staff{margin-left:0;color:#536875;font-size:13px}
 .status-next{background:#fff;color:#345b70;border-color:#d8e3ea;text-align:center;font-weight:500}
 .appointment-row[data-status="来院済み"] .status-next{background:#edf5fc;color:#275980;border-color:#cedfed}
 .appointment-row[data-status="診療中"] .status-next{background:#fff7e8;color:#785817;border-color:#ebdbb6}
 .appointment-row[data-status="終了"]{border-left-color:#90a3aa}
 .mobile-presentation{background:#e6edf3;border:1px solid #dce5ed}.mobile-presentation button[aria-pressed=true]{color:#264e6b}
 #editor{overflow:hidden;padding:0;height:100dvh;max-height:100dvh;background:#fff}
 #booking{height:100%;min-height:0;padding:0!important;display:flex;flex-direction:column;overflow:hidden}
 #booking>.dialog-top{position:relative;top:auto;margin:0;padding:calc(10px + env(safe-area-inset-top)) 16px 10px;flex-shrink:0;background:#fff}
 #booking .dialog-top h2{font-size:18px;letter-spacing:.1px;color:#263f4f}
 #booking>.editor-body{overflow-y:auto;overscroll-behavior:contain;min-height:0;flex:1;padding:0 16px 20px;scroll-padding:16px}
 #booking>.editor-body>.note{font-size:11px;line-height:1.6;color:#607482;margin:12px 0}
 #booking .patient-fields{padding:14px;margin:14px 0 20px;border-radius:14px}
 #booking .patient-fields>.form-grid{grid-template-columns:minmax(0,1fr);gap:0}
 #booking label{color:#425866;font-size:13px}
 #booking input,#booking select,#booking textarea{max-width:100%;min-width:0;width:100%;min-height:46px;padding:10px;font-weight:400}
 #booking input[type=checkbox]{width:20px;min-height:20px;flex-shrink:0}
 #booking input[type=date],#booking input[type=time]{appearance:none;-webkit-appearance:none;display:block}
 #booking .form-grid{gap:10px}
 #booking .durations{gap:6px;padding:12px 0;margin-top:2px}
 #booking .durations button{min-width:46px;padding:6px 9px}
 #booking #duration-label{font-size:13px;font-weight:600}
 #booking>footer{position:relative;bottom:auto;flex-shrink:0;margin:0;padding:10px 16px calc(10px + env(safe-area-inset-bottom));display:flex;flex-wrap:nowrap;gap:8px;background:#fff;box-shadow:0 -4px 12px #273e5106}
 #booking>footer>div{flex:1;display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.5fr);gap:8px}
 #booking>footer button{font-size:14px;min-height:48px;padding:8px 10px;min-width:0}
 #booking>footer #delete{font-size:11px;width:72px;line-height:1.5;padding:4px;color:#a34336;background:#fff6f2;border:1px solid #efdcd6}
 #booking .mobile-optional .domain-fields{padding:8px;background:#f5f7fa}
 #booking .inline-label input{width:20px}
}
@media(prefers-reduced-motion:reduce){button{transition:none}button:active:not(:disabled){transform:none}}
