/* Four axes: the day's level above, its slower context below. */
.routine-cards {position:relative;}
.routine-card.day-block {left:40px;right:8px;padding:7px 10px;border-radius:8px;display:flex;flex-direction:column;justify-content:center;gap:3px;will-change:transform;}
.card-title,.card-time {display:flex;justify-content:space-between;align-items:center;gap:6px;}
.card-title strong {font-size:14px;font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.card-title>span {font-size:12px;white-space:nowrap;opacity:.85;}
.card-time {font-size:12px;color:#e4e9e5;font-variant-numeric:tabular-nums;}
.card-time small {font-size:11px;color:#ffdacb;}
.continuous-energy {position:absolute;left:1px;width:6px;border-radius:5px;pointer-events:none;box-shadow:0 0 10px #83f5bd16;}
.routine-card.sort-placeholder {opacity:.22;border:1px dashed #b4dcca;}
.routine-card.drag-ghost {pointer-events:none;z-index:90;transition:none;box-shadow:0 10px 25px #0009;}
.free-time {position:absolute;left:14px;right:0;display:flex;align-items:center;justify-content:space-between;color:#91a799;font-size:11px;white-space:nowrap;overflow:hidden;}
.routine-card.time-conflict {border-color:#c78468;}
.routine-card.held {z-index:15;opacity:.96;box-shadow:0 8px 20px #0008;}
.routine-card.drop-invalid {outline-color:#e1a186;}
.routine-card.tight-card {padding:3px 7px;flex-direction:row;align-items:center;justify-content:space-between;}
.tight-card .card-title>span,.tight-card .card-time small {display:none;}
.tight-card .card-title {min-width:0;}
.tight-card .card-title strong {font-size:12px;}
.tight-card .card-time {flex-shrink:0;font-size:12px;}
.fixed-top {height:auto;padding:10px 15px 8px;background:#151918;}
.top-brand {height:24px;margin-bottom:8px;}
.top-brand small {font-size:12px;}
.axes {display:grid;gap:10px;}
.axis {display:block;width:100%;text-align:left;padding:0;color:#d5d9d5;}
.axis-heading {display:flex;justify-content:space-between;align-items:center;font-size:14px;margin-bottom:5px;}
.axis-heading strong {font-size:14px;font-weight:500;font-variant-numeric:tabular-nums;}
.axis-track {display:block;position:relative;height:9px;border-radius:8px;overflow:hidden;background:#202422;}
.axis-track>i {display:block;height:100%;background:#80c6ac;}
.axis-stress .axis-track>i {background:#c67e5d;}
.axis-wear .axis-track>i {background:#928472;}
.axis-detail {display:block;font-size:12px;line-height:16px;color:#929d95;margin-top:5px;}
.background-track {display:block;height:4px;background:linear-gradient(90deg,#80c6ac,#d5d3bb,#b4624b);border-radius:5px;position:relative;margin:2px 0 5px;}
.background-track>i {position:absolute;height:10px;width:2px;top:-3px;background:#ece7d7;}
.background-labels {display:flex;justify-content:space-between;gap:4px;font-size:11px;}
.background-labels>span:nth-child(2) {color:#c5c9bf;}
.source-dots {display:inline-flex;gap:3px;margin-right:4px;vertical-align:middle;}
.source-dot {width:7px;height:7px;border-radius:50%;border:1px solid #435148;}
.source-dot.active {background:#80c6ac;border-color:#80c6ac;}
.segmented-energy {display:flex;gap:2px;height:10px;overflow:hidden;border-radius:6px;}
.energy-segment {flex:1;background:#202422;position:relative;overflow:hidden;}
.energy-segment b,.energy-segment em {position:absolute;left:0;top:0;height:100%;background:#3c6152;}
.energy-segment em {background:#80c6ac;}
.energy-segment.unbuilt {border:1px dashed #343c36;background:transparent;}
.money-small {position:static;display:flex;justify-content:flex-end;align-items:center;gap:8px;width:100%;height:22px;margin-top:5px;font-size:12px;color:#a5ada4;}
.money-small strong {font-weight:500;color:#d8d1b8;}
.body-view {top:310px;}
.body-view.hidden-body {visibility:hidden;}
.bottom-sheet {background:#18211e;}
.full-day-timeline {min-height:0;overflow:hidden;touch-action:none;}
.linear-canvas {position:relative;min-height:100%;}
.timeline-legend span:last-child {overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.day-block,.day-block.dense {min-height:0;user-select:none;cursor:grab;padding-right:5px;}
.day-block.held {cursor:grabbing;}
.day-block.micro-block {padding:0;border:0;border-radius:2px;}
.micro-block .block-main,.micro-block .move-dots {display:none;}
.full-day-timeline .hour-mark {pointer-events:none;}
.sheet-grab {cursor:grab;touch-action:none;}
.sheet-grab:active {cursor:grabbing;}
.pressure-chips {flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none;}
.pressure-chip {font-size:11px;flex-shrink:0;}
.thread-tree {padding:18px 0;}
.thread-tier {display:flex;justify-content:center;gap:7px;}
.thread-tier.symptoms {font-size:12px;text-align:center;color:#acb9ac;margin-bottom:12px;}
.symptoms>span {flex:1;}
.thread-node {flex:1;max-width:230px;border:1px dashed #46564d;border-radius:10px;padding:10px 5px;text-align:center;}
.thread-node>span {display:block;font-size:18px;color:#93bda4;margin-bottom:6px;}
.thread-node strong {display:block;font-size:12px;font-weight:500;line-height:1.4;}
.thread-node small {display:block;font-size:11px;color:#91a292;line-height:1.4;margin-top:5px;}
.thread-node.followed {background:#294335;border-style:solid;border-color:#69967b;}
.thread-node.forming {border-color:#86ac90;}
.thread-node.stirring {animation:thread-pulse 2s infinite alternate;}
.thread-node.fading {opacity:.55;}
.thread-join {text-align:center;font-size:28px;color:#68836e;line-height:34px;}
.cat-connect,.cat-learn,.cat-exercise {background:#32654f;}
.cat-therapy,.cat-retreat,.cat-breathe {background:#594575;}
.cat-gaming,.cat-tv {background:#525873;}
@keyframes thread-pulse {to {border-color:#d8a478;}}
@media (prefers-reduced-motion:reduce) {.thread-node.stirring {animation:none;}}
@media (max-height:720px) {
  .fixed-top {padding-top:7px;}
  .axes {gap:6px;}
  .top-brand {margin-bottom:3px;height:19px;}
  .axis-heading {margin-bottom:3px;}
  .axis-detail {margin-top:3px;line-height:14px;}
  .axis-track {height:6px;}
  .sheet-tabs {margin-bottom:4px;height:33px;}
  .pressures {padding-bottom:3px;}
  .timeline-legend {display:none;}
}

/* Full context while inspecting; planning keeps the slow stress layer as a hairline. */
.axes {grid-template-columns:1fr;}
.free-time {left:40px;right:8px;}
.continuous-energy {width:24px;background:#172522;border-radius:2px;box-shadow:none;overflow:visible;}
.ribbon-fill,.continuous-energy svg {position:absolute;inset:0;width:100%;height:100%;}
.energy-contour {fill:none;stroke:#a2edc690;stroke-width:.7;}
.capacity-ceiling {stroke:#d3e1ccaa;stroke-width:.8;stroke-dasharray:2 3;}
.block-quality {font-size:11px;font-weight:500;margin-left:5px;white-space:nowrap;}
.block-quality.influenced {color:#d1ffb7;}
.tight-card .card-time {font-size:10px;}
.tight-card .block-quality {margin-left:2px;font-size:10px;}
.quiet-warning {background:#242b29;color:#9baba3;}
.time-budget {position:absolute;left:40px;right:8px;margin:0;font-size:11px;line-height:18px;color:#a9bdb0;font-variant-numeric:tabular-nums;pointer-events:none;}
/* Money and secondary states float on the body, leaving its viewport open. */
.phone-shell:not(.planning) .fixed-top .money-small {display:none;}
.body-money {position:absolute;right:17px;top:5px;z-index:8;display:flex;align-items:center;gap:8px;min-height:32px;padding:0;background:none;color:#a5ada4;font-size:12px;}
.body-money strong {font-weight:500;color:#d8d1b8;}
.body-status {max-width:calc(100% - 115px);font-size:9px;}
.body-art {top:42px;bottom:0;height:auto;}
/* One image-coordinate frame keeps every organ hit area aligned at any size. */
.body-anatomy {position:absolute;top:0;left:54%;height:185%;aspect-ratio:2/3;transform:translateX(-50%);}
.body-anatomy>img {width:100%;height:100%;object-fit:fill;}
.body-anatomy .hit-mind {left:50%;top:6%;}
.body-anatomy .hit-heart,.body-anatomy .heart-pulse {left:52%;top:28%;}
.body-anatomy .hit-gut {left:50%;top:44%;}
.body-anatomy .hit-energy {left:40%;top:27%;}
#body-state-list {position:absolute;top:58px;left:17px;width:112px;z-index:6;}
.body-states {padding:0;border:0;background:none;}
.body-state-row {display:grid;width:100%;grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"label value" "meter meter";align-items:center;column-gap:6px;row-gap:5px;min-height:44px;padding:5px 0 9px;border:0;background:none;font-size:11px;line-height:14px;text-align:left;color:#c4ddca;text-shadow:0 1px 4px #07151c;}
.body-state-row>span {grid-area:label;}
.body-state-row[aria-pressed="true"] {color:#d7ffad;}
.body-state-row strong {grid-area:value;text-align:right;font-size:12px;font-weight:500;}
.state-meter {grid-area:meter;height:2px;width:76px;border-radius:2px;overflow:hidden;background:#aac4b125;}
.state-meter b {display:block;height:100%;background:#81b49b;}
.state-meter.untracked {background:repeating-linear-gradient(90deg,#91a89855 0 3px,transparent 3px 6px);}
.body-art[data-highlight="mind"] .brain-slice {filter:brightness(1.7) saturate(1.2);}
.body-art[data-highlight="gut"] .gut-slice {filter:brightness(1.7) saturate(1.2);}
.body-art[data-highlight="heart"] .chest-slice {filter:brightness(1.7) saturate(1.2);}
.body-art[data-highlight="mind"] .hit-mind,.body-art[data-highlight="gut"] .hit-gut,.body-art[data-highlight="heart"] .hit-heart {border-color:#c9ffac;box-shadow:0 0 25px #abf79688;background:#9edf9b22;}
@media(max-height:700px){#body-state-list {top:45px;width:102px;}.body-state-row {min-height:38px;font-size:10px;padding:4px 0 6px;}.body-art {top:35px;}}
.discovery-map {position:relative;height:450px;margin:35px 0 0;}
.thread-lines {position:absolute;inset:0;width:100%;height:100%;overflow:visible;}
.thread-track {stroke:#33423a;stroke-width:1;stroke-dasharray:2 6;fill:none;opacity:.3;}
.thread-growth {fill:none;stroke:#8dcda9;stroke-width:2;stroke-linecap:round;transition:stroke-dasharray 1.5s ease,opacity 2s;}
.thread-growth.crisis {stroke:#e4ae86;animation:thread-glimmer 1.6s ease-in-out infinite alternate;}
.thread-growth.fading {opacity:.28;}
.thread-growth.dormant {opacity:0;}
.discovery-map .thread-node {position:absolute;transform:translate(-50%,-50%);width:29%;max-width:120px;min-height:67px;padding:8px 5px;border-radius:12px;background:#18231e;transition:opacity 1s,filter 1s,border-color 1s;}
.discovery-map .thread-node>span {font-size:13px;margin-bottom:3px;}
.discovery-map .thread-node strong {font-size:11px;}
.discovery-map .thread-node small {font-size:9px;line-height:1.2;}
.discovery-map .followed {border-style:solid;background:#393046;border-color:#9c85b2;}
.discovery-map .category-time.followed {background:#233d50;border-color:#729bb5;}
.discovery-map .category-energy.followed {background:#284d3b;border-color:#83b997;}
.discovery-map .fog-hidden {opacity:.24;filter:blur(1px);border-style:dashed;}
.discovery-map .fog-emerging {opacity:.58;filter:blur(.35px);border-style:dashed;}
.discovery-map .fog-sharpening {opacity:.9;border-style:solid;border-color:#88b397;}
.discovery-map .dormant {opacity:.13;}
.discovery-map .crisis:not(.followed) {animation:thread-glimmer 1.6s ease-in-out infinite alternate;}
.locked-skills {padding:26px 0 18px;margin-top:15px;border-top:1px solid #34443b;}
.skills .skill-card {align-items:start;gap:10px;padding:14px 0;}
.skills .skill-card>div {min-width:0;flex:1;}
.skills .skill-card>button {flex-shrink:0;min-width:33px;min-height:33px;font-size:12px;}
.skills .unlearned {opacity:1;}
.unlearned .skill-icon {background:#28312c;border:1px dashed #617267;}
.locked-effect {letter-spacing:5px;color:#8c9e92;}
.skill-card small {display:block;font-size:10px;}
.skill-card .influence-copy {font-size:11px;line-height:1.5;color:#bce4a2;margin-top:5px;}
.skill-card .leisure-copy,.leisure-copy {font-size:10px;line-height:1.6;color:#a3b9aa;margin-top:7px;}
.joy-range {margin-top:8px;font-size:11px;color:#b7d8bc;}
.joy-range>span>small {display:inline;font-size:9px;color:#9aac9c;}
.joy-range-track {height:5px;margin:6px 3px;background:linear-gradient(90deg,#304b3d,#8ac09f);border-radius:3px;position:relative;}
.joy-range-track i {position:absolute;top:-3px;height:11px;width:2px;background:#e7edce;transform:translateX(-50%);}
@keyframes thread-glimmer {from {opacity:.4;}to {opacity:1;}}
@media(prefers-reduced-motion:reduce){.thread-growth.crisis,.discovery-map .crisis:not(.followed){animation:none;}.thread-growth{transition:none;}}
