body{margin:0;font-family:system-ui;background:#111827;color:#e5e7eb}header{display:flex;justify-content:space-between;padding:1rem 5%;background:#0b1220}a{color:#93c5fd}nav a{margin-left:1rem}main{width:min(1050px,90%);margin:2rem auto}.card{background:#1f2937;border:1px solid #374151;border-radius:12px;padding:1.2rem;margin-bottom:1rem}.narrow{max-width:420px;margin:4rem auto}.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:1rem}.row,.actions{display:flex;gap:.7rem;align-items:center;justify-content:space-between}.actions{justify-content:flex-start}label{display:block;margin:.8rem 0}.inline{display:flex;gap:.5rem;align-items:center}input,select,button,.button{box-sizing:border-box;padding:.65rem;border-radius:7px;border:1px solid #4b5563}input,select{width:100%;margin-top:.3rem;background:#111827;color:#fff}.inline input{width:auto;margin:0}button,.button{background:#2563eb;color:#fff;text-decoration:none;cursor:pointer}.danger{background:#991b1b}.muted{color:#9ca3af}.hidden{display:none}.three{display:grid;grid-template-columns:repeat(3,1fr);gap:.7rem}.flash{padding:.8rem;background:#374151;border-radius:8px}
.tabs{display:flex;gap:.5rem;border-bottom:1px solid #374151;margin-bottom:1.5rem}.tabs a{padding:.8rem 1rem;text-decoration:none}.tabs a.active{border-bottom:3px solid #60a5fa;color:white}.two{display:grid;grid-template-columns:1fr 1fr;gap:2rem}.check{display:flex;gap:.6rem;align-items:center;padding:.6rem;border:1px solid #374151;border-radius:8px}.check input{width:auto;margin:0}.check small{display:block;color:#9ca3af}.pill{display:inline-block;background:#374151;padding:.2rem .5rem;border-radius:999px}.secondary{background:#374151}@media(max-width:700px){.two{grid-template-columns:1fr}}


.link-card{transition:background-color .2s,border-color .2s}
.link-paused{background:#332b1f;border-color:#8b6b2f}
.link-title{display:flex;align-items:center;justify-content:space-between;gap:1rem}
.link-title h2{margin-right:auto}
.pause-toggle{display:inline-flex;align-items:center;gap:.4rem;background:#374151}
.pause-toggle.is-paused{background:#7c5b20}
.checkbox-mark{display:inline-flex;width:1.05rem;height:1.05rem;align-items:center;justify-content:center;border:1px solid #d1d5db;border-radius:3px;font-size:.75rem}
.mini-edit{display:inline-flex;align-items:center;justify-content:center;width:1.35rem;height:1.35rem;margin-left:.25rem;border-radius:4px;background:#4b5563;color:#fff;text-decoration:none;font-size:.8rem;vertical-align:middle}
.mini-edit:hover{background:#6b7280}


.link-card[aria-disabled="true"]{background:#2b2d31;border-color:#555b66;color:#8f96a3}
.link-card[aria-disabled="true"] code,.link-card[aria-disabled="true"] .muted,.link-card[aria-disabled="true"] .pill{color:#777e89;background:#35383e}
.link-card[aria-disabled="true"] .mini-edit{opacity:.55}
.link-card[aria-disabled="true"] button:disabled{background:#4b4f57;color:#7f858e;border-color:#555b66;cursor:not-allowed}
.all-links-paused .link-card{background:#25272b;border-color:#494d55;color:#777e89}
.global-paused-note{padding:.75rem 1rem;margin-bottom:1rem;border:1px solid #6b7280;border-radius:8px;background:#2b2d31;color:#c2c7cf}
.pause-all.is-paused{background:#7c5b20}
.label-row{display:flex;gap:.5rem;align-items:end}
.label-row input{flex:1}
.proposal-button{white-space:nowrap;background:#374151;margin-top:.3rem}
@media(max-width:600px){.label-row{align-items:stretch;flex-direction:column}.proposal-button{white-space:normal}}


.weekday-picker{margin:.9rem 0;padding:.8rem;border:1px solid #4b5563;border-radius:8px}
.weekday-actions,.weekday-options{display:flex;gap:.45rem;flex-wrap:wrap;margin-top:.5rem}
.weekday{display:inline-flex;align-items:center;gap:.3rem;padding:.35rem .55rem;border:1px solid #4b5563;border-radius:6px}
.weekday input{width:auto}


.cron-import-row{display:flex;gap:.5rem;align-items:center}
.cron-import-row input{flex:1;font-family:monospace}
.cron-import-row button{white-space:nowrap}
.cron-error{color:#fca5a5}
@media(max-width:600px){.cron-import-row{flex-direction:column;align-items:stretch}}


.table-wrap{width:100%;overflow-x:auto;border:1px solid #3f4652;border-radius:9px}
.trigger-table{width:100%;border-collapse:collapse;min-width:720px}
.trigger-table th,.trigger-table td{padding:.75rem;text-align:left;vertical-align:middle;border-bottom:1px solid #3f4652}
.trigger-table th{background:#252a33;white-space:nowrap}
.trigger-table tbody tr:last-child td{border-bottom:0}
.trigger-table code{font-size:.85em;overflow-wrap:anywhere}
.table-actions{flex-wrap:nowrap;white-space:nowrap}
.table-actions form{margin:0}


.timeline-controls{display:flex;gap:.75rem;align-items:end;flex-wrap:wrap;margin-bottom:1rem}
.timeline-controls label{min-width:220px;flex:1}
.timeline-wrap{min-width:820px;margin-top:1rem}
.timeline-hours{position:relative;height:28px;margin-left:92px;border-bottom:1px solid #4b5563}
.timeline-hours span{position:absolute;transform:translateX(-50%);font-size:.72rem;color:#9ca3af;white-space:nowrap}
.timeline-row{display:grid;grid-template-columns:92px 1fr;min-height:54px;border-bottom:1px solid #343a45}
.timeline-day{padding:.9rem .5rem .5rem 0;font-weight:600}
.timeline-track{position:relative;margin:.5rem 0;background:repeating-linear-gradient(to right,transparent 0,transparent calc(4.1667% - 1px),#3f4652 calc(4.1667% - 1px),#3f4652 4.1667%);border-radius:5px}
.timeline-bar{position:absolute;top:7px;height:30px;min-width:2px;border-radius:5px;background:#4f7d5b;overflow:hidden}
.timeline-bar span{display:block;padding:.38rem .45rem;font-size:.72rem;white-space:nowrap;color:#fff}
@media(max-width:900px){.timeline-wrap{min-width:760px}.timeline-controls{align-items:stretch}}


.trigger-table tbody tr.unused-trigger td{background:rgba(180,120,35,.14)}
.unused-badge{display:inline-block;margin-left:.45rem;padding:.12rem .42rem;border:1px solid #9a6b27;border-radius:999px;background:#5b421f;color:#f5d99a;font-size:.72rem;font-weight:700;vertical-align:middle}


.link-save-overlay{position:sticky;top:.65rem;z-index:30;display:flex;justify-content:flex-end;pointer-events:none;margin:0 0 .75rem}
.link-save-overlay button{pointer-events:auto;box-shadow:0 5px 18px rgba(0,0,0,.32)}
.timeline-track{overflow:visible}
.timeline-series-1{background:#4f7d5b}
.timeline-series-2{background:#49729a}
.timeline-bar.timeline-overlap-top{opacity:.62;z-index:3}


.timeline-unmatched{position:absolute;top:3px;bottom:3px;width:3px;z-index:8;background:#f59e0b;border-radius:2px;transform:translateX(-1px)}
.timeline-unmatched span{position:absolute;top:2px;left:6px;padding:.08rem .28rem;border-radius:4px;background:#7c4a03;color:#fff;font-size:.68rem;white-space:nowrap}


.usage-badge{display:inline-block;margin-left:.45rem;padding:.12rem .42rem;border:1px solid #55718f;border-radius:999px;background:#263c52;color:#cfe5fa;font-size:.72rem;font-weight:700;vertical-align:middle}
.timeline-zoom-controls{display:flex;align-items:center;gap:.45rem;flex-wrap:wrap;margin:.75rem 0}
.timeline-zoom-controls button{min-width:42px}
.timeline-viewport{width:100%;overflow-x:auto;overflow-y:visible;cursor:grab;touch-action:pan-y;border-radius:7px}
.timeline-viewport.dragging{cursor:grabbing;user-select:none}
.timeline-viewport .timeline-wrap{width:100%;min-width:820px;transform-origin:left top}


.timeline-legend{display:inline-flex;align-items:center;gap:.3rem;color:#9ca3af;font-size:.82rem}
.timeline-legend i{display:inline-block;width:15px;height:9px;border-radius:3px}
.legend-green{background:#4f7d5b}.legend-blue{background:#49729a}


.timeline-controls select[multiple]{min-height:8.5rem}
.timeline-presets{display:flex;gap:.65rem;align-items:end;flex-wrap:wrap;margin:.75rem 0 1rem}
.timeline-presets form{display:flex;gap:.45rem;align-items:end;flex-wrap:wrap;margin:0}
.timeline-presets label{margin:0}
.timeline-preset-save input[name="preset_label"]{min-width:180px}

.log-table{width:100%;border-collapse:collapse}.log-table th,.log-table td{padding:.55rem .65rem;text-align:left;border-bottom:1px solid #3b414b;vertical-align:top}.log-table td:first-child{white-space:nowrap;font-family:monospace;font-size:.82rem}.log-status{font-weight:700}.log-error .log-status{color:#f3a6a6}.log-ok .log-status{color:#a8d5b1}


.timeline-presets-top{margin:.25rem 0 1rem}
.preset-select-label{display:flex;align-items:center;gap:.45rem}
.preset-select-label span{white-space:nowrap;font-weight:600}
.timeline-presets-top .timeline-preset-save{align-items:center}

.timeline-presets-top{display:flex;align-items:center;gap:.55rem;flex-wrap:wrap}
.timeline-presets-top form{display:flex;align-items:center;gap:.45rem;flex-wrap:nowrap}
.timeline-presets-top .timeline-preset-save{display:flex;flex-direction:row;align-items:center;gap:.45rem}
.timeline-presets-top .timeline-preset-save input[name="preset_label"]{display:inline-block;width:190px;min-width:190px;margin:0}
.timeline-presets-top .timeline-preset-save button{display:inline-block;margin:0;white-space:nowrap}

.time-hms{display:flex;gap:.55rem;align-items:end;flex-wrap:wrap}.time-hms label{flex:1;min-width:95px;margin:0}.time-hms input{width:100%;box-sizing:border-box}


.trigger-group{border:1px solid #3b414b;border-radius:.5rem;margin:.45rem 0;overflow:hidden}
.trigger-group summary{cursor:pointer;padding:.65rem .75rem;font-weight:700;user-select:none}
.trigger-group summary:hover{background:rgba(255,255,255,.04)}
.trigger-group-items{padding:.1rem .6rem .55rem}
.group-count{font-size:.78rem;font-weight:600;opacity:.65;margin-left:.35rem}


.trigger-manage-group{margin:.65rem 0;border:1px solid #3b414b;border-radius:.55rem;overflow:hidden}
.trigger-manage-group>summary{cursor:pointer;padding:.75rem .9rem;font-weight:750;user-select:none}
.trigger-manage-group>summary:hover{background:rgba(255,255,255,.04)}
.trigger-manage-group>.table-wrap{margin:0;border-top:1px solid #3b414b}


.action-manage-group,.action-select-group{margin:.65rem 0;border:1px solid #3b414b;border-radius:.55rem;overflow:hidden}
.action-manage-group>summary,.action-select-group>summary{cursor:pointer;padding:.75rem .9rem;font-weight:750;user-select:none}
.action-manage-group>summary:hover,.action-select-group>summary:hover{background:rgba(255,255,255,.04)}
.action-manage-group>.action-group-items{padding:.65rem}
.action-select-group>.action-group-select-items{padding:.1rem .6rem .55rem}
.duplicate-badge{display:inline-block;margin-left:.35rem;padding:.12rem .4rem;border-radius:999px;background:#7c2d12;color:#ffedd5;font-size:.72rem;font-weight:750}.action-manage-group>.table-wrap{margin:0;border-top:1px solid #3b414b}.action-table td:nth-child(3){max-width:34rem;overflow-wrap:anywhere}


.link-table td:nth-child(2),.link-table td:nth-child(3){min-width:12rem}
.link-table .pill{display:inline-flex;margin:.15rem .1rem .15rem 0}
.link-table tr.link-paused{opacity:.55}

.link-trigger-group{margin:.65rem 0;border:1px solid #3b414b;border-radius:.55rem;overflow:hidden}
.link-trigger-group>summary{cursor:pointer;padding:.75rem .9rem;font-weight:750;user-select:none}
.link-trigger-group>summary:hover{background:rgba(255,255,255,.04)}
.link-trigger-group>.table-wrap{margin:0;border-top:1px solid #3b414b}
.section-countdown{margin-left:.6rem;font-size:.82rem;font-weight:600;opacity:.8}
.pill.next-trigger-pill{background:#2563eb;color:#fff;border-color:#3b82f6}
.pill.next-trigger-pill .mini-edit{color:#fff}
.keyboard-key-tools{display:flex;gap:.5rem;margin:.45rem 0}
#keyboard-key{pointer-events:auto!important;user-select:text!important;cursor:text!important}

.hostname-banner{
 width:100%;text-align:center;font-size:clamp(2rem,5vw,4rem);
 font-weight:800;line-height:1.05;letter-spacing:.04em;
 padding:.45rem .75rem .65rem;box-sizing:border-box;
}


.action-editor-dialog{width:min(820px,90vw);height:min(780px,88vh);padding:0;border:0;border-radius:16px;overflow:hidden;background:#1f2b3a;box-shadow:0 24px 80px rgba(0,0,0,.55)}
.action-editor-dialog::backdrop{background:rgba(0,0,0,.38)}
.action-editor-dialog iframe{width:100%;height:100%;border:0;display:block;border-radius:16px;background:#1f2b3a}
.modal-close{position:absolute;right:-12px;top:-12px;z-index:5;width:38px;height:38px;border-radius:50%;font-size:1.45rem;line-height:1;padding:0;display:grid;place-items:center;box-shadow:0 5px 18px rgba(0,0,0,.35)}
.action-editor-buttons{margin-top:1rem}

.modal-page{background:#1f2b3a;min-height:100vh}.modal-page>.hostname-banner,.modal-page>header{display:none}.modal-page>main{max-width:none;margin:0;padding:1rem}.modal-page .card{margin:0;box-shadow:none}.run-feedback{width:100%;font-family:ui-monospace,SFMono-Regular,Consolas,monospace;white-space:pre-wrap}


.modal-page main{background:#1f2b3a;border-radius:16px;min-height:100%;box-sizing:border-box}
.modal-page form{padding-bottom:1.25rem}
.modal-page textarea{min-height:90px}
.action-editor-dialog[open]{animation:actionModalIn .12s ease-out}
@keyframes actionModalIn{from{opacity:0;transform:translateY(8px) scale(.985)}to{opacity:1;transform:none}}


.modal-page,.modal-page main,.modal-page form{background:#1f2b3a!important}
.modal-page textarea{display:block;width:100%!important;max-width:100%;box-sizing:border-box;background:#0f1724;color:inherit;border:1px solid #526074;border-radius:7px;padding:.7rem .75rem;font:inherit;resize:vertical}
.expected-response-help{display:block;margin:-.2rem 0 .8rem}
.response-action-field{display:block;padding:.55rem;border-radius:8px;transition:background .15s,border-color .15s}
.response-match-hit{background:rgba(30,140,70,.30);outline:2px solid rgba(55,200,100,.75)}
.response-no-match-hit{background:rgba(180,35,35,.30);outline:2px solid rgba(235,70,70,.78)}

/* Item transfer / export-import */
.transfer-toolbar{align-items:center;justify-content:space-between;gap:.65rem;flex-wrap:wrap}
.select-col{width:2.35rem;text-align:center!important}
.select-col input,.item-select input,.select-all-row input{width:auto;margin:0}
.select-all-row{margin:.45rem 0 .7rem;color:#cbd5e1}
.item-select{display:inline-flex;align-items:center;gap:.4rem;margin:0 0 .4rem;font-size:.86rem;color:#cbd5e1}
.selectable-card{position:relative}
.transfer-dialog{width:min(850px,92vw);padding:0;border:0;border-radius:14px;background:#1f2b3a;color:inherit;box-shadow:0 24px 80px rgba(0,0,0,.55)}
.transfer-dialog::backdrop{background:rgba(0,0,0,.45)}
.transfer-panel{padding:1rem;background:#1f2b3a}
.transfer-dialog-head{position:relative;display:flex;align-items:center;justify-content:space-between;gap:1rem}
.transfer-dialog-head h2{margin:.1rem 0 .6rem}
.transfer-dialog .modal-close{position:static;flex:0 0 auto}
#transfer-code{width:100%;min-height:330px;box-sizing:border-box;font-family:ui-monospace,SFMono-Regular,Consolas,monospace;white-space:pre;tab-size:2}
#transfer-status{min-height:1.4rem;margin:.55rem 0;overflow-wrap:anywhere}

.timer-adjust-form{margin:.8rem 0 1rem;padding:.75rem;border:1px solid #3d4b5f;border-radius:10px;background:rgba(0,0,0,.08)}
.timer-adjust-fields{display:flex;gap:.55rem;align-items:end;flex-wrap:wrap}
.timer-adjust-fields label{margin:0;min-width:84px;flex:0 1 110px}
.timer-adjust-fields input{width:100%;box-sizing:border-box}
.timer-adjust-buttons{display:flex;gap:.45rem;align-items:center;padding-bottom:1px}
.timer-adjust-feedback{min-height:1.2em;margin-top:.45rem}
.public-action-dashboard{max-width:1100px;margin:0 auto}
.dashboard-action-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:1rem;margin:1.25rem 0}
.dashboard-action-button{min-height:82px;font-size:1.15rem;font-weight:600;padding:1rem}
#dashboard-action-feedback{min-height:1.5em;margin-top:1rem}

.public-dashboard-only{margin:0;background:#0f1724}
.public-dashboard-only .public-dashboard-main{max-width:1200px;margin:0 auto;padding:1.25rem}
.public-dashboard-only .dashboard-action-grid{margin:0 0 1rem}
.dashboard-timer-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:1rem}
.dashboard-timer-card{background:#1f2b3a;border:1px solid #3d4b5f;border-radius:12px;padding:1rem}
.dashboard-timer-name{font-size:1.15rem;font-weight:700;margin-bottom:.5rem}
.dashboard-timer-counter{font-variant-numeric:tabular-nums;font-size:2rem;font-weight:700;letter-spacing:.04em}
.dashboard-timer-status{margin:.25rem 0 .8rem;color:#aebbd0}
.dashboard-timer-adjust{margin:0}

.variable-current{font-variant-numeric:tabular-nums}

.dashboard-select-actions{margin:.45rem 0 .2rem}

.dashboard-variable-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:1rem;margin:0 0 1rem}
.dashboard-variable-card{background:#1f2b3a;border:1px solid #3d4b5f;border-radius:12px;padding:1rem}
.dashboard-variable-name{font-size:1rem;font-weight:600;margin-bottom:.45rem}
.dashboard-variable-value{font-size:1.7rem;font-weight:700;font-variant-numeric:tabular-nums;overflow-wrap:anywhere}
.dashboard-variable-boolean{letter-spacing:.06em}
