:root{--bg:#07141e;--pane:#102633;--pane2:#0d2330;--line:#294755;--text:#eaf1ef;--muted:#9eb8c0;--gold:#f4c987;--cyan:#62d9e8}
*{box-sizing:border-box}body{margin:0;background:radial-gradient(ellipse 950px 600px at 58% -270px,#265763 0%,#0b222d 66%,var(--bg) 100%);color:var(--text);font:14px -apple-system,BlinkMacSystemFont,"PingFang SC","Noto Sans CJK SC",sans-serif}.shell{max-width:1680px;margin:auto;padding:0 28px}.topbar{height:73px;border-bottom:1px solid #2a4855;display:flex;justify-content:space-between;align-items:center}.brand,.bar-right{display:flex;align-items:center;gap:12px}.brand{font-size:17px}.brandmark{display:grid;place-items:center;width:37px;height:37px;border:1px solid #9baaaa;border-radius:9px;color:var(--gold);font-size:19px;font-weight:400}.brand i{font-style:normal;color:#7198a4}.meta{font-size:10px;letter-spacing:.16em;color:#819fa9}.pill{border:1px solid #746a56;border-radius:99px;color:#e4c89b;font-size:11px;padding:7px 12px}.connection{font-size:11px;color:#8baeb4}.connection:before{content:"";width:7px;height:7px;background:#d4b17a;display:inline-block;border-radius:50%;margin-right:8px}.connection.online:before{background:#86cdb4}.connection.error:before{background:#d88d8c}
.hero{padding:34px 1px;display:flex;justify-content:space-between;align-items:flex-end;gap:25px}.kicker,.eyebrow{color:#ebc58d;letter-spacing:.15em;font-size:10px;font-weight:740}.hero h1{font-size:38px;letter-spacing:-.055em;margin:11px 0;font-weight:720}.hero h1 em{font-style:normal;font-weight:440;color:#f7d49b}.hero p{color:#bbd0d2;line-height:1.7;margin:0}.prov{color:#b7ac94;margin-top:12px;font-size:11px}.hero-stats{display:grid;grid-template-columns:repeat(4,1fr);min-width:440px;gap:13px}.hero-stats div{border-left:1px solid #3c5964;padding-left:13px}.hero-stats b{font-size:28px;font-weight:550;color:#fae2bb;display:block;font-variant-numeric:tabular-nums}.hero-stats span{font-size:10px;color:#8faeb7;white-space:nowrap}
.layout{display:grid;grid-template-columns:minmax(0,1fr) 330px;gap:20px;align-items:start}.main{min-width:0}.section-head{display:flex;justify-content:space-between;align-items:flex-end;background:var(--pane2);border:1px solid var(--line);border-radius:14px 14px 0 0;border-bottom:0;padding:17px 18px 13px}.section-head h2{font-size:22px;font-weight:680;margin:6px 0 0}.section-head small{color:#a1bac1;font-size:13px;font-weight:450}.tag{color:#f0d09a;font-size:11px}.toolbar{display:flex;align-items:center;gap:8px;flex-wrap:wrap;background:#102a38;border:1px solid var(--line);border-bottom:0;padding:11px 13px}.btn{cursor:pointer;padding:9px 12px;font:inherit;font-size:12px;background:#173642;color:#e8f2f2;border:1px solid #3b6371;border-radius:7px;white-space:nowrap}.btn:hover{border-color:#f0cb8c;background:#234857}.btn.primary{background:#226477;border-color:#3b8a9b;font-weight:650}.btn.gold{background:#eac28a;border-color:#f7dda9;color:#14282e;font-weight:730}.btn.block{width:100%;display:block}.btn.mini{padding:7px;font-size:11px}.btn:disabled{opacity:.38;cursor:not-allowed}.palette{display:flex;align-items:center;gap:7px;margin-left:auto}.swatch{width:19px;height:19px;border:2px solid transparent;border-radius:50%;cursor:pointer}.swatch.active{outline:2px solid #f6e3be;outline-offset:2px}.city-now{font-size:11px;color:#92abb6}.city-now b{color:#edd6b0}.canvas-wrap{background:#061723;border:1px solid #396071;overflow:hidden;position:relative}.canvas-wrap canvas{width:100%;display:block;aspect-ratio:1100/520;touch-action:none;cursor:crosshair}.canvas-top-label{position:absolute;right:10px;top:9px;background:#082230d9;border:1px solid #385868;color:#95bbc4;padding:5px 9px;border-radius:5px;font-size:10px;pointer-events:none}.canvas-help{position:absolute;left:14px;bottom:13px;font-size:11px;color:#dfd6c2;background:#082535df;padding:7px 10px;border-radius:7px;border:1px solid #3a5b6a;pointer-events:none}.canvas-foot{display:flex;gap:13px;justify-content:space-between;flex-wrap:wrap;border:1px solid var(--line);border-top:0;border-radius:0 0 13px 13px;padding:12px;background:#102735;color:#9bb7be;font-size:10px}.line-dashed{display:inline-block;width:22px;vertical-align:middle;border-top:2px dashed #f2d091;margin-right:5px}.line-solid{display:inline-block;width:22px;vertical-align:middle;border-top:3px solid #68d8e9;margin-right:5px}
.compose,.box,.side{background:var(--pane);border:1px solid var(--line);border-radius:13px;padding:17px}.compose{margin-top:14px;border-color:#906f4c}.compose-title{display:flex;justify-content:space-between;gap:10px;align-items:center}.compose-title h3{font-size:16px;margin:0}.compose-title span,.hint{font-size:11px;color:#9fb7be;line-height:1.7}.compose-title span{color:#dec79c}.two-fields{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:13px}.compose-actions{display:flex;align-items:center;gap:8px;margin-top:10px;flex-wrap:wrap}.hidden{display:none!important}label{display:block;margin-top:11px;color:#c5d6da;font-size:11px}input,select{width:100%;display:block;color:#ecf4f3;background:#0a2130;border:1px solid #345766;border-radius:7px;padding:10px 11px;margin-top:6px;font:inherit;font-size:12px;outline:none}input:focus,select:focus{border-color:var(--gold)}.below{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-top:16px}.box h3,.side h3{font-size:17px;font-weight:660;margin:8px 0 11px}.earth{display:block;width:100%;border:1px solid #385967;border-radius:9px;margin-top:15px}.chips{display:flex;gap:7px;flex-wrap:wrap;margin:14px 0}.chip{background:#1a3a46;border:1px solid #3e5f6b;border-radius:14px;padding:5px 9px;color:#dce8e9;font-size:10px}.chip b{color:var(--gold)}.timeline{margin-top:14px;display:flex;flex-direction:column;gap:5px;max-height:246px;overflow:auto}.time-row{display:flex;gap:10px;align-items:center;padding:7px 10px;background:#14313e;border-radius:5px;font-size:11px}.time-row b{font-weight:530;color:#e8c387;min-width:95px;font-variant-numeric:tabular-nums}.time-row span{color:#d6e7e8}.time-row small{margin-left:auto;color:#7898a5}.feed-box{margin-top:16px}.feed{display:grid;grid-template-columns:1fr 1fr;gap:7px;max-height:260px;overflow:auto}.feed-item{border-left:2px solid #4e8292;background:#142d3b;padding:9px 10px;color:#d3e5e5;font-size:11px;line-height:1.7;border-radius:4px}.feed-item time{display:block;color:#8ba9b0;font-size:10px}
.sidebar{display:flex;flex-direction:column;gap:13px}.identity{background:linear-gradient(145deg,#263d43,#102633 78%);border-color:#776855}.side p{margin:5px 0 12px}.identity-live{display:flex;align-items:center;gap:10px}.avatar{width:38px;height:38px;background:#345767;color:#f4d2a1;border-radius:50%;display:grid;place-items:center}.profile{flex:1;min-width:0}.profile>*{display:block}.profile strong{font-size:14px}.profile span{font-size:11px;color:#bad0d3}.profile small{font-size:10px;color:#7c99a5}.message{min-height:12px;color:#a3d4c9;font-size:11px;line-height:1.6}.message.error{color:#f5b5a9}.side-head{display:flex;align-items:flex-end;justify-content:space-between;gap:8px}.linkbtn{border:0;background:transparent;cursor:pointer;color:var(--gold);font-size:11px}.projects,.handoffs{display:flex;flex-direction:column;gap:8px;max-height:340px;overflow:auto;margin-top:10px}.project{cursor:pointer;text-align:left;background:#0c2330;border:1px solid #32505e;border-radius:9px;padding:10px 11px;color:#e4edeb}.project:hover,.project.active{border-color:#e7bc80;background:#263b40}.project strong{display:flex;align-items:center;gap:6px;font-size:13px;font-weight:650}.project small{display:block;color:#9fb5bd;font-size:10px;margin-top:7px}.project i{height:9px;width:9px;display:inline-block;border-radius:50%}.actions{display:grid;grid-template-columns:1fr 1fr;gap:7px}.space-top{margin-top:22px}.handoff{border:1px solid #375564;background:#0b2231;border-radius:8px;padding:11px;color:#b6d0d8;font-size:11px;line-height:1.7}.handoff b{color:#f1cb94}.handoff .btn{margin-top:7px}.boundary{background:#0c222d}.boundary p:last-child{color:#d7b68f}footer{color:#7d98a2;text-align:center;font-size:10px;padding:24px 0}
@media(max-width:1330px){.layout{grid-template-columns:minmax(0,1fr) 300px}.hero-stats{min-width:390px}.hero h1{font-size:34px}}
@media(max-width:1030px){.layout{grid-template-columns:1fr}.sidebar{display:grid;grid-template-columns:1fr 1fr}.detail{grid-column:1/3}.hero{flex-direction:column;align-items:start}.hero-stats{width:100%}}
@media(max-width:650px){.shell{padding:0 10px}.topbar{height:68px}.brand{font-size:14px}.meta,.pill{display:none}.hero{padding:25px 0}.hero h1{font-size:27px}.hero p{font-size:12px}.hero-stats{grid-template-columns:1fr 1fr;gap:15px}.hero-stats b{font-size:24px}.below,.sidebar,.two-fields,.feed{grid-template-columns:1fr}.detail{grid-column:1}.section-head h2{font-size:17px}.tag{display:none}.toolbar .btn{font-size:10px;padding:7px}.palette{margin-left:0}.canvas-foot{font-size:9px}.compose-title{display:block}.compose-title span{display:block;margin-top:7px}}
/* v0.3 meaningful composition controls */
.assignment-strip{display:flex;gap:11px;align-items:center;flex-wrap:wrap;background:#112a37;border:1px solid var(--line);border-bottom:0;padding:11px 15px}
.assignment-strip label{font-size:10px;min-width:135px;flex:1;max-width:205px;margin:0;color:#d4e2e4}
.assignment-strip select{margin-top:4px;padding:7px 8px;max-width:100%}.assignment-strip .hint{flex:1;min-width:200px;font-size:10px}
.composition-panel{border-color:#67847d;background:linear-gradient(150deg,#153139,#0d2634 62%)}
.composition-panel h4{font-size:12px;font-weight:650;color:#f0d4a8;margin:10px 0 4px}
.composition-summary{display:grid;grid-template-columns:repeat(3,1fr);gap:6px;margin:12px 0}
.composition-summary>div{background:#112937;border:1px solid #3d6370;border-radius:7px;padding:8px 4px;text-align:center;font-size:10px;color:#aac5c8}
.composition-summary strong{display:block;font-size:19px;color:#f4d5ac;font-variant-numeric:tabular-nums}
.layer-list,.zone-list,.goal-list{display:flex;flex-direction:column;gap:7px;margin-top:9px}
.comp-item{background:#0a222e;border:1px solid #34525f;border-radius:9px;padding:9px 11px;color:#e6efef}
.comp-item.selected{border-color:#e5b876;background:#1c3a42}
.comp-head{display:flex;gap:8px;align-items:center;justify-content:space-between}
.comp-head strong{font-size:12px;line-height:1.5;max-width:195px;overflow-wrap:anywhere}
.comp-item p{font-size:10px;color:#a3bfca;line-height:1.5;margin:5px 0}
.comp-meta{color:#9fbbc4;font-size:10px;margin-top:4px;line-height:1.6}
.comp-actions{display:flex;gap:5px;flex-wrap:wrap;margin-top:7px}
.comp-actions button{font-size:10px;padding:5px 7px;white-space:normal}
.add-inline{display:grid;grid-template-columns:1fr auto;gap:6px;align-items:end}.add-inline input{margin:3px 0 0}
.compositionPanel .linkbtn{white-space:nowrap}
@media(max-width:700px){.assignment-strip{gap:6px}.assignment-strip label{min-width:105px}.assignment-strip .hint{min-width:100%;font-size:10px}.comp-head strong{max-width:none}}

.plan-toggle{display:flex!important;align-items:center;gap:6px;flex:0 0 auto!important;min-width:90px!important;font-size:10px!important;white-space:nowrap}.plan-toggle input{margin:0!important;display:inline-block!important;width:14px!important;accent-color:#e9c58d}

/* v0.4: usable actual painting tools, not planning-only controls */
.illustration-strip{display:flex;flex-wrap:wrap;align-items:center;gap:9px 16px;background:#102533;border:1px solid var(--line);border-bottom:0;padding:8px 12px}
.illustration-strip label{font-size:10px;min-width:125px;max-width:220px;flex:0 1 auto;margin:0;color:#e6d6b7}
.illustration-strip select{margin:3px 0 0;padding:7px 9px}
.illustration-strip input[type=range]{appearance:auto;margin:5px 0 0;padding:0;height:18px;accent-color:#eed09c;min-width:120px}
.illustration-strip b{font-variant-numeric:tabular-nums;color:#ffdda2}
.illustration-strip .hint{flex:1;min-width:160px;max-width:400px}
.illustration-strip button{font-size:11px}
@media(max-width:700px){.illustration-strip{gap:9px}.illustration-strip label{min-width:110px}.illustration-strip .hint{min-width:100%}}
