/* Our Night > Orders mode, Write your own and the bucket list. Uses the shared tokens in app.css.
   Who leads has its own colour, always with the name in words next to it: her pink, him lilac, both of you gold. */
.btn:disabled{opacity:.45;cursor:default;filter:none}
.or-setup{display:flex;flex-direction:column;gap:16px;padding-top:6px}
.or-setup .title{margin:6px 0 0}
.or-setup .lede{margin:0}
.or-resume{display:flex;flex-direction:column;gap:8px;align-items:flex-start}
.or-resume span{color:var(--muted);font-size:14.5px}
.or-goals{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.or-goal{display:flex;flex-direction:column;gap:4px;text-align:left;background:var(--surface);border:1px solid var(--line);border-radius:18px;padding:14px;cursor:pointer;min-height:44px}
.or-goal b{font-family:var(--display);font-weight:500;font-size:15px;line-height:1.25}
.or-goal small{color:var(--muted);font-size:13px;line-height:1.35}
.or-goal:hover{border-color:var(--rose)}
.or-goal.on{border-color:var(--rose);background:linear-gradient(135deg,#3A1430,#1D111D 75%);box-shadow:inset 0 0 0 1px var(--rose)}
.or-goal.on b::after{content:" ✓";color:var(--rose)}
.or-q{display:flex;flex-direction:column;gap:8px}
.or-q>span{color:var(--muted);font-size:14.5px}
.seg{display:flex;flex-wrap:wrap;gap:6px}
.seg button{flex:1 1 auto;min-height:44px;border:1px solid var(--line);background:var(--surface);border-radius:999px;padding:8px 14px;cursor:pointer;font-family:var(--mono);font-size:12.5px}
.seg button.on{background:var(--rose);border-color:var(--rose);color:#1A0610}
.or-sum{margin:0;text-align:center}
.or-more{background:var(--surface);border:1px solid var(--line);border-radius:18px;padding:12px 16px}
.or-more summary{cursor:pointer;font-family:var(--mono);font-size:13px;color:var(--gold);min-height:28px}
.or-opts{display:flex;flex-direction:column;gap:14px;margin-top:12px}
/* a label in a column layout keeps its natural height (label.f grows to 160px in a row) */
.or-setup label.f,.or-opts>label.f,.bk-view>label.f,.bk-form>label.f,.wy-form>label.f,.wy-share>label.f,.wy-step>label.f{flex:0 0 auto}
.or-setup select,.or-opts select,.wy-view select,.bk-view select{background:var(--surface-2);border:1px solid var(--line);color:var(--fg);border-radius:12px;padding:12px;font:inherit;font-size:16px;width:100%}
.or-cats{display:flex;flex-wrap:wrap;gap:6px}
.or-cat,.or-tag{min-height:40px;border:1px solid var(--line);background:var(--surface-2);border-radius:999px;padding:6px 12px;cursor:pointer;font-size:13.5px;display:inline-flex;gap:6px;align-items:center}
.or-cat small{font-family:var(--mono);font-size:11px}
.or-cat.more{border-color:var(--ok);color:#9FF0CF}
.or-cat.out{opacity:.5;text-decoration:line-through}
.or-tag.on{border-color:var(--gold);color:var(--gold)}
.or-links{display:flex;flex-wrap:wrap;gap:8px;justify-content:center}
.or-foot{text-align:center;margin:0}
.or-bucket .eyebrow{margin:0}
.or-blist{list-style:none;padding:0;margin:0;display:grid;gap:8px}
.or-blist label{display:flex;gap:10px;align-items:flex-start;cursor:pointer;min-height:32px}
.or-blist input{width:22px;height:22px;accent-color:var(--rose);flex:0 0 22px;margin-top:1px}

/* the evening */
.or-play{--who:var(--gold);display:flex;flex-direction:column;gap:14px;padding-top:8px}
.or-play[data-who="her"]{--who:var(--lv2)}
.or-play[data-who="him"]{--who:var(--lv1)}
.or-play[data-who="phone"]{--who:var(--muted)}
.or-top{display:flex;justify-content:space-between;gap:10px;font-family:var(--mono);font-size:12px;letter-spacing:.08em;text-transform:uppercase;color:var(--gold)}
.or-bar{height:6px;border-radius:999px;background:var(--line);overflow:hidden}
.or-bar span{display:block;height:100%;background:var(--rose);border-radius:999px;transition:width .4s}
.or-who{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px 10px}
.or-who b{font-family:var(--display);font-weight:700;font-size:clamp(22px,6.5vw,28px);color:var(--who)}
.or-who span:not(.or-dot){color:var(--muted);font-size:15px}
.or-dot{width:12px;height:12px;border-radius:50%;background:var(--who);align-self:center}
.or-card{background:var(--surface);border:1px solid var(--line);border-left:5px solid var(--who);border-radius:22px;padding:22px 20px;min-height:150px;display:flex;align-items:center}
.or-say{font-family:var(--display);font-weight:500;font-size:clamp(24px,7vw,32px);line-height:1.28;margin:0;text-wrap:balance}
.or-say::before{content:"“";color:var(--who)}.or-say::after{content:"”";color:var(--who)}
.or-do{font-size:clamp(20px,5.6vw,24px);line-height:1.4;margin:0;font-weight:600;text-wrap:balance}
.or-clock{font-family:var(--mono);font-size:clamp(52px,16vw,72px);text-align:center;font-variant-numeric:tabular-nums;color:var(--cream);line-height:1;letter-spacing:.02em}
.or-clock.up{color:var(--rose)}
.or-clock.paused{opacity:.45}
.or-grace{margin:0;text-align:center;color:var(--gold);font-size:15px}
.or-ctrl{display:flex;flex-direction:column;gap:10px;align-items:center}
.or-row{justify-content:center}
.or-title{font-family:var(--display);font-weight:500;font-size:22px;line-height:1.25;margin:0;text-wrap:balance}
.or-choices{display:grid;gap:12px}
.or-choice{display:flex;flex-direction:column;gap:4px;text-align:left;background:var(--surface);border:1px solid var(--line);border-left:5px solid var(--who);border-radius:20px;padding:18px;cursor:pointer;min-height:64px}
.or-choice b{font-family:var(--display);font-weight:500;font-size:19px}
.or-choice small{color:var(--muted);font-size:13.5px}
.or-choice:hover{border-color:var(--rose)}
.or-end{gap:14px}

/* Write your own */
.wy-view{display:flex;flex-direction:column;gap:14px;padding-top:6px}
.wy-view .title{margin:6px 0 0}
.wy-tabs{display:flex;gap:6px}
.wy-tabs button{flex:1;min-height:44px;border:1px solid var(--line);background:var(--surface);border-radius:999px;cursor:pointer;font-family:var(--mono);font-size:12.5px}
.wy-tabs button.on{background:var(--rose);border-color:var(--rose);color:#1A0610}
.wy-list{list-style:none;margin:0;padding:0;display:grid;gap:10px}
.wy-item{background:var(--surface);border:1px solid var(--line);border-radius:18px;padding:14px;display:flex;flex-direction:column;gap:8px}
.wy-item b{font-family:var(--display);font-weight:500;font-size:16px}
.wy-item .small{margin:0}
.wy-item .row{gap:6px}
.wy-item .btn{padding:9px 14px;font-size:12.5px}
.wy-badge{font-family:var(--mono);font-size:11px;color:var(--gold);border:1px solid var(--gold);border-radius:999px;padding:2px 8px;margin-left:6px;vertical-align:middle}
.wy-form,.bk-form{display:flex;flex-direction:column;gap:12px}
.wy-form textarea,.bk-form textarea,.wy-share textarea{background:var(--surface-2);border:1px solid var(--line);color:var(--fg);border-radius:12px;padding:12px;font:inherit;font-size:16px;width:100%;min-height:84px;resize:vertical}
.wy-form input[type=number],.bk-form input[type=number],.bk-form input[type=date]{background:var(--surface-2);border:1px solid var(--line);color:var(--fg);border-radius:12px;padding:12px;font:inherit;font-size:16px;width:100%}
.wy-step{background:var(--surface);border:1px solid var(--line);border-left:5px solid var(--who,var(--gold));border-radius:18px;padding:12px;display:flex;flex-direction:column;gap:10px}
.wy-step[data-who="her"]{--who:var(--lv2)}.wy-step[data-who="him"]{--who:var(--lv1)}
.wy-step .wy-sn{font-family:var(--mono);font-size:12px;color:var(--gold)}
.wy-step .row .btn{padding:8px 12px;font-size:12px;min-height:40px}
.wy-share textarea{min-height:160px;font-family:var(--mono);font-size:13px}
.wy-err{color:#FF8FA8;font-size:14px;margin:0}
.wy-ok{color:#9FF0CF;font-size:14px;margin:0}
.wy-preview{list-style:none;padding:0;margin:0;display:grid;gap:8px}
.wy-preview li{display:flex;flex-direction:column;gap:2px;background:var(--surface-2);border-radius:14px;padding:10px 12px}

/* bucket list */
.bk-view{display:flex;flex-direction:column;gap:14px;padding-top:6px}
.bk-view .title{margin:6px 0 0}
.bk-prog{display:flex;flex-direction:column;gap:8px}
.bk-prog .or-bar{height:10px}
.bk-prog .or-bar span{background:var(--ok)}
.bk-stats{display:flex;gap:8px;flex-wrap:wrap}
.bk-filters{display:flex;gap:6px;flex-wrap:wrap}
.bk-filters button{min-height:40px;border:1px solid var(--line);background:var(--surface);border-radius:999px;padding:6px 12px;cursor:pointer;font-family:var(--mono);font-size:12px}
.bk-filters button.on{background:var(--rose);border-color:var(--rose);color:#1A0610}
.bk-list{list-style:none;margin:0;padding:0;display:grid;gap:8px}
.bk-row{display:flex;gap:12px;align-items:center;background:var(--surface);border:1px solid var(--line);border-radius:16px;padding:10px 12px}
.bk-row.done{opacity:.8}
.bk-row.done .bk-t{text-decoration:line-through;text-decoration-color:var(--ok)}
.bk-row.no{opacity:.5}
.bk-check{width:40px;height:40px;flex:0 0 40px;border-radius:9px;border:2px solid var(--line);background:transparent;cursor:pointer;display:grid;place-items:center;color:#06261A;font-weight:700}
.bk-check.on{background:var(--ok);border-color:var(--ok)}
.bk-main{flex:1;min-width:0;background:none;border:0;text-align:left;cursor:pointer;padding:4px 0;display:flex;flex-direction:column;gap:2px}
.bk-t{font-weight:600;font-size:15.5px;line-height:1.3}
.bk-meta{font-size:12.5px;color:var(--muted);display:flex;gap:8px;flex-wrap:wrap}
.bk-pill{font-family:var(--mono);font-size:11px;border-radius:999px;padding:1px 8px;border:1px solid var(--line)}
.bk-pill.want{color:var(--lv2);border-color:var(--lv2)}.bk-pill.planned{color:var(--gold);border-color:var(--gold)}
.bk-pill.tried{color:#9FF0CF;border-color:var(--ok)}.bk-pill.loved{background:var(--ok);border-color:var(--ok);color:#06261A}.bk-pill.no{color:var(--muted)}
.bk-tonight{min-height:40px;min-width:40px;border:1px solid var(--line);background:transparent;border-radius:12px;cursor:pointer;font-size:12px;font-family:var(--mono);padding:4px 8px}
.bk-tonight.on{border-color:var(--rose);color:var(--rose)}
.bk-sug{background:var(--surface);border:1px dashed var(--gold);border-radius:16px;padding:12px;display:flex;flex-direction:column;gap:6px}
.bk-sug b{font-size:15px}
.bk-sug .row .btn{padding:8px 12px;font-size:12px}
.bk-hist{list-style:none;padding:0;margin:0;font-size:13px;color:var(--muted);display:grid;gap:4px}
@media (max-width:380px){.or-goals{grid-template-columns:1fr}}
