/* Shared calendar; business inputs keep their values, precision and validation. */
.yt-date { position:relative; display:block; min-width:0; width:100%; }
.yt-date-native { position:absolute!important; width:1px!important; height:1px!important; padding:0!important; margin:0!important; opacity:0; pointer-events:none; clip-path:inset(50%); }
.yt-date .yt-date-display { width:100%; box-sizing:border-box; padding-right:40px!important; min-width:0; }
.yt-date .yt-date-display:focus-visible { outline:none; border-color:#4d78e6; box-shadow:0 0 0 3px #4d78e614; }
.yt-date-display[aria-invalid=true] { border-color:#bd4c54!important; }
.yt-date .yt-date-toggle { position:absolute; inset:1px 2px 1px auto; display:flex; align-items:center; justify-content:center; width:36px; min-width:0; margin:0; padding:0; border:0; border-radius:7px; background:transparent; color:#7a8fa3; cursor:pointer; }
.yt-date-toggle:hover:not(:disabled) { color:#365fbf; background:#edf3ff; }
.yt-date-toggle svg { width:17px; height:17px; }
.yt-date-toggle:disabled { opacity:.45; cursor:not-allowed; }
.yt-calendar { --calendar-blue:#365fbf; position:fixed; inset:auto; box-sizing:border-box; margin:0; padding:14px; width:310px; max-width:calc(100vw - 20px); border:1px solid #dbe5ef; border-radius:14px; background:#fff; color:#203a53; box-shadow:0 12px 36px #203a531c; z-index:2100; overflow:auto; overscroll-behavior:contain; font:14px/1.5 "Microsoft YaHei",system-ui,sans-serif; opacity:0; transform:translateY(-4px); transition:opacity .18s ease,transform .18s ease; scrollbar-width:thin; scrollbar-color:#dce4ef transparent; }
.yt-calendar[data-direction=up] { transform:translateY(4px); }
.yt-calendar.is-open { opacity:1; transform:none; }
.yt-calendar[hidden],.yt-calendar [hidden] { display:none!important; }
.yt-calendar button,.yt-calendar input { box-sizing:border-box; font:inherit; }
.yt-calendar button { margin:0; padding:0; border:0; border-radius:8px; background:transparent; color:inherit; cursor:pointer; transition:background .15s ease,color .15s ease; }
.yt-calendar button:hover:not(:disabled) { color:var(--calendar-blue); background:#f0f5fc; }
.yt-calendar :is(button,input):focus-visible { outline:2px solid #7fa2ee; outline-offset:1px; }
.yt-calendar button:disabled { color:#afbac6; cursor:not-allowed; }
.yt-calendar-head { display:flex; align-items:center; justify-content:space-between; gap:6px; margin-bottom:10px; }
.yt-calendar-head .yt-calendar-nav { width:32px; height:32px; font-size:21px; }
.yt-calendar-title { display:flex; justify-content:center; gap:3px; }
.yt-calendar-title button { padding:5px 8px; font-weight:600; }
.yt-calendar-week,.yt-calendar-grid { display:grid; grid-template-columns:repeat(7,minmax(0,1fr)); gap:3px; }
.yt-calendar-week { margin-bottom:5px; color:#8291a8; font-size:12px; text-align:center; }
.yt-calendar-grid button { width:100%; height:35px; font-size:13px; }
.yt-calendar-grid button.is-other { color:#95a4b5; }
.yt-calendar button.is-today { box-shadow:inset 0 0 0 1px #b9cef5; color:var(--calendar-blue); }
.yt-calendar button[aria-pressed=true] { background:#edf3ff; color:var(--calendar-blue); font-weight:600; }
.yt-calendar button.is-selected { background:var(--calendar-blue); color:#fff; }
.yt-calendar button.is-selected:hover { background:#294fac; color:#fff; }
.yt-calendar-periods { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:7px; min-height:232px; align-content:center; }
.yt-calendar-periods button { min-height:44px; padding:7px; }
.yt-calendar-periods.years { grid-template-columns:repeat(4,minmax(0,1fr)); }
.yt-calendar-footer { display:flex; align-items:center; justify-content:space-between; gap:7px; border-top:1px solid #edf2f7; padding-top:10px; margin-top:10px; }
.yt-calendar-footer button { min-height:32px; padding:5px 10px; font-size:12px; }
.yt-calendar-footer .yt-calendar-apply { background:var(--calendar-blue); color:white; }
.yt-calendar-footer .yt-calendar-apply:hover { background:#294fac; color:white; }
.yt-calendar-time { display:flex; align-items:center; justify-content:space-between; gap:10px; padding-top:10px; margin-top:10px; border-top:1px solid #edf2f7; font-size:12px; color:#6f8093; }
.yt-calendar-clock { display:flex; align-items:center; gap:5px; }
.yt-calendar-time input[type=number] { width:52px; height:34px; padding:5px 6px; border:1px solid #dbe5ef; border-radius:7px; background:#fbfdff; color:#203a53; font-size:14px; }
.yt-calendar-time label { display:flex; align-items:center; gap:5px; margin:0; }
.yt-calendar-status { margin:8px 0 0; font-size:12px; color:#b44d55; }
@media(prefers-reduced-motion:reduce) { .yt-calendar,.yt-calendar button { transition:none!important; } }
