.v2-date-control { position:relative; display:inline-grid; min-width:0; width:100%; vertical-align:middle; }
.v2-date-control > .v2-date-source { position:absolute!important; inset:0!important; width:100%!important; height:100%!important; opacity:0!important; pointer-events:none!important; margin:0!important; }
.v2-date-control > input.v2-date-editor { width:100%; min-width:0; padding-right:38px!important; font-variant-numeric:tabular-nums; color:var(--ink)!important; }
.v2-date-calendar-button { position:absolute; right:2px; top:50%; transform:translateY(-50%); display:inline-flex; align-items:center; justify-content:center; width:32px; height:32px; padding:0; border:0; border-radius:var(--r-sm); background:transparent; color:var(--ink-2); cursor:pointer; }
.v2-date-calendar-button .icon { font-size:17px; }
.v2-date-calendar-button:hover { background:var(--surface-2); color:var(--accent); }
.v2-date-calendar-button:disabled { cursor:default; opacity:.4; }
.v2-date-calendar-button:focus-visible,.v2-calendar-popup :focus-visible { outline:2px solid var(--accent); outline-offset:2px; }
.v2-calendar-popup { position:fixed; inset:auto; margin:0; box-sizing:border-box; z-index:18000; width:344px; max-width:calc(100vw - 16px); max-height:calc(100dvh - 16px); overflow:auto; padding:10px; background:var(--surface); color:var(--ink); border:1px solid var(--line); border-radius:var(--r-lg); box-shadow:0 12px 36px rgba(0,0,0,.22); font:13px/1.4 var(--font-sans); }
.v2-calendar-head { display:flex; align-items:center; gap:4px; margin-bottom:8px; }
.v2-calendar-head select,.v2-calendar-head input { height:32px; padding:3px 5px; min-width:0; background:var(--surface); color:var(--ink); border:1px solid var(--line); border-radius:var(--r-sm); font:inherit; }
.v2-calendar-head select { flex:1; width:85px; }
.v2-calendar-head input { width:64px; }
.v2-calendar-popup button { font:inherit; cursor:pointer; border:0; background:transparent; color:inherit; border-radius:var(--r-sm); }
.v2-calendar-head button { min-width:32px; height:32px; padding:0 5px; font-size:20px; }
.v2-calendar-popup button:hover { background:var(--surface-2); }
.v2-calendar-popup button:disabled { opacity:.3; cursor:default; }
.v2-calendar-grid { table-layout:fixed; width:100%; border-collapse:separate; border-spacing:2px; text-align:center; }
.v2-calendar-grid th { color:var(--ink-2); font-weight:500; font-size:11px; }
.v2-calendar-grid td { padding:0; }
.v2-calendar-grid button { width:100%; min-height:32px; padding:2px; font-variant-numeric:tabular-nums; }
.v2-calendar-week { border-right:1px solid var(--line); }
.v2-calendar-grid button.is-other-month { color:var(--ink-3); }
.v2-calendar-grid button.is-selected { background:var(--accent); color:var(--on-accent); font-weight:700; }
.v2-calendar-grid button.is-today { box-shadow:inset 0 0 0 1px var(--accent); font-weight:700; }
.v2-calendar-foot { display:flex; align-items:center; gap:6px; padding-top:8px; border-top:1px solid var(--line); margin-top:6px; }
.v2-calendar-foot button { min-height:32px; padding:4px 8px; color:var(--accent); }
.v2-calendar-hint { margin-left:auto; color:var(--ink-2); font-size:11px; }
.v2-calendar-help { color:var(--ink-2); margin:5px 0 0; font-size:10px; text-align:center; }
@media (pointer:coarse) { .v2-calendar-popup { width:360px; } .v2-date-calendar-button { width:40px; height:40px; } .v2-date-control > input.v2-date-editor { padding-right:44px!important; min-height:40px; } .v2-calendar-popup button,.v2-calendar-head select,.v2-calendar-head input { min-height:40px; } }
@media print { .v2-calendar-popup,.v2-date-calendar-button { display:none!important; } }
