:root{font-family:Inter,Segoe UI,system-ui,sans-serif;color:#19302c;background:#f3f5f4;font-size:16px;--green:#164c3e;--lime:#c6ef91;--line:#dce4df;--muted:#64776e}*{box-sizing:border-box}body{margin:0}button,input,select,textarea{font:inherit}button,a,input,select,summary{touch-action:manipulation}button{cursor:pointer}a{color:inherit}button:focus-visible,a:focus-visible,summary:focus-visible{outline:3px solid #48816d;outline-offset:3px}input:focus,select:focus,textarea:focus{outline:2px solid #397661;outline-offset:1px}button:disabled{opacity:.5;cursor:wait}[hidden]{display:none!important}.topbar{background:#102e28;color:white;min-height:76px;padding:16px 36px;display:flex;align-items:center;gap:24px}.brand{font-size:19px;font-weight:700;display:flex;align-items:center;gap:12px;text-decoration:none;white-space:nowrap}.mark{background:var(--lime);color:#183b2c;border-radius:8px;width:32px;height:32px;text-align:center;line-height:32px}.local{font-size:12px;letter-spacing:1.7px;color:#a4bfb2}.topbar nav{margin-left:auto;display:flex;gap:22px;align-items:center}.topbar nav a{font-size:14px;text-decoration:none;color:#bad0c4}.topbar nav a.active{color:white;border-bottom:2px solid var(--lime);padding:10px 0}.pageheading{display:flex;align-items:center;justify-content:space-between;gap:20px;margin:30px 0 26px}.eyebrow{font-size:12px;letter-spacing:1.8px;font-weight:700;color:#557364;margin:0 0 12px}h1{font-size:30px;font-weight:650;letter-spacing:-1px;margin:0}h2{font-size:18px;letter-spacing:-.3px;margin:0 0 10px}h3{font-size:16px;margin:0}p{line-height:1.5}.subtitle{margin:8px 0 0;color:var(--muted);font-size:15px}main{max-width:1600px;margin:auto;padding:0 30px}.workspace{display:grid;grid-template-columns:310px minmax(0,1fr);gap:24px;align-items:start}.panel{background:#fff;border:1px solid var(--line);border-radius:12px}.setup{padding:22px}.sectiontitle{display:flex;justify-content:space-between;align-items:center;gap:12px}.sectiontitle h2{margin:0}.badge{padding:6px 10px;border-radius:6px;background:#eaf0ec;color:#526a5d;font-size:12px;white-space:nowrap}.hint{font-size:13px;color:var(--muted);line-height:1.55;margin:10px 0 15px}label{display:block;font-size:14px;font-weight:600;margin:14px 0 7px}input:not([type=checkbox]),select,textarea{background:#fff;color:#233b30;border:1px solid #cdd9d1;border-radius:7px;padding:10px 11px;width:100%;min-height:42px}textarea{font-size:14px;resize:vertical}input[type=checkbox]{accent-color:var(--green);width:17px;height:17px;flex-shrink:0}.check{display:flex;align-items:flex-start;gap:9px;font-weight:500;line-height:1.4}.check small{display:block;font-size:12px;color:var(--muted)}.primary{background:var(--green);color:white;border:0;border-radius:7px;padding:11px 15px;font-size:14px;font-weight:600}.primary:hover{background:#23664f}.addrow{display:grid;grid-template-columns:1fr 1.15fr;gap:10px;align-items:end}.divider{height:1px;background:var(--line);margin:24px 0}.compute{width:100%;margin-top:20px}.targetrow{background:#eff5ef;border:1px solid #dbe7dd;padding:12px;border-radius:8px;margin:12px 0}.targetrow .name{font-weight:650;font-size:14px;display:flex;justify-content:space-between;gap:8px}.targetrow input{max-width:140px;min-height:34px;padding:6px 9px;font-size:14px}.targetrow label{font-size:12px;margin:6px 0}.iconbutton{border:0;background:none;font-size:23px;padding:0 6px;color:#5a7363;line-height:1}.smallactions{display:flex;gap:15px}.smallactions button{border:0;background:none;color:var(--green);padding:0;font-size:13px;text-decoration:underline}details{border-top:1px solid var(--line);margin-top:20px;padding-top:15px}summary{cursor:pointer;font-size:14px;font-weight:600;line-height:1.5}summary span{font-weight:400;color:var(--muted);font-size:12px}#areaChoices{max-height:260px;overflow:auto}#areaChoices .check{font-size:13px}.results{min-width:0}#status{color:#5e7668;font-size:13px;margin:0 0 12px;min-height:18px}#error{padding:16px;background:#fff0e8;color:#873615;border:1px solid #f2c2ab;border-radius:8px;margin-bottom:16px}.summarygrid{display:grid;grid-template-columns:1.1fr 1.1fr .8fr;background:#173d32;border-radius:12px;padding:22px 6px;color:white;gap:0}.metric{padding:0 24px;border-right:1px solid #426153;min-width:0}.metric:last-child{border:0}.metric>span{display:block;font-size:12px;font-weight:600;letter-spacing:1px;color:#bed3c5;line-height:1.5}.metric strong{display:block;font-size:32px;letter-spacing:-1px;margin:8px 0;color:#d9f7b3;font-weight:650}.metric small{font-size:12px;color:#c5d8cc}.raw{padding:15px 19px;margin:16px 0}.raw summary span{margin-left:8px}#rawMaterials{display:flex;gap:8px;flex-wrap:wrap;margin-top:12px}.material{background:#eef4ee;padding:8px 12px;border-radius:6px;font-size:13px}.plansgrid{display:grid;grid-template-columns:240px minmax(0,1fr);gap:16px;align-items:start}.optionpanel{overflow:hidden}.optionpanel .sectiontitle{padding:18px}#planChoices{max-height:780px;overflow:auto}.planchoice{border:0;border-top:1px solid var(--line);width:100%;background:white;text-align:left;padding:16px 18px;color:inherit}.planchoice:hover{background:#f4f8f3}.planchoice.selected{background:#eaf3df;box-shadow:inset 3px 0 var(--green)}.planchoice strong{font-size:18px}.planchoice .route{display:block;font-size:13px;line-height:1.5;color:#627660;margin:8px 0}.planchoice small{font-size:12px;color:#6e7f70}.rank{font-size:12px;margin-right:10px;color:#7a897b}.detailpanel{padding:22px;min-width:0}.pathheader{display:flex;justify-content:space-between;gap:10px;align-items:center}.pathheader .total{font-size:24px;font-weight:650;color:var(--green)}.crafts{margin:17px 0;display:flex;flex-wrap:wrap;gap:6px}.crafts span{padding:6px 9px;border:1px solid var(--line);border-radius:5px;font-size:12px}.arearow{margin:18px 0}.arearow .heading{display:flex;justify-content:space-between;font-size:14px;gap:10px}.bar{height:6px;background:#eef1ec;border-radius:10px;margin:8px 0}.bar i{display:block;height:100%;background:#6c9c65;border-radius:10px}.areaused{font-size:12px;color:#5e7764;line-height:1.7;margin:0}.arearow details{margin:7px 0 0;padding:0;border:none}.arearow summary{font-size:12px;font-weight:400}.unusedheading{border-top:1px solid var(--line);padding-top:23px;margin-top:22px}.unusedheading p{font-size:13px;color:var(--muted);margin:6px 0 12px}.unusedtable{width:100%;border-collapse:collapse;font-size:14px;margin-top:8px}.unusedtable th{font-size:12px;font-weight:500;color:var(--muted);text-align:left;padding:10px 0;border-bottom:1px solid var(--line)}.unusedtable td{padding:10px 0;border-bottom:1px solid #edf1ed}.unusedtable td:last-child,.unusedtable th:last-child{text-align:right}.materialbutton{font-size:14px;background:none;border:0;padding:0;color:#215b42;text-align:left;text-decoration:underline;text-underline-offset:3px}.empty{padding:60px 30px;text-align:center;color:var(--muted)}.empty h2{color:#254c3a;margin-top:22px}.toolicon{display:inline-block;background:#e7f1de;color:#2c6343;width:55px;height:55px;border-radius:12px;font-size:34px;line-height:55px;text-align:center}footer{margin:28px 0 25px;color:var(--muted);font-size:12px}.toolpage{padding:60px 36px;max-width:1000px;margin:auto}.toolcard{display:block;margin-top:30px;max-width:420px;padding:30px;border:1px solid var(--line);border-radius:14px;background:#fff;text-decoration:none}.toolcard h2{margin-top:24px}.toolcard p{color:var(--muted)}dialog{width:min(600px,94vw);max-height:85vh;border:1px solid var(--line);border-radius:15px;padding:28px;color:inherit}dialog::backdrop{background:#10281bb3;backdrop-filter:blur(3px)}#consumerList{margin-top:22px;max-height:350px;overflow:auto}.consumer{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px 0;border-top:1px solid var(--line)}.consumer strong{font-size:14px}.consumer small{display:block;font-size:12px;color:var(--muted);margin-top:4px}.consumer button{padding:7px 12px;border:1px solid #b4c8b7;border-radius:6px;background:#eef6e7;color:var(--green)}.stale{opacity:.58}.loading{animation:pulse 1.5s infinite}@keyframes pulse{50%{opacity:.55}}@media(max-width:1200px){.plansgrid{grid-template-columns:190px minmax(0,1fr)}.workspace{grid-template-columns:280px minmax(0,1fr);gap:16px}.metric{padding:0 14px}.metric strong{font-size:26px}main{padding:0 18px}.detailpanel{padding:18px}}@media(max-width:950px){.plansgrid{grid-template-columns:1fr}#planChoices{display:flex;max-height:240px;overflow:auto}.planchoice{min-width:190px;max-width:240px}.summarygrid{grid-template-columns:1fr}.metric{border:0;margin:8px 10px}.metric strong{display:inline-block;margin:4px 8px 0 0}.local{display:none}}@media(max-width:680px){.topbar{padding:14px 18px;flex-wrap:wrap;gap:10px}.topbar nav{margin-left:0}.pageheading{align-items:start;flex-direction:column}h1{font-size:26px}.workspace{grid-template-columns:1fr}.summarygrid{grid-template-columns:1fr 1fr}.metric:last-child{grid-column:span 2}.setup{padding:18px}main{padding:0 14px}.pathheader{align-items:start}.raw summary span{display:block;margin-left:0}.topbar .brand{font-size:17px}}

/* Default dark working surface; light theme keeps the original palette. */
:root[data-theme=dark]{color-scheme:dark;color:#e0eae5;background:#101917;--green:#94ceaa;--lime:#c6ef91;--line:#34453d;--muted:#a4b7ab}
[data-theme=dark] .panel,[data-theme=dark] dialog,[data-theme=dark] .toolcard{background:#192620}
[data-theme=dark] input:not([type=checkbox]),[data-theme=dark] select,[data-theme=dark] textarea{background:#101d17;color:#e0eae5;border-color:#465b4e}
[data-theme=dark] .targetrow,[data-theme=dark] .material,[data-theme=dark] .badge{background:#263a2d;color:#d1e4d4;border-color:#40573e}
[data-theme=dark] .planchoice{background:#192620}[data-theme=dark] .planchoice:hover{background:#24372b}[data-theme=dark] .planchoice.selected{background:#30492f}
[data-theme=dark] .primary{background:#9bd3ac;color:#112819}[data-theme=dark] .primary:hover{background:#b4e6bf}
[data-theme=dark] .eyebrow,[data-theme=dark] #status,[data-theme=dark] .areaused,[data-theme=dark] .planchoice .route,[data-theme=dark] .planchoice small,[data-theme=dark] .rank,[data-theme=dark] .iconbutton{color:#adc7b2}
[data-theme=dark] .materialbutton,[data-theme=dark] .empty h2{color:#a8ddba}[data-theme=dark] .unusedtable td{border-color:var(--line)}[data-theme=dark] .bar{background:#34453d}
[data-theme=dark] .consumer button{background:#30492f;border-color:#60765e;color:#dbefcf}
[data-theme=dark] #error{background:#492d21;color:#ffdbc3;border-color:#895339}
.themebutton{background:transparent;border:1px solid #789388;border-radius:6px;color:#e5eee7;font-size:12px;padding:7px 10px;white-space:nowrap}
.costpreview{display:block;margin-top:9px;line-height:1.6}.costreport{margin:16px 0}.tablewrap{overflow-x:auto}.costreport table{border-collapse:collapse;width:100%;font-size:12px;min-width:360px}.costreport td,.costreport th{border-bottom:1px solid var(--line);padding:10px 7px;text-align:right;vertical-align:top;font-variant-numeric:tabular-nums}.costreport td:first-child,.costreport th:first-child{text-align:left}.costreport td small{display:block;color:var(--muted);margin-top:4px}.costreport th{color:var(--muted);font-weight:500}.costreport .hint{font-size:12px}#ciderSettings{max-height:300px;overflow:auto;padding:0 4px}

/* Shared settings rhythm: labels left, controls right, one group per purpose. */
.setup{padding:20px}.settingsgroup{border-top:1px solid var(--line);margin-top:24px;padding-top:20px}.settingsgroup h2,.settingsgroup>summary{font-size:15px;font-weight:650;margin:0 0 8px}.settingrow{display:flex;justify-content:space-between;align-items:center;gap:14px;min-height:62px;margin:0;padding:12px 0;border-bottom:1px solid var(--line);font-size:13px;font-weight:550}.settingrow:last-child{border-bottom:0}.settingrow>span:first-child{min-width:0}.settingrow small{display:block;font-size:11px;line-height:1.5;font-weight:400;color:var(--muted);margin-top:3px}.compact{font-size:12px;margin:10px 0;line-height:1.6}.settingrow input.switch{appearance:none;width:38px;height:22px;min-width:38px;margin:0;border-radius:20px;background:#6d7e74;border:1px solid #83958a;position:relative;cursor:pointer;transition:background .15s}.settingrow input.switch:before{content:'';position:absolute;left:3px;top:3px;width:14px;height:14px;border-radius:50%;background:white;transition:transform .15s}.settingrow input.switch:checked{background:#47825a;border-color:#71a680}.settingrow input.switch:checked:before{transform:translateX(16px)}.numberunit{display:flex;align-items:center;gap:6px;flex-shrink:0;color:var(--muted)}.settingrow .numberunit input{width:61px;min-height:36px;padding:7px;text-align:center;font-size:13px}.settingrow select{width:80px;min-height:36px;padding:7px;font-size:13px}.effectivenesslegend{display:flex;justify-content:space-between;color:var(--muted);font-size:10px;text-transform:uppercase;letter-spacing:.7px;margin:18px 0 4px}#ciderSettings{max-height:410px;padding:0 6px 0 0;scrollbar-width:thin}.effectivenessrow{padding:13px 0;border-bottom:1px solid var(--line)}.effectivenessrow>label{font-size:12px;font-weight:550;margin:0 0 9px;line-height:1.4}.effectivenesscontrols{display:flex;justify-content:space-between;align-items:center;gap:8px}.stepper{display:flex;align-items:center;border:1px solid var(--line);border-radius:7px;overflow:hidden;flex-shrink:0}.stepper button{width:31px;height:34px;border:0;background:transparent;color:inherit;padding:0;font-size:20px}.stepper button:hover{background:#6b956329}.stepper button:disabled{cursor:default;opacity:.3}.stepper input:not([type=checkbox]){width:43px;min-height:34px;height:34px;padding:0 2px;text-align:center;border:0;border-radius:0;background:transparent;appearance:textfield;font-size:13px}.stepper input::-webkit-inner-spin-button,.stepper input::-webkit-outer-spin-button{appearance:none}.effectivenesscontrols output{text-align:right;font-size:15px;font-variant-numeric:tabular-nums;font-weight:600;color:var(--green)}.effectivenesscontrols output small{font-size:10px;font-weight:400;display:block;color:var(--muted)}.effectivenessrow>.hint{display:block;margin-bottom:0}.settingsgroup>label:not(.settingrow){font-size:12px;margin-top:16px}.setup>details:not(.settingsgroup){margin-top:24px;padding-top:20px}.setup #areaChoices .check{padding:6px 0;margin:0}.setup #areaChoices{margin-top:12px}.setup .smallactions{margin-top:14px}

.targetbar{padding:20px 24px;margin-bottom:24px}.targetbar>.hint{margin:6px 0 16px}.targetbarcontent{display:flex;flex-wrap:wrap;gap:16px;align-items:stretch}.targetbar #targets{display:flex;flex-wrap:wrap;gap:12px;flex:1 1 320px;min-width:0}.targetbar #targets:empty{display:none}.targetbar .targetrow{flex:1 1 210px;max-width:310px;min-width:200px;margin:0;padding:12px 14px}.targetbar .targetrow label{margin:10px 0 5px}.targetbar .targetrow input{max-width:none;width:100%}.targetbar #addForm{flex:1 1 370px;display:flex;align-items:end;gap:12px;min-width:0;margin:0;padding:12px 14px;border:1px dashed var(--line);border-radius:8px}.targetbar .itemfield{flex:1 1 190px;min-width:140px}.targetbar .addrow{display:flex;gap:10px;align-items:end;flex:0 1 auto}.targetbar .addrow>div{width:100px;flex-shrink:0}.targetbar #addForm label{font-size:12px;margin:0 0 7px}.targetbar #addForm button{white-space:nowrap;height:42px}.setup>.settingsgroup:first-child{border-top:0;margin-top:0;padding-top:0}
.setup .settingsgroup{margin-top:18px;padding-top:16px}.setup .settingsgroup>.settingrow{margin:0;padding:10px 0;min-height:56px}.setup .settingsgroup>.settingrow:last-child{margin:0;padding-bottom:0;border-bottom:0}.setup .settingsgroup>.settingrow.hasnote{border-bottom:0;padding-bottom:3px}.setup .settingnote{margin:3px 0 0;padding:0;font-size:11px}.setup .settingsgroup>:last-child{margin-bottom:0}.setup .settingsgroup>label:not(.settingrow){margin:12px 0 6px}.setup .settingsgroup>.hint{margin-top:6px;margin-bottom:0}.setup>details:not(.settingsgroup){margin-top:18px;padding-top:16px}.setup>details>.hint:last-child{margin-bottom:0}.setup>p.hint:last-child{margin:8px 0 0}.setup .settingrow small{margin-top:2px}.setup .effectivenessrow:last-child{border-bottom:0;padding-bottom:0}
.gameicon{display:inline-block;width:24px;height:24px;object-fit:contain;flex-shrink:0;vertical-align:middle}.fallbackicon{color:var(--muted)}.itemname{display:inline-flex;align-items:center;gap:6px;vertical-align:middle}.itemname>span:not(.mmbadge){padding:0!important;border:0!important;font-size:inherit!important}.targetrow .gameicon{width:30px;height:30px}.targetrow .name{align-items:center}.areaused .gameicon{width:18px;height:18px}.areaused .itemname{margin:2px 0}.crafts>span,.material{display:inline-flex;align-items:center;gap:5px}.crafts .itemname{border:0;padding:0;font-size:inherit}.settingrow [data-setting-icon]{display:grid;grid-template-columns:24px 1fr;column-gap:9px;align-items:center}.settingrow [data-setting-icon]>.gameicon{grid-column:1;grid-row:1 / span 2}.settingrow [data-setting-icon]>small{grid-column:2}.areaicon{display:inline-block;color:var(--muted);margin-right:7px;font-size:19px;line-height:1;vertical-align:middle}.costreport .gameicon{width:20px;height:20px}.setup #areaChoices .check{align-items:center;gap:7px}.consumer strong .itemname{font-size:14px}
@media(max-width:950px){.targetbar #addForm{flex-basis:100%}.targetbar .targetrow{max-width:none}}@media(max-width:600px){.targetbar{padding:16px}.targetbar #addForm{flex-wrap:wrap}.targetbar .itemfield{flex-basis:100%}.targetbar .addrow{width:100%}.targetbar .addrow>div{flex:1}.targetbar .targetrow{min-width:0;flex-basis:100%}.targetbarcontent{gap:12px}}

/* Compact target list and exploration controls. */
.targetbarcontent{display:block}.targetbar #targets{display:block;width:100%}.targetbar .targetrow{display:grid;grid-template-columns:minmax(0,1fr) auto 28px;align-items:center;gap:18px;max-width:none;min-width:0;width:100%;padding:10px 0;margin:0;border:0;border-bottom:1px solid var(--line);border-radius:0;background:transparent}.targetbar .targetrow .name{min-width:0}.targetbar .targetrow .itemname{min-width:0}.targetbar .targetrow .itemname>span{overflow-wrap:anywhere}.targetbar .targetrow .targetquantity{display:flex;align-items:center;gap:12px;margin:0;font-size:12px;color:var(--muted);font-weight:400}.targetbar .targetrow input{width:132px;min-height:34px}.targetbar .targetrow .gameicon{width:26px;height:26px}.targetbar #addForm{margin-top:14px;padding:0;border:0;display:flex;width:100%}.targetbar .itemfield{max-width:440px}.targetbar .targetrow .iconbutton{justify-self:end}
.setup .effectivenesslegend{display:grid;grid-template-columns:minmax(0,1fr) 80px 68px;gap:6px;font-size:8px;letter-spacing:0;margin:12px 0 4px;align-items:end}.effectivenesslegend span:nth-child(2){text-align:center}.effectivenesslegend span:last-child{text-align:right}.setup .effectivenessrow{display:grid;grid-template-columns:minmax(0,1fr) 80px 68px;gap:6px;align-items:center;padding:8px 0}.setup .effectivenessrow>label{margin:0;font-size:11px;line-height:1.4}.setup .effectivenessrow>label .areaicon{display:none}.effectivenesscontrols{display:contents}.setup .effectivenessrow .stepper{width:80px}.setup .effectivenessrow .stepper button{width:24px;height:30px;font-size:17px;flex-shrink:0}.setup .effectivenessrow .stepper input{width:30px;height:30px;min-height:30px;font-size:12px}.setup .effectivenessrow output{font-size:11px;overflow-wrap:anywhere}.setup .effectivenessrow>.hint{grid-column:1 / -1;font-size:10px;margin:0}.setup #ciderSettings{padding:0;max-height:420px}
.summarycosts{grid-column:1 / -1;padding:0 18px;min-width:0;--line:#426153;--muted:#c5d8cc}.summarycosts .costreport{margin:18px 0 0;padding:13px 0 0;border-top:1px solid #426153}.summarycosts .costreport>summary{font-size:13px;color:#e3f3e7}.summarycosts .comparisoncaption{color:#bed3c5;font-size:11px;font-weight:400}.summarycosts .hint,.summarycosts .costreport th,.summarycosts summary span,.summarycosts .fallbackicon{color:#c5d8cc}.summarycosts .costreport table{color:#f1f7f2}.summarycosts .costreport details{border-color:#426153}.summarycosts .costreport a{color:#daf0c9}.summarygrid>.metric:nth-child(3){border:0}
@media(max-width:600px){.targetbar .targetrow{grid-template-columns:minmax(0,1fr) 100px 24px;gap:8px}.targetbar .targetrow .targetquantity{display:block}.targetbar .targetrow .targetquantity>span{display:block;font-size:10px;margin-bottom:3px}.targetbar .targetrow input{width:100%}.targetbar .targetrow .name{font-size:13px}.targetbar .itemfield{max-width:none}.summarycosts{padding:0 14px}.summarycosts .comparisoncaption{display:block;margin-left:17px}.summarygrid>.metric:nth-child(3){grid-column:1 / -1}}

#inventoryRows{max-height:480px;overflow:auto;scrollbar-width:thin;padding-right:3px}.inventorygroup{margin:14px 0}.inventorygroup h3{font-size:11px;color:var(--muted);font-weight:600;margin:0 0 5px}.inventoryrow{display:grid;grid-template-columns:minmax(0,1fr) 82px 19px;gap:5px;align-items:center;padding:6px 0;border-bottom:1px solid var(--line)}.inventoryrow label{font-size:11px;font-weight:400;margin:0;min-width:0}.inventoryrow .itemname{gap:5px;min-width:0}.inventoryrow .itemname>span{overflow-wrap:anywhere}.inventoryrow .gameicon{width:20px;height:20px}.inventoryrow input:not([type=checkbox]){padding:5px;min-height:31px;font-size:12px}.inventoryrow .iconbutton{font-size:20px;padding:0}.inventoryadd{display:flex;align-items:end;gap:10px}.inventoryadd>div{flex:1;min-width:0}.inventoryadd button{white-space:nowrap;padding:11px 10px}.setup #inventoryForm label{font-size:12px;margin:12px 0 6px}#inventoryError{font-size:12px;color:#d87857}

.secondarysection{margin-top:20px;padding-top:18px;border-top:1px solid var(--line)}.secondaryrow{display:grid;grid-template-columns:60px minmax(0,1fr) 130px 170px 24px;gap:14px;align-items:center;padding:10px 0;border-bottom:1px solid var(--line)}.prioritycontrols{display:flex;gap:4px}.prioritycontrols button{height:30px;width:28px;background:transparent;border:1px solid var(--line);border-radius:5px;color:inherit}.prioritycontrols button:disabled{cursor:default}.secondaryname{display:flex;align-items:center;min-width:0;font-size:14px}.secondarycap{display:flex;align-items:center;gap:8px;font-size:12px;font-weight:400;color:var(--muted);margin:0}.secondarycap input{min-width:0!important;min-height:34px!important;padding:6px!important;font-size:12px!important}.secondaryamount{text-align:right}.secondaryamount strong{font-size:18px}.secondaryamount small{display:block;color:var(--muted);font-size:11px;margin-top:3px}.prioritystatus{font-size:12px;color:var(--muted);margin:12px 0 0}.secondaryreport{margin-top:20px;border-top:1px solid var(--line);padding-top:18px}.secondarysection>.hint{font-size:12px;margin:8px 0}.secondaryname .itemname>span{overflow-wrap:anywhere}@media(max-width:680px){.secondaryrow{grid-template-columns:60px minmax(0,1fr) 24px;gap:8px}.secondaryname{grid-column:2}.secondaryrow>.iconbutton{grid-column:3;grid-row:1}.secondarycap{grid-column:1 / 3;grid-row:2;width:150px}.secondaryamount{grid-column:2 / 4;grid-row:3}.secondaryname .rank{display:none}}

.secondaryextras{grid-column:2 / -2;font-size:12px;display:flex;flex-wrap:wrap;gap:6px 16px;align-items:center}.secondaryextras .check{margin:0;font-size:12px}.secondaryextras small{color:var(--muted)}.missinginputs{flex-basis:100%;margin:2px 0 0;color:#e5b879;line-height:1.7}.unusedtable th:not(:first-child),.unusedtable td:not(:first-child){text-align:right}.unusedtable th{font-size:11px}.secondaryextras .gameicon{width:18px;height:18px}@media(max-width:680px){.secondaryextras{grid-column:1 / -1}}

.anchorlabel{display:flex;align-items:center;gap:8px;margin:0;font-size:12px}.anchorlabel select{width:auto;min-height:30px;padding:4px;font-size:12px;max-width:180px}

.secondaryrow{grid-template-columns:60px minmax(150px,1fr) 200px 120px 24px}.secondaryexplore{margin:0;font-size:12px}.secondaryextras:empty{display:none}.secondaryextras .hint{margin:0}@media(max-width:680px){.secondaryrow{grid-template-columns:60px minmax(0,1fr) 24px}.secondaryexplore{grid-column:1 / 3;grid-row:2}.secondaryamount{grid-column:2 / 3;grid-row:3}.secondaryextras{grid-column:1 / -1}}

.routepanel{margin-bottom:20px;padding:20px}.routecontrols{display:flex;gap:14px;align-items:center}.routecontrols label{display:flex;gap:8px;align-items:center;margin:0;font-size:12px}.routecontrols input{width:110px}.routecontrols select{width:150px}.routecards{display:flex;gap:12px;overflow-x:auto;padding:8px 0 14px}.routecard{flex:0 0 190px;border:1px solid var(--line);border-radius:10px;padding:16px;text-align:center;display:flex;align-items:center;flex-direction:column;gap:6px}.routecard>.gameicon{width:48px;height:48px;object-fit:contain}.routecard>b{font-size:23px;color:var(--accent)}.routecard>small{color:var(--muted);font-size:11px}.routecard p{margin:6px 0 0;font-size:12px}.routesequence{display:flex;gap:8px;flex-wrap:wrap;padding-top:12px}.visitstep{border:1px solid var(--line);border-radius:6px;padding:8px;font-size:12px}.visitstep b{display:block}.emptystop{color:#e5b879;align-self:center;font-size:12px}.secondaryrow{grid-template-columns:60px minmax(140px,1fr) 105px 180px 110px 24px}@media(max-width:800px){.routepanel .sectiontitle{align-items:flex-start;gap:10px;flex-direction:column}.routecontrols{flex-wrap:wrap}.secondaryrow{grid-template-columns:60px minmax(0,1fr) 24px}.secondarycap{grid-column:1 / 2;grid-row:2;width:auto}.secondaryexplore{grid-column:2;grid-row:2}.secondaryamount{grid-column:2;grid-row:3}.secondaryrow>.iconbutton{grid-column:3;grid-row:1}}

.routearrow,.loopreturn{align-self:center;color:var(--accent);font-size:26px;flex-shrink:0}.loopreturn{text-align:center;padding:0 16px}.loopreturn small{display:block;font-size:12px}.routesequence>p{flex-basis:100%;margin:4px 0}.routecard{flex-basis:180px}

.craftworkssetup{border-top:1px solid var(--line);padding:16px 0;margin-top:16px}.craftworkssetup h3{font-size:15px;margin:0}.craftworkssetup>.hint{margin:8px 0 12px}.craftworkstable{overflow-x:auto}.craftworkstable table{width:100%;font-size:12px;border-collapse:collapse}.craftworkstable th,.craftworkstable td{padding:9px 10px;border-bottom:1px solid var(--line);text-align:left}.craftworkstable td:first-child{display:flex;align-items:center;gap:8px;min-width:180px}.craftworkstable th:nth-last-child(-n+2),.craftworkstable td:nth-last-child(-n+2){text-align:right;font-variant-numeric:tabular-nums}.craftworkstable .gameicon{width:24px;height:24px}

.slotlimit{display:flex;align-items:center;gap:8px;font-size:12px;margin:0}.slotlimit input{width:75px}.craftworksset{margin:10px 0;padding:12px;border:1px solid var(--line);border-radius:8px}.swapinstruction{font-size:12px;line-height:1.6;color:var(--accent)}

.routetransition{flex:0 0 100px;align-self:center;text-align:center;display:flex;flex-direction:column;gap:6px;color:var(--muted)}.routetransition>span{font-size:25px;color:var(--accent)}.routetransition small{display:block;font-size:10px;line-height:1.5}.routetransition button{padding:7px 4px;border:1px solid var(--line);border-radius:6px;background:var(--panel);color:var(--accent);font-size:11px;cursor:pointer}.implicitcrafts{border-top:1px solid var(--line);margin-top:18px;padding-top:16px}.implicitcrafts h3{font-size:14px;margin:0}.implicitrow{display:flex;justify-content:space-between;gap:12px;align-items:center;padding:8px 0;border-bottom:1px solid var(--line);font-size:12px}.implicitrow small{font-weight:400;color:var(--muted)}.leftovermaterials{margin-top:18px}.leftovermaterials #planDetail{max-height:450px;overflow:auto}.routematerials{margin:14px 0}.routematerials details{margin:10px 0}.plansgrid{display:block}.plansgrid #planChoices{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:10px}.targetbar>.raw,.targetbarcontent>.raw{margin-top:14px}.implicitrow .gameicon{width:24px;height:24px}

/* Compact route connectors and restored planner material chooser. */
.routetransition{flex:0 0 28px;gap:4px}.routetransition button{padding:3px 2px;display:flex;align-items:center;justify-content:center;gap:2px;width:28px}.routetransition button>span{font-size:15px}.routetransition button small{font-size:9px}.routecards{gap:8px}.leftovermaterials.panel{padding:18px;margin:18px 0}.consumergroup{margin-top:22px}.consumergroup h3{font-size:15px}.consumergroup .hint{margin:6px 0}.consumergroup .badge{padding:2px 6px}

.routetransition{min-width:0;max-width:28px}.routetransition .sr{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
.leftovermaterials #planDetail{max-height:none;overflow:visible}

.settingsheading{margin:0 0 22px;font-size:18px}.routefoods{display:flex;flex-wrap:wrap;gap:10px}.routefood{display:flex;align-items:center;gap:8px;margin:0;padding:8px 12px;border:1px solid var(--line);border-radius:8px;font-size:12px}.routefood small{display:block;font-size:11px;color:var(--muted);margin-top:3px}.routefood .gameicon{width:20px;height:20px}

/* Fixed square mastery markers; keep both letters centered at every item size. */
.itemname .mmbadge{display:inline-flex;align-items:center;justify-content:center;flex:0 0 24px;width:24px;height:24px;box-sizing:border-box;padding:0;border:1.5px solid #b99a48;border-radius:3px;background:rgba(185,154,72,.12);color:#dcc47e;font-family:inherit;font-size:9px!important;font-weight:700;letter-spacing:0;line-height:1;vertical-align:middle}
.itemname .gmbadge{border-color:#729cb4;background:rgba(114,156,180,.12);color:#a9ccdf}
[data-theme="light"] .itemname .mmbadge{color:#795f1c;background:#faf4df;border-color:#af9144}
[data-theme="light"] .itemname .gmbadge{color:#365f78;background:#edf5f9;border-color:#7c9faf}

/* Route controls share one wrapping row, including method-specific foods. */
.routepanel>.sectiontitle{flex-wrap:wrap;align-items:center}
.routecontrols{flex-wrap:wrap;justify-content:flex-end}
.routecontrols .routefoods{gap:6px}
.routecontrols .routefood{padding:6px 8px}
.routecontrols .routefood input{width:16px;min-height:0}
.craftworksdisclosure>.craftworkssetup{border-top:0;margin-top:12px;padding-top:0}
@media(max-width:800px){.routecontrols{justify-content:flex-start}}

.bottleneck{grid-column:2 / -2;border:0;margin:0;padding:0;font-size:12px}.bottleneck summary{font-size:12px;color:#d6b77b}.bottleneck p{margin:6px 0;color:var(--muted);font-size:12px}.bottleneck~.secondaryextras{margin-top:0}

.secondaryname{position:relative;flex-wrap:wrap}
.secondaryname .bottleneck{display:inline-block;position:relative;margin:0 0 0 6px;padding:0;border:0}
.bottleneck summary{display:flex;align-items:center;justify-content:center;list-style:none;width:24px;height:24px;border-radius:4px;color:var(--muted)}
.bottleneck summary::-webkit-details-marker{display:none}
.bottleneck[open] summary span{transform:rotate(90deg)}
.bottleneckbody{position:absolute;top:28px;left:0;width:300px;max-width:70vw;padding:12px;background:var(--panel,#18241f);border:1px solid var(--line);border-radius:8px;box-shadow:0 5px 18px #0005;z-index:10}
[data-theme="light"] .bottleneckbody{background:#fff}
#nonCraftingDrops table{width:100%;font-size:13px;border-collapse:collapse}
#nonCraftingDrops td,#nonCraftingDrops th{padding:8px;text-align:left;border-bottom:1px solid var(--line)}
#nonCraftingDrops td:last-child,#nonCraftingDrops th:last-child{text-align:right}

.plansave{padding:14px 18px;margin:0 0 18px}.plansave textarea{font-family:monospace;font-size:12px}.saveactions{display:flex;gap:8px;margin-top:10px;flex-wrap:wrap}.saveactions button{background:var(--green);color:white;border:1px solid var(--line);border-radius:6px;padding:8px 12px;font-size:13px}

.plannermode{display:flex;align-items:center;gap:12px;margin:0 0 18px}.plannermode label{margin:0}.plannermode select{max-width:340px}#passiveInputs .sectiontitle label{display:flex;align-items:center;gap:10px;margin:0;font-size:12px}#productionInterval{width:auto}#passiveInputs #inventorySection{border-top:0;margin-top:0}#passiveInputs #inventoryRows{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:18px}#passiveInputs #inventoryForm{max-width:520px}

.headingcontrols{display:flex;flex-direction:column;align-items:flex-end;gap:10px}.modebuttons{display:flex;border:1px solid var(--line);border-radius:9px;padding:3px;gap:3px}.modebuttons button{border:0;border-radius:6px;background:transparent;color:var(--muted);padding:10px 14px;font-size:13px;white-space:nowrap}.modebuttons button[aria-pressed="true"]{background:var(--green);color:white;font-weight:650}[data-theme="dark"] .modebuttons button[aria-pressed="true"]{background:#c6ef91;color:#19382c}#modeSwitchDialog .saveactions{margin-top:20px;flex-wrap:wrap}#modePlanCode{font-size:12px}#modeSwitchDialog button{border-radius:7px;padding:9px 12px}#modeSwitchDialog .primary{color:white;background:#164c3e}@media(max-width:760px){.pageheading{flex-wrap:wrap}.headingcontrols{align-items:flex-start}.modebuttons button{padding:9px 12px}}

/* Shared spacing rhythm: 8px within controls, 16px within sections, 24px between panels. */
:root{--space-control:8px;--space-section:16px;--space-panel:24px}
.itemname .mmbadge{cursor:pointer}
.pageheading{margin:var(--space-panel) 0}
.headingcontrols{gap:var(--space-control)}
.workspace{gap:var(--space-panel)}
.targetbar,.routepanel,.setup{padding:var(--space-panel)}
.targetbar,.routepanel,.plansave{margin-bottom:var(--space-panel)}
.plansave{padding:var(--space-section) var(--space-panel)}
.sectiontitle{gap:var(--space-section)}
.settingsheading{margin:0 0 var(--space-section)}
.hint{margin:var(--space-control) 0 var(--space-section)}
.hint:empty,.prioritystatus:empty,.implicitcrafts:empty{display:none}
#primaryInputs>.hint,#passiveInputs>.hint{margin:var(--space-control) 0 var(--space-section)}
.targetbarcontent{gap:var(--space-section)}
.targetbar #addForm{margin-top:var(--space-section);gap:var(--space-section)}
.targetbar .raw{margin:var(--space-section) 0 0;padding:var(--space-section)}
.secondarysection{margin-top:var(--space-section);padding-top:var(--space-section)}
.secondarysection>.hint{margin:var(--space-control) 0}
.prioritystatus{margin:var(--space-section) 0 0}
/* The disclosure owns its divider; its wrapper must not add another one. */
.implicitcrafts{border:0;margin:0;padding:0}
.implicitcrafts>details{margin:var(--space-section) 0 0;padding-top:var(--space-section)}
.setup .settingsgroup,.setup>details:not(.settingsgroup){margin-top:var(--space-section);padding-top:var(--space-section)}
.setup>.settingsheading+.settingsgroup{margin-top:0;padding-top:0;border-top:0}
.setup .settingsgroup>summary{margin-bottom:0}
.setup .settingsgroup[open]>summary{margin-bottom:var(--space-control)}
.setup .settingsgroup>.settingnote{margin:4px 0 0}
.inventorygroup{margin:var(--space-section) 0}
.inventorygroup h3{margin-bottom:var(--space-control)}
#passiveInputs #inventoryRows{gap:var(--space-section)}
#passiveInputs .inventorygroup{margin:0}
#passiveInputs #inventorySection{padding-top:0}
#passiveInputs #inventoryForm{margin-top:var(--space-section)}
.routecontrols{gap:var(--space-section);flex-wrap:wrap}
.routecontrols .routefoods{gap:var(--space-control)}
.routecards{padding:var(--space-control) 0 var(--space-section)}
.routepanel>details{margin-top:var(--space-section);padding-top:var(--space-section)}
.craftworksdisclosure>.craftworkssetup{margin-top:var(--space-section);padding-bottom:0}
.craftworksset{margin:var(--space-section) 0 0;padding:var(--space-section)}
.summarycosts .costreport{margin-top:var(--space-section);padding-top:var(--space-section)}
.leftovermaterials.panel{padding:var(--space-panel);margin:var(--space-panel) 0 0}
.plansgrid{gap:var(--space-section)}
.optionpanel .sectiontitle{padding:var(--space-section)}
.saveactions{margin-top:var(--space-section);gap:var(--space-control)}
.consumergroup,#consumerList{margin-top:var(--space-section)}
@media(max-width:680px){:root{--space-panel:16px}.routecontrols{align-items:flex-start}.routecontrols label{flex-wrap:wrap}.targetbar #addForm{gap:var(--space-control)}}
.summarygrid+.plansgrid{margin-top:var(--space-panel)}

/* Ingredient explanations expand in normal document flow. */
.secondaryname .bottleneck[open]{display:block;margin:8px 0 0}
.secondaryname .bottleneckbody{position:static;inset:auto;width:auto;max-width:none;margin-top:8px;padding:12px;box-shadow:none;z-index:auto}
.secondaryrow:has(.bottleneck[open]){align-items:start}
.externalnote{grid-column:1 / -1;margin:0;padding:8px 12px;border-left:2px solid #b99a48;background:rgba(185,154,72,.08);color:var(--muted);font-size:12px;line-height:1.5}

/* Put the explanation in a full-width grid row, outside the item-name flexbox. */
.ingredienttoggle{display:inline-flex;align-items:center;justify-content:center;flex:0 0 24px;width:24px;height:24px;margin-left:6px;padding:0;border:0;border-radius:4px;background:transparent;color:var(--muted);font-size:12px;cursor:pointer}
.ingredienttoggle[aria-expanded="true"] span{transform:rotate(90deg)}
.secondaryrow>.bottleneckbody{grid-column:1 / -1;position:static;inset:auto;width:100%;max-width:none;margin:0;padding:12px 16px;box-shadow:none;z-index:auto;font-size:12px}
.secondaryrow>.bottleneckbody p{margin:8px 0 0;color:var(--muted)}

#suggestionsDialog{width:min(760px,94vw);overflow-y:auto}#suggestionsDialog .consumer{gap:16px}#suggestionsDialog .consumer>div{min-width:0}#suggestionsDialog .consumer button{flex-shrink:0}

.prioritycontrols{display:grid;grid-template-columns:24px 28px;gap:2px 4px;align-items:center}
.prioritycontrols .draghandle{grid-row:1 / 3;width:24px;height:40px;padding:0;font-size:23px;cursor:grab;touch-action:none;color:var(--muted);background:transparent;border:0}
.prioritycontrols button:not(.draghandle){grid-column:2;height:22px;padding:0;font-size:12px}

.secondaryrow.dropbefore{box-shadow:inset 0 3px #b8e681}
.secondaryrow.dropafter{box-shadow:inset 0 -3px #b8e681}
body.reordering,body.reordering *{cursor:grabbing!important;user-select:none!important}

/* Keep calculation progress visible above the planner inputs. */
#status.plannerprogress{padding:12px 16px;margin:0 0 16px;font-size:14px;line-height:1.5;min-height:46px}
#status.plannerprogress.loading{position:sticky;top:12px;z-index:20;animation:none;box-shadow:0 4px 16px #0002;display:flex;align-items:center;gap:10px}
#status.plannerprogress.loading::before{content:"";width:14px;height:14px;flex:0 0 14px;border:2px solid var(--line);border-top-color:currentColor;border-radius:50%;animation:progress-spin .8s linear infinite}
@keyframes progress-spin{to{transform:rotate(360deg)}}
@media(prefers-reduced-motion:reduce){#status.plannerprogress.loading::before{animation:none}}

/* Phone layouts: names first, quantities second, actions last. */
@media(max-width:800px){
 main{padding:0 12px;max-width:100%;min-width:0}
 .topbar{padding:12px;gap:12px;flex-wrap:wrap}.topbar .local{display:none}.topbar nav{order:3;width:100%;margin:0}.brand{font-size:17px}.themebutton{margin-left:auto}
 .pageheading{margin:22px 0 18px;gap:16px}.pageheading h1{font-size:26px}.headingcontrols{width:100%;align-items:stretch}.modebuttons{display:flex}.modebuttons button{flex:1}.headingcontrols>.badge{align-self:flex-start}
 .workspace{display:flex;flex-direction:column;gap:16px}.workspace>*{width:100%;min-width:0}.results,.panel,#resultContent,#planDetail{min-width:0;max-width:100%}
 .targetbar,.setup,.routepanel{padding:16px}.targetbar{margin-bottom:16px}
 .targetbar #targets,.secondarysection #secondaryRows{display:grid;gap:12px}
 .targetbar .targetrow{position:relative;display:grid;grid-template-columns:minmax(0,1fr) 44px;gap:14px;padding:14px;border:1px solid var(--line);border-radius:12px;background:transparent}
 .targetbar .targetrow .name{grid-column:1;grid-row:1;font-size:16px}.targetbar .targetrow>.iconbutton{grid-column:2;grid-row:1;width:44px;height:44px}
 .targetbar .targetrow .targetquantity{grid-column:1 / -1;grid-row:2;display:flex;justify-content:space-between;gap:12px;font-size:14px}.targetbar .targetrow .targetquantity>span{font-size:14px;margin:0}.targetbar .targetrow input{width:50%;font-size:16px;min-height:44px}
 .secondaryrow{position:relative;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;padding:14px;margin:0;border:1px solid var(--line);border-radius:12px;align-items:center}
 .secondaryrow .secondaryname{grid-column:1 / -1;grid-row:1;min-height:44px;padding-right:42px;gap:5px;font-size:16px;flex-wrap:wrap}.secondaryname .rank{display:none}
 .secondaryrow>.iconbutton{position:absolute;right:10px;top:14px;width:44px;height:44px;grid-area:auto}
 .secondaryrow .secondarycap{grid-column:1;grid-row:2;width:100%;display:flex;flex-direction:column;align-items:stretch;gap:6px;font-size:13px}
 .secondaryrow .secondarycap input{width:100%;min-height:44px!important;font-size:16px!important;padding:10px!important}
 .secondaryrow .secondaryamount{grid-column:2;grid-row:2;text-align:left;align-self:center;min-width:0}.secondaryamount::before{content:"Planned crafts";display:block;font-size:12px;color:var(--muted);margin-bottom:6px}.secondaryamount strong{font-size:22px;overflow-wrap:anywhere}.secondaryamount small{font-size:12px;line-height:1.4}
 .secondaryrow .secondaryexplore{grid-column:1 / -1;grid-row:3;min-height:44px;margin:0;font-size:14px;padding:8px 0;border-top:1px solid var(--line);gap:10px}
 .secondaryrow .prioritycontrols{grid-column:1 / -1;grid-row:4;display:flex;gap:8px;align-items:center}.prioritycontrols::after{content:"Drag or use arrows to reorder";font-size:11px;color:var(--muted);margin-left:4px}
 .secondaryrow .prioritycontrols button,.secondaryrow .prioritycontrols .draghandle,.secondaryrow .prioritycontrols button:not(.draghandle){width:44px;height:44px;flex:0 0 44px;font-size:19px;border:1px solid var(--line);border-radius:8px}
 .secondaryrow>.bottleneckbody,.secondaryrow>.secondaryextras{grid-column:1 / -1;grid-row:auto;padding:10px 0}
 input:not([type=checkbox]),select,textarea{font-size:16px!important;min-height:44px}button.iconbutton,.ingredienttoggle{min-width:44px;min-height:44px}input[type=checkbox]{min-width:22px;min-height:22px}
 .itemname{min-width:0;max-width:100%;flex-wrap:wrap}.itemname>span:not(.mmbadge){overflow-wrap:anywhere}.mmbadge{flex-shrink:0}
 .routecontrols{width:100%;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.routecontrols>label{display:flex;flex-direction:column;align-items:stretch;gap:6px}.routecontrols input,.routecontrols select{width:100%}.routefoods{grid-column:1 / -1;flex-wrap:wrap}.routecards{max-width:100%;overscroll-behavior-x:contain}.routecard{flex-basis:170px}
 .summarygrid{display:flex;flex-direction:column;gap:18px}.summarygrid>.metric{min-width:0}.planchoice{max-width:100%;min-width:0}.planchoice .route{white-space:normal;overflow-wrap:anywhere}
 .costreport{max-width:100%;overflow-x:auto}.unusedtable{width:100%;table-layout:fixed}.unusedtable th:first-child{width:44%}.unusedtable td,.unusedtable th{padding:10px 4px;overflow-wrap:anywhere}.unusedtable .materialbutton{text-align:left;max-width:100%;white-space:normal}.unusedtable .itemname{font-size:13px}
 dialog, #suggestionsDialog{position:fixed;inset:0;margin:auto;width:calc(100% - 24px);max-width:600px;max-height:calc(100dvh - 32px);padding:18px;overflow:auto;overscroll-behavior:contain}
 dialog .sectiontitle{align-items:flex-start}dialog .sectiontitle h2{overflow-wrap:anywhere;min-width:0}dialog .sectiontitle button{flex:0 0 44px;min-height:44px}#consumerList{max-height:none;overflow:visible}
 dialog .consumer,#suggestionsDialog .consumer{display:flex;flex-direction:column;align-items:stretch;gap:12px}dialog .consumer button{min-height:44px;width:100%}dialog .saveactions{display:flex;flex-wrap:wrap;gap:8px}dialog .saveactions button{flex:1 1 140px;min-height:44px}
 .plansave .saveactions{display:flex;flex-wrap:wrap;gap:8px}.plansave .saveactions button{min-height:44px;flex:1 1 130px}
}

@media(max-width:800px){
 .routecards{position:relative;contain:paint}.routetransition{position:relative}
 html{overflow-x:clip}
}

/* Keep route checkpoint labels inside their horizontal scroller at every width. */
.routecards{position:relative;contain:paint}.routetransition{position:relative}

.planchoice .planbadges{display:flex;flex-wrap:wrap;gap:8px;grid-column:1 / -1;margin:16px 0;white-space:normal}
.planchoice .planbadge{display:inline-flex;align-items:center;min-height:32px;padding:8px 11px;border:1px solid;border-radius:8px;font-size:10px;font-weight:650;line-height:1.5;letter-spacing:.35px;white-space:normal;text-align:left}
.planbadge-explores{background:#d8f1bf;color:#294d19;border-color:#6e9b43!important}
.planbadge-areas{background:#d3e9ff;color:#204664;border-color:#678fab!important}
.planbadge-unused{background:#faeac3;color:#614912;border-color:#b8984f!important}
[data-theme=dark] .planbadge-explores{background:#2c4626;color:#daf3b9}
[data-theme=dark] .planbadge-areas{background:#243e50;color:#cae7ff}
[data-theme=dark] .planbadge-unused{background:#493e25;color:#f8e5ae}
#planChoices{max-height:none;overflow:visible}.plansgrid #planChoices .planchoice{max-width:none;min-width:0}

.planbadge-types{background:#eee3f8;color:#5a3977;border-color:#aa88c3!important}
[data-theme=dark] .planbadge-types{background:#372d43;color:#e6d3f8}
.plansgrid #planChoices{gap:14px;padding:12px}
.plansgrid #planChoices .planchoice{border:1px solid var(--line);border-radius:10px;padding:18px;align-self:stretch}
.planchoice .route{margin:14px 0 10px}.planchoice>small{display:block;line-height:1.7}
@media(max-width:600px){.planchoice .planbadges{flex-direction:column;align-items:stretch;gap:8px}.planchoice .planbadge{font-size:10px}.plansgrid #planChoices{padding:10px}}
[data-item-info]{position:relative;-webkit-touch-callout:none}
.item-dwell::after{content:"";position:absolute;right:-19px;top:0;width:15px;height:15px;border-radius:50%;background:conic-gradient(var(--accent,#91bd7c) var(--dwell-angle),transparent 0);mask:radial-gradient(circle,transparent 48%,black 52%);animation:item-dwell-fill var(--dwell-time,450ms) linear forwards;pointer-events:none}
@property --dwell-angle{syntax:"<angle>";initial-value:0deg;inherits:false}
@keyframes item-dwell-fill{to{--dwell-angle:360deg}}
#itemInfo{position:fixed;inset:auto;margin:0;padding:18px;border:1px solid var(--line);border-radius:12px;background:#fff;color:#19302c;overflow:auto;overscroll-behavior:contain;box-shadow:0 12px 40px #0005;font-size:14px}
[data-theme=dark] #itemInfo{background:#192620;color:#e0ece3}
.item-info-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.item-info-head h3{margin:0;line-height:1.5}.item-info-head button{flex:0 0 36px;min-height:36px;border:1px solid var(--line);border-radius:6px;background:transparent;color:inherit;font-size:21px}
#itemInfo h4{margin:18px 0 8px;font-size:14px}#itemInfo .hint{margin:8px 0;font-size:12px}.item-recipe{list-style:none;padding:0;margin:10px 0}.item-recipe li{display:flex;justify-content:space-between;align-items:center;gap:16px;padding:8px 0;border-bottom:1px solid var(--line)}.item-recipe li>strong{flex-shrink:0}.item-source{margin:10px 0}.item-source p{font-size:12px;color:var(--muted);line-height:1.6;margin:4px 0}.item-source strong{font-size:12px}#itemInfo details{margin:12px 0}#itemInfo summary{font-size:12px;line-height:1.5}
@media(pointer:coarse){[data-item-info]{user-select:none}#itemInfo button{min-width:44px;min-height:44px}}

.routegroup{flex:0 0 auto;border:1px solid #638878;border-radius:12px;padding:10px;margin:0;min-width:0}.routegroupcards{display:flex;gap:8px;align-items:stretch}.routegroupbadge{display:flex;gap:7px;align-items:center;margin:0 0 10px;padding:4px 8px;border:1px solid var(--line);border-radius:6px;background:var(--panel);color:var(--accent);font-size:12px}.routegroupcards .routecard{width:180px;flex:0 0 180px}.routegroupcards .routetransition{flex:0 0 28px}@media(max-width:800px){.routegroupcards .routecard{width:170px;flex-basis:170px}}

/* Shared spacing and responsive branding. */
.topbar{gap:20px}.brand{min-width:0;gap:10px}.brand .mark{flex:0 0 32px}.brandname{line-height:1.3}
.pageheading{gap:24px;margin:28px 0 24px}.pageheading>div:first-child{min-width:0}.pageheading h1{line-height:1.2}.pageheading .eyebrow{margin-bottom:10px}.pageheading .subtitle{margin:10px 0 0;line-height:1.6}
.headingcontrols{flex-shrink:0;gap:12px}.panel>.hint:last-child,.craftworksset>.hint:last-child{margin-bottom:0}
.routepanel .slotlimit{margin:0}.routegroupbadge{margin-bottom:10px}.routepanel #routeStatus{margin:8px 0 0;line-height:1.65}
#craftworksSetup>.sectiontitle{margin-bottom:12px}.craftworksset h4{margin:16px 0 10px}.craftworksset .implicitrow:last-child{border-bottom:0}
@media(max-width:1100px){.topbar{flex-wrap:wrap}.topbar nav{gap:16px}.pageheading{flex-wrap:wrap}.headingcontrols{max-width:100%}}
@media(max-width:800px){
 .topbar{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:12px;padding:16px}.brand{grid-column:1 / -1;white-space:normal;font-size:19px}.topbar nav{grid-column:1;grid-row:2;margin:0;gap:16px;flex-wrap:wrap}.topbar .themebutton{grid-column:2;grid-row:2;margin:0;min-height:44px;padding:8px 12px}
 .pageheading{margin:24px 0 20px;gap:18px}.pageheading h1{font-size:28px}.pageheading .subtitle{font-size:14px}.headingcontrols{width:100%;align-items:flex-start;gap:10px}.modebuttons{width:100%}.modebuttons button{flex:1;min-height:44px;padding:10px 8px}
 .routegroupbadge{min-height:36px}.routepanel .sectiontitle{gap:12px}.craftworksset{padding:14px}.craftworksset summary{line-height:1.65}
}

.savedplanfields{display:grid;grid-template-columns:minmax(0,1.3fr) minmax(0,1fr);gap:16px}.savedplanfields>div{min-width:0}.plansave>.saveactions{display:flex;flex-wrap:wrap;gap:8px}.plansave>details{margin-top:16px;padding-top:16px}@media(max-width:800px){.savedplanfields{grid-template-columns:1fr;gap:4px}}

/* Phone routes read top to bottom; desktop keeps the horizontal circuit. */
@media(max-width:800px){
 .secondaryrow .prioritycontrols .draghandle{display:none}
 .secondaryrow .prioritycontrols::after{content:"Use arrows to set priority"}
 .routecards{flex-direction:column;overflow:visible;contain:none;width:100%;gap:8px}
 .routegroup{width:100%;flex:0 0 auto;padding:10px}
 .routegroupcards{flex-direction:column;gap:8px}
 .routegroupcards .routecard{width:100%;flex:0 0 auto;display:grid;grid-template-columns:40px minmax(0,1fr);gap:5px 12px;padding:12px;text-align:left;align-items:center}
 .routegroupcards .routecard>*{grid-column:2;min-width:0}
 .routegroupcards .routecard>.gameicon,.routegroupcards .routecard>.areaicon{grid-column:1;grid-row:1 / 4;width:40px;height:40px;align-self:start}
 .routegroupcards .routecard>b{font-size:22px}
 .routegroupcards .routecard p{margin:4px 0 0}
 .routecards .routetransition{flex:0 0 auto;max-width:none;width:100%;min-height:28px;flex-direction:row;justify-content:center;align-items:center;gap:12px}
 .routecards .routetransition:not(.looptransition)>span:not(.sr){transform:rotate(90deg)}
 .routecards .routetransition button{width:auto;min-width:44px;min-height:44px;padding:8px 12px;gap:6px}
 .routecards .routetransition button::after{content:"Craftworks";font-size:11px}
 .routegroupbadge{min-height:44px}
}
@media(pointer:coarse){.secondaryrow .prioritycontrols .draghandle{display:none}}
