@@ -490,6 +490,59 @@ select {
490490 pointer-events : none;
491491}
492492
493+ /* Locked while a program holds the worker, because switching source reloads the page.
494+ The native disabled `<select>` is a text shade nobody notices, so the pill goes flat
495+ and grey with a padlock where the chevron was — and the pill takes the cursor and the
496+ `title`, since the disabled control inside it gets no pointer events. */
497+ .select-pill [data-locked = "true" ] {
498+ cursor : not-allowed;
499+ }
500+
501+ /* `--ink-mid` rather than the fainter `--ink-soft`, because which project is loaded stays
502+ worth reading while it runs — the flat fill and the padlock carry the unavailability. */
503+ .select-pill select : disabled {
504+ border-color : var (--line-soft );
505+ background : var (--track );
506+ color : var (--ink-mid );
507+ cursor : not-allowed;
508+ }
509+
510+ .select-pill select : disabled : hover {
511+ border-color : var (--line-soft );
512+ }
513+
514+ /* The padlock, drawn from the pill's two pseudo-elements — `::after` is the body (the
515+ chevron's borders traded for a fill), `::before` the shackle sitting on top of it.
516+ Both keep the chevron's footprint, so locking does not resize the pill.
517+
518+ `box-sizing` is set here because the `*` reset does not reach pseudo-elements: on
519+ content-box the shackle's borders would sit outside its width and shift it off the
520+ body's centre. With both boxes measured the same way, the two `right` offsets put
521+ their centres on the same 12.5px. */
522+ .select-pill [data-locked = "true" ]::after {
523+ box-sizing : border-box;
524+ width : 9px ;
525+ height : 7px ;
526+ border : none;
527+ border-radius : 1.5px ;
528+ background : var (--ink-mid );
529+ transform : translateY (1.5px );
530+ }
531+
532+ .select-pill [data-locked = "true" ]::before {
533+ content : "" ;
534+ box-sizing : border-box;
535+ position : absolute;
536+ right : 10px ;
537+ width : 5px ;
538+ height : 5px ;
539+ border : 1.4px solid var (--ink-mid );
540+ border-bottom : none;
541+ border-radius : 3px 3px 0 0 ;
542+ transform : translateY (-4px );
543+ pointer-events : none;
544+ }
545+
493546/* --------------------------------------------------------- file tree */
494547
495548.tree {
0 commit comments