/* Shared controls and visual tokens. All visible controls are drawn by the workbench. */
:root{--paper:#f7f7f5;--surface:#fffefa;--ink:#323137;--muted:#716c77;--line:#e6dde1;--accent:#990046;--accent-hover:#7e003a;--tint:#f8f1f4;--control-border:#d5c6cd;--positive:#21834a;--positive-soft:#edf8f1;--positive-border:#b9dfc6;--warning:#806200;--warning-fill:#fff8d1;--warning-soft:#fffbeb;--warning-border:#f1d86c;--warning-mark:#e5b900;--warning-hover:#fff2b8;--radius:8px;--serif:'Hiragino Mincho ProN','Songti SC','Noto Serif CJK SC',serif;color-scheme:light}
body{color:var(--ink);background:var(--paper);font-size:16px;line-height:1.65}button,input,select,textarea{font:inherit}button{border-radius:var(--radius);min-height:44px;transition:background .18s,border-color .18s,box-shadow .18s,transform .18s}button:hover{filter:none}button:disabled{cursor:default}button.primary{background:var(--accent);color:var(--surface)}button.primary:hover:not(:disabled){background:var(--accent-hover);box-shadow:0 4px 12px #7e003a14}.secondary,button.secondary{background:var(--surface);border:1px solid #d2d1d4;color:var(--ink)}.secondary:hover:not(:disabled){background:#ebeaec;border-color:#bcbabf}.text-button{border-radius:5px}a,button{touch-action:manipulation}:focus-visible{outline:2px solid var(--accent);outline-offset:4px}::selection{background:#e0d6db;color:#42333a}*{scrollbar-width:thin;scrollbar-color:#cab7c0 transparent}::-webkit-scrollbar{width:7px;height:7px}::-webkit-scrollbar-thumb{background:#cab7c0;border:2px solid var(--paper);border-radius:10px}
input:not([type=checkbox]):not([type=radio]):not([type=file]),textarea{border-radius:var(--radius)!important;background:var(--surface);color:var(--ink);transition:border-color .18s,box-shadow .18s}input::placeholder,textarea::placeholder{color:#877c92;opacity:1}input:focus,textarea:focus{border-color:var(--accent);box-shadow:0 0 0 3px #9900460b}input[aria-invalid=true],textarea[aria-invalid=true]{border-color:var(--accent)!important}input[type=search]{appearance:none}input[type=search]::-webkit-search-cancel-button{appearance:none;width:15px;height:15px;background:linear-gradient(45deg,transparent 45%,#716c77 45%,#716c77 55%,transparent 55%),linear-gradient(-45deg,transparent 45%,#716c77 45%,#716c77 55%,transparent 55%);cursor:pointer}input[type=number]::-webkit-inner-spin-button{appearance:none}
input[type=checkbox],input[type=radio]{appearance:none;-webkit-appearance:none;width:19px;height:19px;min-width:19px;flex-shrink:0;display:inline-grid;place-content:center;margin:0;border:1px solid #bca9b2;background:var(--surface);vertical-align:middle;cursor:pointer;transition:background .15s,border-color .15s,box-shadow .15s}input[type=checkbox]{border-radius:5px}input[type=radio]{border-radius:50%}input[type=radio]:checked{border-color:var(--accent);box-shadow:inset 0 0 0 4px var(--surface);background:var(--accent)}input[type=checkbox]:checked{background:var(--accent);border-color:var(--accent)}input[type=checkbox]:checked:after{content:'';width:8px;height:5px;border-left:2px solid white;border-bottom:2px solid white;transform:translateY(-1px) rotate(-45deg)}input[type=checkbox]:disabled,input[type=radio]:disabled{opacity:.5;cursor:default}input[type=checkbox]:hover:not(:disabled),input[type=radio]:hover:not(:disabled){border-color:var(--accent)}
.custom-select{display:block;position:relative;min-width:0;width:100%;margin-top:9px;text-align:left}.custom-select>select.select-native{position:absolute!important;inset:0!important;display:block!important;width:100%!important;height:100%!important;margin:0!important;opacity:0;pointer-events:none;border:0!important}.select-trigger{display:flex;align-items:center;justify-content:space-between;gap:15px;width:100%;min-height:48px;padding:10px 13px;border:1px solid #d5c6cd;border-radius:var(--radius);background:var(--surface);color:var(--ink);font-size:16px;text-align:left;font-weight:400;line-height:1.65}.select-trigger>span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.select-trigger>svg{flex-shrink:0;width:18px;height:18px;color:#726e77;transition:transform .18s}.select-trigger[aria-expanded=true]>svg{transform:rotate(180deg)}.select-trigger:hover:not(:disabled){background:#f8f8f8;border-color:#b0adb3}.select-trigger[aria-expanded=true]{border-color:var(--accent);box-shadow:0 0 0 3px #9900460b}.select-trigger.is-placeholder{color:#877c92}.select-trigger[aria-invalid=true]{border-color:var(--accent);background:#f9f9f8}.select-trigger:disabled{opacity:.55;cursor:default}.control-popover{position:fixed;z-index:100;padding:6px;overflow:auto;overscroll-behavior:contain;border:1px solid #d6d4d7;border-radius:10px;background:var(--surface);box-shadow:0 12px 36px #2d23281a,0 2px 5px #2d232808;animation:control-in .13s ease}.select-option{position:relative;display:flex;align-items:center;width:100%;min-height:44px;padding:10px 35px 10px 12px;border:0;border-radius:5px;background:transparent;color:var(--ink);font-size:15px;text-align:left;font-weight:400;line-height:1.6;overflow-wrap:anywhere}.select-option:hover:not(:disabled),.select-option:focus-visible{background:#ececed;outline:0}.select-option[aria-selected=true]{color:var(--accent);background:var(--tint)}.select-option[aria-selected=true]:after{content:'✓';position:absolute;right:13px;font-size:16px}.select-option:disabled{opacity:.4}
.date-control{position:relative;display:flex;align-items:center;min-width:0;margin-top:9px}.date-control>input{width:100%;height:48px;margin:0!important;border:1px solid #d5c6cd;padding:0 48px 0 13px!important;outline:0}.date-trigger{position:absolute;right:4px;top:3px;display:grid;place-content:center;width:42px;min-height:42px;padding:0;border:0;background:transparent;color:#726e77}.date-trigger:hover:not(:disabled){background:#ebeaec;color:var(--accent)}.date-panel{padding:16px;max-height:460px}.calendar-heading{display:flex;align-items:center;justify-content:space-between;margin-bottom:15px;gap:8px}.calendar-heading>button{padding:0;width:36px;min-height:36px;border:0;background:#edecee;color:var(--ink);font-size:24px}.calendar-caption{display:flex;align-items:center;justify-content:center;font-size:15px;gap:3px}.calendar-caption input{width:58px;min-width:0;height:34px;padding:0 3px;text-align:center;border:1px solid var(--line);font-size:15px}.calendar-days{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:3px}.calendar-days>button,.calendar-months>button{padding:0;min-height:34px;border:0;background:transparent;color:var(--ink);font-size:14px;border-radius:5px}.calendar-days>button:hover,.calendar-months>button:hover{background:#ebeaec}.calendar-days>button.is-selected,.calendar-months>button.is-selected{background:var(--accent);color:white}.calendar-weekday{font-size:12px;text-align:center;color:var(--muted);padding-bottom:9px}.calendar-months{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.calendar-months>button{min-height:46px}.calendar-footer{display:flex;justify-content:space-between;margin-top:14px;padding-top:9px;border-top:1px solid var(--line)}.calendar-footer>button{background:transparent;color:var(--accent);padding:0 8px;font-size:14px;min-height:34px}
dialog{border:1px solid #d2d1d4;border-radius:12px;padding:36px;width:min(480px,calc(100vw - 40px));max-height:calc(100svh - 48px);overflow:auto;background:var(--surface);color:var(--ink);box-shadow:0 20px 80px #1f1c2326}dialog[open]{animation:dialog-in .18s ease}dialog::backdrop{background:#221e2666;backdrop-filter:blur(5px)}dialog h2{font-size:25px;line-height:1.5}dialog p{font-size:16px;line-height:1.9;color:var(--muted)}dialog .eyebrow{font-size:12px;color:var(--accent)}dialog .action-row{display:flex;justify-content:flex-end;gap:12px;margin-top:28px}dialog .action-row button{min-width:92px}.confirmation-dialog .action-row .primary{background:var(--accent);color:white}
.execution-log summary{display:flex;align-items:center;justify-content:space-between;list-style:none;gap:16px}.execution-log summary::-webkit-details-marker{display:none}.execution-log summary:after{content:'+';font-size:22px;line-height:1;font-weight:300;color:var(--accent)}.execution-log[open] summary:after{content:'−'}.eyebrow{letter-spacing:1.8px;font-weight:500}.error{font-size:15px;line-height:1.9}.error:not([hidden]){padding-left:12px;border-left:2px solid var(--accent)}
@keyframes control-in{from{opacity:0;transform:translateY(-3px)}to{opacity:1;transform:none}}@keyframes dialog-in{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
@media(max-width:720px){dialog{padding:26px}.select-trigger{font-size:16px;min-height:48px}.date-control>input{font-size:16px}.control-popover{max-width:calc(100vw - 32px)}}
@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}html{scroll-behavior:auto!important}}

/* Keep resting surfaces quiet; make pointer and keyboard states unmistakable. */
.secondary,button.secondary{border-color:#d5c6cd;font-weight:400}
.select-option[aria-selected=true]{background:#f3eef0;color:#80053e;font-weight:500}
.select-option:focus-visible{background:#eedfe6;outline:2px solid #988ca4;outline-offset:-2px}
input:focus,textarea:focus,.select-trigger[aria-expanded=true]{box-shadow:0 0 0 3px #99004617}
@media(hover:hover){
  .secondary:hover:not(:disabled),button.secondary:hover:not(:disabled){background:#eee8eb;border-color:#a398ae;color:#641c3d}
  .text-button:hover:not(:disabled){background:#efe0e7;color:#641c3d;box-shadow:inset 0 0 0 1px #d7c9cf}
  .select-trigger:hover:not(:disabled){background:#f1ebee;border-color:#a69cb1}
  .select-option:hover:not(:disabled){background:#eedfe6;color:#641c3d}
  .select-option[aria-selected=true]:hover:not(:disabled){background:#e8d4dd}
  .calendar-heading>button:hover:not(:disabled),.calendar-days>button:hover:not(:disabled),.calendar-months>button:hover:not(:disabled){background:#eedfe6;color:#641c3d;box-shadow:inset 0 0 0 1px #cbb9c1}
  .calendar-days>button.is-selected:hover,.calendar-months>button.is-selected:hover{background:var(--accent-hover);color:#fff}
  .calendar-footer>button:hover:not(:disabled),.date-trigger:hover:not(:disabled),.password-control>button:hover:not(:disabled){background:#ede7ea;color:#641c3d}
  input:not([type=radio]):not([type=checkbox]):not([type=file]):not(:disabled):not([readonly]):hover,textarea:not(:disabled):not([readonly]):hover{border-color:#a69cb1!important}
}
