:root{--navy:#0c1830;--blue:#2f6fed;--bg:#f5f7fb;--card:#fff;--text:#172033;--muted:#738096;--line:#e7ebf2;--radius:18px;--shadow:0 10px 30px rgba(22,34,55,.07)}*{box-sizing:border-box}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;background:var(--bg);color:var(--text)}a{text-decoration:none;color:inherit}.shell{display:grid;grid-template-columns:240px 1fr;min-height:100vh}.side{background:var(--navy);color:#fff;padding:28px 18px}.brand{font-size:21px;font-weight:750;letter-spacing:.2px}.tag{font-size:11px;opacity:.55;margin:6px 0 30px}.nav a{display:block;padding:11px 13px;border-radius:12px;color:#c9d3e7;margin:3px 0}.nav a.active,.nav a:hover{background:rgba(255,255,255,.09);color:#fff}.main{padding:34px 40px}.top{display:flex;justify-content:space-between;align-items:center;margin-bottom:28px}.top h1{margin:0;font-size:28px}.muted{color:var(--muted)}.cards{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px}.card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:22px}.metric{font-size:30px;font-weight:750;margin-top:8px}.btn{display:inline-flex;align-items:center;justify-content:center;border:0;border-radius:12px;padding:11px 16px;background:var(--blue);color:white;font-weight:650;cursor:pointer}.btn.secondary{background:#edf2ff;color:#275dcc}.auth{min-height:100vh;display:grid;place-items:center;padding:24px}.auth-card{width:min(430px,100%);background:#fff;border:1px solid var(--line);border-radius:24px;box-shadow:var(--shadow);padding:34px}.auth-card h1{margin:0 0 6px}.field{margin:16px 0}.field label{display:block;font-size:13px;font-weight:650;margin-bottom:7px}.field input{width:100%;padding:12px 13px;border:1px solid #dce2eb;border-radius:11px;font-size:15px}.error{background:#fff1f1;color:#a32929;border-radius:12px;padding:11px 13px;margin:14px 0}.ok{background:#effaf4;color:#246b43;border-radius:12px;padding:11px 13px;margin:14px 0}.project{margin-top:18px}.project strong{display:block;font-size:17px}.pill{display:inline-block;margin-top:10px;font-size:12px;padding:5px 9px;border-radius:99px;background:#eef3ff;color:#315da8}@media(max-width:800px){.shell{grid-template-columns:1fr}.side{display:none}.main{padding:24px}.cards{grid-template-columns:1fr}}

.side{position:relative}.side-foot{position:absolute;left:31px;bottom:26px;font-size:10px;line-height:1.45;color:#71809b}.hero,.project-hero{background:linear-gradient(135deg,#fff,#f5f8ff);border:1px solid var(--line);border-radius:24px;padding:28px 30px;margin-bottom:20px;display:flex;align-items:center;justify-content:space-between;box-shadow:var(--shadow)}.hero h2,.project-hero h2{font-size:30px;margin:5px 0 6px}.hero p,.project-hero p{margin:0;color:var(--muted)}.eyebrow{font-size:11px;font-weight:800;letter-spacing:.12em;color:#5f73a0}.section-card{margin-top:18px}.section-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}.small{font-size:12px}.text-link{font-size:13px;color:var(--blue);font-weight:650}.empty{padding:34px 8px 18px;display:flex;flex-direction:column;align-items:flex-start;gap:8px}.empty span{color:var(--muted);margin-bottom:8px}.project-list{margin-top:8px}.project-row{display:flex;justify-content:space-between;align-items:center;padding:16px 4px;border-top:1px solid var(--line)}.project-row:first-child{border-top:0}.project-row strong,.project-row span{display:block}.project-row>div:first-child span{font-size:13px;color:var(--muted);margin-top:4px}.project-meta{text-align:right;display:flex;align-items:center;gap:14px}.project-meta>span:first-child{font-size:13px;color:var(--muted)}.pill.big{padding:7px 12px}.health{font-weight:650;margin-top:13px}.health i{display:inline-block;width:8px;height:8px;border-radius:50%;background:#32a56d;margin-right:7px}.user-chip{font-size:13px;color:var(--muted)}.user-chip span{opacity:.45}.form-wrap{max-width:780px;margin:0 auto}.form-title{margin:7px 0 4px}.form-grid,.grid-2{display:grid;grid-template-columns:1fr 1fr;gap:16px}.field select{width:100%;padding:12px 13px;border:1px solid #dce2eb;border-radius:11px;font-size:15px;background:#fff;color:var(--text)}.form-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:24px}.btn.ghost{background:#fff;color:var(--text);border:1px solid var(--line)}.tabs{display:flex;gap:4px;overflow:auto;margin:4px 0 20px;padding-bottom:2px}.tabs a{white-space:nowrap;padding:9px 12px;border-radius:10px;font-size:13px;color:var(--muted)}.tabs a.active{background:#eaf0ff;color:#275dcc;font-weight:700}.detail-row{display:flex;justify-content:space-between;padding:14px 0;border-top:1px solid var(--line);margin-top:10px}.detail-row+ .detail-row{margin-top:0}.detail-row span{color:var(--muted)}
@media(max-width:800px){.hero,.project-hero{align-items:flex-start;gap:20px}.form-grid,.grid-2{grid-template-columns:1fr}.project-row{align-items:flex-start;gap:12px}.project-meta{display:block}.project-meta .pill{margin-top:7px}}

/* v0.2.1 — project period / event period */
.period-block{margin-top:22px;padding:18px 20px 4px;border:1px solid #e4eaf3;border-radius:18px;background:#fbfcfe}.period-head{display:flex;justify-content:space-between;gap:16px;margin-bottom:14px}.period-head strong{display:block;font-size:15px;color:#162238}.period-head span{display:block;margin-top:3px;font-size:13px;color:#7a879d}.notice.warning{margin:16px 0;padding:14px 16px;border-radius:14px;background:#fff8e8;border:1px solid #f0dfb4;color:#7b5b16;font-weight:600}

/* v0.2.2 — lean project creation + technical UI typography */
:root{--ui-font:"Aptos","SF Pro Text","Helvetica Neue",Arial,sans-serif;--ui-font-display:"Aptos Display","SF Pro Display","Helvetica Neue",Arial,sans-serif}
body{font-family:var(--ui-font);letter-spacing:0}.project-create-card{padding:30px 32px}.project-create-card .form-title{font-family:var(--ui-font-display);font-size:27px;font-weight:600;letter-spacing:.012em;margin-top:8px}.project-create-card .form-intro{margin-top:7px;margin-bottom:24px;font-weight:300;letter-spacing:0}.project-create-card .field label,.section-kicker,.check-row{font-size:11px;font-weight:600;letter-spacing:.095em}.project-create-card .field label{color:#354158}.section-kicker{color:#5f73a0;margin-bottom:13px}.event-date-block{margin-top:22px;padding-top:21px;border-top:1px solid var(--line)}.check-row{display:inline-flex;align-items:center;gap:9px;color:#34425a;cursor:pointer;margin-bottom:4px}.check-row input{width:16px;height:16px;accent-color:var(--blue)}.event-date-fields{transition:opacity .16s ease}.event-date-fields.is-disabled{opacity:.38}.field-note{font-size:12px;font-weight:300;color:var(--muted);margin-top:1px}.project-create-card .btn{letter-spacing:.035em}.project-create-card input,.project-create-card select{font-family:var(--ui-font)}
@media(max-width:800px){.project-create-card{padding:23px 20px}}

/* v0.2.3 — refined KCEP typography */
.eyebrow{font-weight:600;letter-spacing:.11em}.project-create-card input,.project-create-card select{font-weight:400;letter-spacing:0}.project-create-card .btn{font-weight:600;letter-spacing:.025em}.project-create-card .section-kicker{font-weight:600}.project-create-card .check-row{font-weight:600}

/* v0.3.0 — organization branding + first real PLAN workspace */
.workspace-brand{display:flex;align-items:center;gap:11px;padding:3px 8px 25px;color:#fff}.workspace-brand img{width:108px;max-height:42px;object-fit:contain;object-position:left center;filter:drop-shadow(0 2px 4px rgba(0,0,0,.18))}.workspace-brand div{display:none}.workspace-brand span{font-size:12px;font-weight:600}.workspace-brand small{display:block;font-size:8px;letter-spacing:.12em;color:#71809b;margin-top:2px}.side-foot b{color:#aab6ca;font-weight:600;letter-spacing:.12em}.project-tabs{border-bottom:1px solid var(--line);padding-bottom:10px}.module-head{display:flex;justify-content:space-between;align-items:flex-end;gap:24px;margin:8px 0 22px}.module-head h2{font-family:var(--ui-font-display);font-size:30px;font-weight:600;letter-spacing:.02em;margin:5px 0 5px}.module-head p{margin:0;max-width:700px;font-weight:300}.plan-stats{display:flex;gap:22px;color:var(--muted);font-size:10px;letter-spacing:.09em;white-space:nowrap}.plan-stats b{font-size:20px;font-weight:500;color:var(--text);display:block;letter-spacing:0}.plan-workspace{display:grid;grid-template-columns:1fr 1fr;gap:18px}.plan-panel,.object-section{box-shadow:none}.panel-head{display:flex;justify-content:space-between;align-items:flex-start;gap:20px;margin-bottom:16px}.panel-head h3{font-size:18px;font-weight:550;margin:3px 0}.plan-item{display:flex;justify-content:space-between;align-items:center;padding:12px 2px;border-top:1px solid var(--line)}.plan-item strong,.plan-item small{display:block}.plan-item strong{font-size:14px;font-weight:550}.plan-item small{font-size:10px;color:var(--muted);letter-spacing:.08em;margin-top:3px}.status-dot{width:7px;height:7px;border-radius:50%;background:#35a66f}.mini-empty{padding:14px 0 18px;color:var(--muted);font-size:13px;font-weight:300}.quick-form{display:grid;grid-template-columns:minmax(0,1fr) 145px auto;gap:8px;border-top:1px solid var(--line);padding-top:15px}.quick-form input,.quick-form select,.object-form input,.object-form select{width:100%;border:1px solid #dce2eb;border-radius:10px;background:#fff;color:var(--text);padding:10px 11px;font-family:var(--ui-font);font-size:12px}.quick-form input::placeholder,.object-form input::placeholder{color:#9aa5b6;letter-spacing:.025em}.object-section{margin-top:18px}.object-form{display:grid;grid-template-columns:180px minmax(220px,1fr) 150px 180px auto;gap:8px;padding:14px 0 18px;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}.object-row{display:grid;grid-template-columns:38px minmax(220px,1fr) 180px auto;align-items:center;gap:12px;padding:13px 2px;border-bottom:1px solid var(--line)}.object-type-badge{width:34px;height:34px;display:grid;place-items:center;border-radius:9px;background:#edf2ff;color:#315da8;font-size:10px;font-weight:700;letter-spacing:.06em}.object-name strong,.object-name small{display:block}.object-name strong{font-size:14px;font-weight:550}.object-name small{font-size:10px;color:var(--muted);letter-spacing:.07em;margin-top:3px}.object-zone{font-size:12px;color:var(--muted)}
@media(max-width:1000px){.plan-workspace{grid-template-columns:1fr}.object-form{grid-template-columns:1fr 1fr}.object-row{grid-template-columns:38px 1fr auto}.object-zone{display:none}}
@media(max-width:800px){.module-head{align-items:flex-start;flex-direction:column}.plan-stats{width:100%;justify-content:space-between}.quick-form,.object-form{grid-template-columns:1fr}.workspace-brand img{width:96px}}

/* v0.3.1 — PLAN UX v2: click → add → edit only when needed */
.plan-v2-shell{display:grid;grid-template-columns:260px minmax(460px,1fr) 285px;gap:14px;align-items:stretch}.plan-library,.plan-stage,.object-drawer{box-shadow:none;padding:18px;min-height:620px}.library-title h3,.stage-toolbar h3,.drawer-head h3{margin:3px 0;font-size:18px;font-weight:600}.library-search{width:100%;border:1px solid var(--line);border-radius:11px;padding:10px 12px;font-family:var(--ui-font);margin:8px 0 18px}.library-group{margin:0 0 18px}.library-group-title{font-size:10px;font-weight:600;letter-spacing:.1em;color:var(--muted);margin-bottom:8px}.preset-grid{display:grid;grid-template-columns:1fr 1fr;gap:7px}.preset-form{margin:0}.preset-tile{width:100%;min-height:78px;text-align:left;border:1px solid #e1e7f0;background:#fbfcff;border-radius:12px;padding:10px;cursor:pointer;color:var(--text);font-family:var(--ui-font);transition:.15s ease}.preset-tile:hover{border-color:#b9c9ec;background:#f4f7ff;transform:translateY(-1px)}.preset-tile>span:nth-child(2){display:block;font-size:11px;font-weight:600;line-height:1.15;margin-top:7px}.preset-tile small{display:block;color:var(--muted);font-size:8px;letter-spacing:.06em;margin-top:3px}.preset-icon{width:25px;height:25px;border-radius:7px;background:#eaf0ff;color:#315da8;display:grid!important;place-items:center;font-size:8px;font-weight:700}.stage-toolbar{display:flex;justify-content:space-between;align-items:center;padding-bottom:14px;border-bottom:1px solid var(--line)}.toolbar-actions{display:flex;gap:7px}.btn.compact{padding:8px 11px;font-size:11px}.stage-empty{height:470px;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;gap:8px}.stage-empty strong{font-size:19px}.stage-empty span{font-size:13px;color:var(--muted);margin-bottom:8px}.workspace-board{position:relative;min-height:500px;margin-top:14px;border:1px dashed #d9e1ed;border-radius:15px;background:linear-gradient(#fbfcfe,#f7f9fd);overflow:hidden;padding:16px}.workspace-board:before{content:"";position:absolute;inset:0;background-image:linear-gradient(rgba(78,98,135,.035) 1px,transparent 1px),linear-gradient(90deg,rgba(78,98,135,.035) 1px,transparent 1px);background-size:24px 24px;pointer-events:none}.board-label{position:relative;font-size:9px;letter-spacing:.12em;color:#9aa6b8}.zone-strip{position:relative;display:flex;gap:6px;flex-wrap:wrap;margin:14px 0}.zone-chip{border:0;border-radius:99px;background:#eaf0ff;color:#315da8;padding:6px 9px;font-size:9px;font-weight:600;letter-spacing:.04em}.zone-chip.dashed{border:1px dashed #b9c6dc;background:transparent;color:#71809a;cursor:pointer}.object-cards{position:relative;display:grid;grid-template-columns:repeat(auto-fill,minmax(155px,1fr));gap:8px;margin-top:18px}.board-object{display:flex;align-items:center;gap:9px;border:1px solid #e0e6ef;background:#fff;border-radius:12px;padding:10px;color:var(--text);min-height:57px}.board-object:hover,.board-object.selected{border-color:#9eb7ea;box-shadow:0 5px 18px rgba(38,67,116,.07)}.board-object strong,.board-object small{display:block}.board-object strong{font-size:11px;font-weight:600}.board-object small{font-size:9px;color:var(--muted);margin-top:3px}.board-hint{grid-column:1/-1;padding:70px 20px;text-align:center;color:var(--muted);font-size:13px;font-weight:300}.object-drawer{background:#fbfcff}.drawer-empty{height:100%;display:flex;flex-direction:column;justify-content:center;align-items:flex-start;gap:7px;color:var(--muted)}.drawer-empty strong{font-size:17px;color:var(--text)}.drawer-empty span{font-size:12px;line-height:1.45}.drawer-head{display:flex;justify-content:space-between;gap:10px;border-bottom:1px solid var(--line);padding-bottom:13px}.drawer-close{font-size:24px;color:var(--muted);line-height:1}.drawer-form{display:grid;gap:14px;margin-top:16px}.drawer-form label{font-size:9px;font-weight:600;letter-spacing:.09em;color:#53617a}.drawer-form input,.drawer-form select{width:100%;margin-top:6px;border:1px solid #dce2eb;border-radius:10px;padding:10px 11px;background:#fff;font-family:var(--ui-font);font-size:12px}.drawer-secondary{margin-top:9px}.drawer-secondary .btn{width:100%}.kcep-modal{position:fixed;inset:0;background:rgba(14,25,45,.28);backdrop-filter:blur(4px);display:none;place-items:center;z-index:1000;padding:20px}.kcep-modal.show{display:grid}.modal-card{position:relative;width:min(560px,100%);background:#fff;border:1px solid var(--line);border-radius:20px;box-shadow:0 24px 80px rgba(18,34,60,.2);padding:24px}.modal-card h3{margin:4px 0 18px;font-size:21px}.modal-x{position:absolute;right:17px;top:14px;border:0;background:transparent;font-size:25px;color:var(--muted);cursor:pointer}.choice-grid{display:grid;grid-template-columns:1fr 1fr;gap:9px}.choice{width:100%;min-height:92px;border:1px solid #e0e6ef;background:#fbfcff;border-radius:13px;text-align:left;padding:14px;cursor:pointer;font-family:var(--ui-font);color:var(--text)}.choice:hover{background:#f4f7ff;border-color:#b8c8e8}.choice strong,.choice span{display:block}.choice strong{font-size:12px;letter-spacing:.035em}.choice span{font-size:11px;color:var(--muted);margin-top:5px}.zone-choices .choice{min-height:58px}.custom-zone{display:grid;grid-template-columns:1fr auto;gap:8px;margin-top:10px}.custom-zone input{border:1px solid #dce2eb;border-radius:10px;padding:10px 11px;font-family:var(--ui-font)}
@media(max-width:1250px){.plan-v2-shell{grid-template-columns:230px 1fr}.object-drawer{grid-column:1/-1;min-height:auto}.drawer-empty{display:none}.object-drawer.is-open{display:block}.object-drawer:not(.is-open){display:none}}
@media(max-width:800px){.plan-v2-shell{grid-template-columns:1fr}.plan-library,.plan-stage,.object-drawer{min-height:auto}.preset-grid{grid-template-columns:repeat(2,1fr)}.workspace-board{min-height:390px}.choice-grid{grid-template-columns:1fr}.plan-v2-head p{display:none}}

/* v0.3.2 — PLAN Canvas v1 + project hierarchy + multi-select */
.plan-v3-shell{display:grid;grid-template-columns:270px minmax(560px,1fr) 285px;gap:14px;align-items:stretch}.plan-panel-tabs{display:grid;grid-template-columns:1fr 1fr;gap:4px;background:#f2f5fa;padding:4px;border-radius:11px;margin-bottom:12px}.panel-tab{border:0;background:transparent;border-radius:8px;padding:9px 7px;font:600 9px var(--ui-font);letter-spacing:.09em;color:var(--muted);cursor:pointer}.panel-tab.active{background:#fff;color:var(--text);box-shadow:0 1px 4px rgba(22,38,65,.08)}.panel-tab span{opacity:.65}.panel-view{display:none}.panel-view.active{display:block}.project-tree-actions{display:flex;justify-content:flex-end;margin:2px 0 8px}.tree-link{border:0;background:transparent;color:#61708a;font:600 8px var(--ui-font);letter-spacing:.08em;cursor:pointer}.tree-zone{border-top:1px solid var(--line);padding:9px 0}.tree-zone summary{display:flex;justify-content:space-between;align-items:center;cursor:pointer;list-style:none;font-size:10px;font-weight:650;letter-spacing:.06em}.tree-zone summary::-webkit-details-marker{display:none}.tree-zone summary:before{content:'▾';font-size:9px;color:#7d8aa1;margin-right:6px}.tree-zone:not([open]) summary:before{content:'▸'}.tree-zone summary span{flex:1}.tree-zone summary b{font-size:9px;background:#eef2f8;border-radius:20px;padding:3px 7px;color:#63718a}.tree-object{width:100%;border:0;background:transparent;display:flex;gap:8px;align-items:center;text-align:left;padding:7px 4px;border-radius:9px;cursor:pointer;color:var(--text);font-family:var(--ui-font)}.tree-object:hover,.tree-object.multi-selected{background:#eef4ff}.tree-object .object-type-badge{width:26px;height:26px;border-radius:7px;font-size:7px}.tree-object strong,.tree-object small{display:block}.tree-object strong{font-size:10px;font-weight:550}.tree-object small{font-size:8px;color:var(--muted);margin-top:2px}.canvas-v1{min-height:590px;padding:16px;position:relative;touch-action:none}.canvas-help{position:relative;z-index:2;display:flex;gap:10px;align-items:center;color:#8794a8;font-size:9px}.canvas-help b{font-size:9px;letter-spacing:.11em;color:#62718a}.canvas-help span{font-weight:300}.canvas-object{position:absolute;z-index:3;transform:translate(-50%,-50%);display:flex;align-items:center;gap:8px;min-width:128px;max-width:185px;border:1px solid #dce4ef;background:rgba(255,255,255,.96);border-radius:12px;padding:8px 10px;text-align:left;color:var(--text);font-family:var(--ui-font);box-shadow:0 3px 12px rgba(35,55,88,.055);cursor:grab;user-select:none}.canvas-object:active{cursor:grabbing}.canvas-object:hover,.canvas-object.selected{border-color:#94afe8}.canvas-object.multi-selected{border-color:#3474ef;background:#f0f5ff;box-shadow:0 0 0 2px rgba(52,116,239,.12)}.canvas-object .object-type-badge{width:27px;height:27px;flex:0 0 27px;font-size:7px}.canvas-object strong,.canvas-object small{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.canvas-object strong{font-size:10px;font-weight:600}.canvas-object small{font-size:8px;color:var(--muted);margin-top:2px}.canvas-v1 .zone-strip{position:absolute;z-index:2;left:16px;bottom:14px;margin:0;max-width:80%}.bulk-drawer h3{font-size:18px;margin:5px 0 7px}.bulk-drawer p{font-size:11px;line-height:1.45}.bulk-drawer form{display:grid;gap:10px;margin:18px 0 9px}.bulk-drawer label{font-size:9px;font-weight:600;letter-spacing:.09em;color:#53617a}.bulk-drawer select{width:100%;margin-top:6px;border:1px solid #dce2eb;border-radius:10px;padding:10px 11px;background:#fff;font-family:var(--ui-font)}.bulk-drawer>.btn{width:100%}
@media(max-width:1250px){.plan-v3-shell{grid-template-columns:240px 1fr}.plan-v3-shell .object-drawer{grid-column:1/-1;min-height:auto}.canvas-v1{min-height:520px}}@media(max-width:800px){.plan-v3-shell{grid-template-columns:1fr}.canvas-v1{min-height:430px}.canvas-help span{display:none}}

/* v0.3.3 — PLAN UX correction: stable 3-panel workspace + explicit ZONE → OBJECT hierarchy */
.plan-v3-shell{display:grid!important;grid-template-columns:260px minmax(520px,1fr) 290px!important;gap:14px!important;align-items:stretch!important}
.plan-v3-shell>.plan-library,.plan-v3-shell>.plan-stage,.plan-v3-shell>.object-drawer{min-width:0}
.plan-panel-tabs{display:grid!important;grid-template-columns:1fr 1fr!important;gap:4px!important;background:#f2f5fa!important;padding:4px!important;border-radius:11px!important;margin-bottom:12px!important}
.panel-view{display:none!important}.panel-view.active{display:block!important}
.preset-grid{display:grid!important;grid-template-columns:1fr 1fr!important;gap:7px!important}.preset-tile{min-width:0!important}
.project-tree-head{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:3px 2px 12px;border-bottom:1px solid var(--line)}
.project-tree-head>div{display:flex;flex-direction:column;gap:3px}.tree-kicker{font-size:8px;letter-spacing:.11em;color:#8190a7;font-weight:600}.project-tree-head strong{font-size:11px;letter-spacing:.045em;font-weight:600;color:#28364e}
.tree-zone{border:1px solid #e1e7f0!important;border-radius:12px!important;padding:0!important;margin:10px 0!important;overflow:hidden;background:#fbfcff}
.tree-zone summary{min-height:43px;padding:8px 10px!important;background:#f4f7fb;gap:7px}
.tree-zone summary:before{margin-right:0!important}.tree-zone-main{display:flex!important;align-items:center;gap:7px;min-width:0}.tree-zone-main i{font-style:normal;font-size:7px;letter-spacing:.1em;color:#5270a9;background:#e7eefc;border-radius:5px;padding:4px 5px}.tree-zone-main>span{font-size:10px;font-weight:650;letter-spacing:.055em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tree-zone summary b{font-size:7px!important;letter-spacing:.06em!important;background:#fff!important;border:1px solid #e1e7f0;color:#71809a!important;white-space:nowrap}
.tree-object{position:relative;padding:8px 9px 8px 25px!important;border-radius:0!important;border-top:1px solid #edf1f6!important;background:#fff!important}
.tree-object:before{content:"";position:absolute;left:13px;top:0;bottom:0;width:1px;background:#dfe6f0}.tree-object:after{content:"";position:absolute;left:13px;top:50%;width:8px;height:1px;background:#dfe6f0}
.tree-object:hover,.tree-object.multi-selected{background:#f3f7ff!important}.tree-object .object-type-badge{z-index:1;background:#edf2ff}
.tree-object strong{font-size:10px!important}.tree-object small{font-size:7px!important;letter-spacing:.045em;text-transform:uppercase}
.canvas-v1{min-height:590px!important}.canvas-zone-legend{position:absolute;z-index:2;right:16px;top:14px;display:flex;gap:6px}.canvas-zone-legend span{font-size:7px;letter-spacing:.09em;font-weight:600;border-radius:6px;padding:5px 7px}.legend-zone{border:1px dashed #9fb0ca;background:rgba(234,240,255,.62);color:#4f6791}.legend-object{border:1px solid #dce4ef;background:#fff;color:#6c7b91}
.canvas-v1 .zone-strip{left:16px!important;bottom:14px!important;top:auto!important}.canvas-v1 .zone-chip{border:1px dashed #aebbd0!important;background:rgba(234,240,255,.72)!important;color:#4e6794!important}.canvas-v1 .zone-chip:before{content:"ZONE · ";font-size:7px;opacity:.65}
.canvas-object{border-style:solid!important}.canvas-object small:before{content:"OBJECT · ";font-size:7px;opacity:.6}.canvas-object.multi-selected{border-color:#3474ef!important}
.bulk-drawer{padding-top:2px}.bulk-drawer h3{font-weight:600}.bulk-drawer p{margin-top:0}
@media(max-width:1050px){.plan-v3-shell{grid-template-columns:230px minmax(460px,1fr)!important}.plan-v3-shell>.object-drawer{grid-column:1/-1!important;min-height:auto!important}.plan-v3-shell>.object-drawer:not(.is-open){display:none}.plan-v3-shell>.object-drawer.is-open{display:block}}
@media(max-width:700px){.plan-v3-shell{grid-template-columns:1fr!important}.plan-library,.plan-stage,.object-drawer{min-height:auto!important}.preset-grid{grid-template-columns:repeat(2,minmax(0,1fr))!important}.canvas-v1{min-height:430px!important}.canvas-help span{display:none}}

/* v0.3.4 — spatial PLAN model */
.canvas-v1{min-height:650px!important;background:linear-gradient(#fcfdff,#f8faff)!important}
.canvas-zone-area{position:absolute;z-index:1;border:1.5px dashed #86a8e8;border-radius:18px;background:rgba(63,116,220,.055);min-width:120px;min-height:90px;touch-action:none;cursor:move;box-shadow:inset 0 0 0 1px rgba(255,255,255,.55)}
.canvas-zone-area:hover{background:rgba(63,116,220,.075);border-color:#5e8ee7}
.zone-area-label{position:absolute;left:12px;top:10px;display:flex;align-items:center;gap:7px;max-width:calc(100% - 28px);pointer-events:none}
.zone-area-label span{font-size:7px;letter-spacing:.12em;font-weight:650;color:#5270a9;background:#e8effd;border-radius:5px;padding:4px 5px}
.zone-area-label strong{font-size:10px;letter-spacing:.055em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.zone-area-label em{font-style:normal;font-size:7px;color:#8190a8;white-space:nowrap}
.zone-resize{position:absolute;right:6px;bottom:6px;width:14px;height:14px;border-right:2px solid #7c9bd3;border-bottom:2px solid #7c9bd3;border-radius:0 0 4px 0;cursor:nwse-resize;opacity:.65}
.canvas-object{z-index:4!important}.canvas-object.status-confirmed,.canvas-object.status-ready{border-color:#9cc8ae!important}.canvas-object.status-confirmed:after,.canvas-object.status-ready:after{content:'✓';position:absolute;right:-5px;top:-6px;width:17px;height:17px;border-radius:50%;display:grid;place-items:center;background:#fff;border:1px solid #8fc3a5;font-size:9px;font-weight:800;color:#2f8655;box-shadow:0 2px 5px rgba(30,80,50,.08)}
.status-mark{font-style:normal;display:inline-grid;place-items:center;width:14px;height:14px;border-radius:50%;font-size:8px;margin-right:2px}.status-confirmed.status-mark,.status-ready.status-mark{background:#e7f5ec;color:#2f8655}
.tree-object:has(.status-mark){background:linear-gradient(90deg,rgba(54,142,88,.055),transparent 70%)}
.focus-pulse{animation:kcepFocusPulse 1.25s ease-out;z-index:8!important}@keyframes kcepFocusPulse{0%{box-shadow:0 0 0 0 rgba(52,116,239,.5)}45%{box-shadow:0 0 0 10px rgba(52,116,239,.13)}100%{box-shadow:0 0 0 18px rgba(52,116,239,0)}}
.canvas-zone-legend{z-index:6!important}.legend-zone{border-style:dashed!important;background:#f2f6ff!important}.legend-object{background:#fff!important}
@media(max-width:800px){.canvas-v1{min-height:520px!important}.zone-area-label em{display:none}}

/* v0.3.5 — PLAN Workspace v2 */
body.plan-focus-mode .side{width:0;min-width:0;overflow:hidden;border:0;padding:0}body.plan-focus-mode .main{margin-left:0;width:100%;padding:0}body.plan-focus-mode .main>.top,body.plan-focus-mode .project-tabs,body.plan-focus-mode .module-head{display:none}.plan-workspace-v2{height:100vh;background:#f4f7fb;color:#142036;display:flex;flex-direction:column;overflow:hidden}.plan-commandbar{height:58px;min-height:58px;background:#fff;border-bottom:1px solid #dfe6f0;display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:18px;padding:0 18px;z-index:30}.plan-command-left{display:flex;align-items:center;gap:14px;white-space:nowrap}.back-project{color:#52647f;text-decoration:none;font-size:12px;font-weight:600}.plan-command-left strong{font-size:13px;letter-spacing:.12em}.plan-view-tabs{display:flex;align-items:center;gap:4px;overflow:auto;scrollbar-width:none}.view-tab{border:0;background:transparent;border-radius:9px;padding:8px 11px;font:600 11px/1 inherit;color:#71809a;white-space:nowrap;cursor:pointer}.view-tab.active{background:#edf3ff;color:#255ec9}.view-tab.add-zone{font-size:16px;padding:5px 10px}.plan-command-right{display:flex;align-items:center;gap:7px}.tool-btn{border:1px solid #d9e1ed;background:#fff;color:#33445f;border-radius:9px;padding:8px 10px;font:600 10px/1 inherit;letter-spacing:.04em;cursor:pointer}.tool-btn.active{border-color:#7aa6ff;background:#edf4ff;color:#1f5fd0}.scale-state{font:700 9px/1 inherit;letter-spacing:.08em;color:#9aa6b8;padding:7px 8px}.scale-state.ready{color:#26905d}.plan-stage-shell{min-height:0;flex:1;display:grid;grid-template-columns:250px minmax(0,1fr) 286px;position:relative}.plan-project-rail{background:#fff;border-right:1px solid #e0e7f1;min-width:0;overflow:auto;transition:width .18s}.plan-project-rail.collapsed{width:46px}.plan-project-rail.collapsed .rail-search,.plan-project-rail.collapsed .project-tree-v2,.plan-project-rail.collapsed .rail-title span{display:none}.rail-title{height:44px;display:flex;align-items:center;justify-content:space-between;padding:0 12px;border-bottom:1px solid #edf1f6;font-size:10px;font-weight:700;letter-spacing:.12em}.rail-title button{border:0;background:#f3f6fb;border-radius:7px;width:25px;height:25px;cursor:pointer}.rail-search{padding:10px}.rail-search input,.library-search{width:100%;box-sizing:border-box;border:1px solid #dfe6f0;border-radius:9px;padding:9px 10px;font:400 12px inherit;background:#fbfcfe}.tree-zone-v2{border-bottom:1px solid #edf1f6}.tree-zone-head{width:100%;border:0;background:#f8faff;padding:9px 10px;display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:7px;text-align:left;cursor:pointer}.tree-zone-head strong{font-size:11px}.tree-zone-head em{font-style:normal;font-size:9px;color:#8190a7}.zone-symbol{font-size:8px;font-weight:700;letter-spacing:.08em;color:#4c72b8;background:#eaf1ff;border-radius:5px;padding:4px 5px}.tree-zone-items{display:block}.tree-zone-v2.collapsed .tree-zone-items{display:none}.tree-item-v2{width:100%;border:0;border-top:1px solid #f0f3f8;background:#fff;display:grid;grid-template-columns:25px 1fr 8px;align-items:center;gap:7px;text-align:left;padding:8px 10px 8px 20px;cursor:pointer;color:#24334d}.tree-item-v2:hover,.tree-item-v2.selected{background:#f0f5ff}.tree-item-v2>span:nth-child(2){font-size:10px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.type-dot{width:24px;height:24px;border-radius:7px;background:#edf3ff;color:#356bc9;display:grid;place-items:center;font-size:8px;font-weight:700}.status-dot{width:6px;height:6px;border-radius:50%;background:#c5cedb}.status-dot.s-confirmed{background:#36a36b}.status-dot.s-ready{background:#1f79d5}.plan-canvas-wrap{min-width:0;min-height:0;display:flex;flex-direction:column;padding:10px;background:#f4f7fb}.canvas-toolbar{height:38px;display:flex;align-items:center;justify-content:space-between;padding:0 3px}.selection-info{font:600 9px/1 inherit;letter-spacing:.08em;color:#8290a5}.spatial-canvas{position:relative;flex:1;min-height:0;background:#fff;border:1px solid #dce5f0;border-radius:14px;overflow:hidden;touch-action:none}.canvas-grid{position:absolute;inset:0;background-image:linear-gradient(#eef3f8 1px,transparent 1px),linear-gradient(90deg,#eef3f8 1px,transparent 1px);background-size:24px 24px;opacity:.72}.zone-area-v2{position:absolute;border:1.5px dashed #79a4ef;background:rgba(74,127,224,.065);border-radius:12px;z-index:2;touch-action:none}.zone-area-v2.zone-muted{opacity:.14}.zone-caption{position:absolute;left:9px;top:8px;display:flex;align-items:center;gap:7px;pointer-events:none}.zone-caption span{font-size:7px;font-weight:700;letter-spacing:.1em;color:#4c72b8;background:#edf3ff;padding:4px 5px;border-radius:5px}.zone-caption strong{font-size:10px}.zone-caption small{font-size:8px;color:#8491a5}.zone-resize{position:absolute;right:5px;bottom:5px;width:12px;height:12px;border-right:2px solid #7aa3e8;border-bottom:2px solid #7aa3e8;cursor:nwse-resize}.map-object{position:absolute;z-index:6;transform:translate(-50%,-50%);border:1px solid #d7e0ec;background:#fff;border-radius:10px;box-shadow:0 4px 12px rgba(25,44,76,.07);height:36px;max-width:150px;padding:0 9px 0 6px;display:flex;align-items:center;gap:6px;cursor:grab;touch-action:none;color:#17243a}.map-object:active{cursor:grabbing}.map-object.object-muted{opacity:.12}.map-object.selected{border-color:#3477ef;box-shadow:0 0 0 2px rgba(52,119,239,.14),0 6px 18px rgba(25,44,76,.1)}.map-object.status-confirmed{border-color:#9ad0b2}.map-object.status-ready{border-color:#86b8e9}.map-icon{width:24px;height:24px;min-width:24px;border-radius:7px;background:#edf3ff;color:#356bc9;display:grid;place-items:center;font-size:8px;font-weight:700}.map-label{font-size:9px;font-weight:650;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.map-status{color:#27915e;font-size:11px;font-weight:800}.type-guard{width:32px;height:32px;padding:0;border-radius:50%;justify-content:center}.type-guard .map-label{display:none}.type-guard .map-icon{width:26px;height:26px;min-width:26px;border-radius:50%}.focus-pulse{animation:kcepPulse .65s ease}@keyframes kcepPulse{50%{box-shadow:0 0 0 7px rgba(52,119,239,.18)}}.object-drawer-v2{background:#fff;border-left:1px solid #e0e7f1;padding:14px;overflow:auto}.drawer-empty-v2{height:100%;display:flex;flex-direction:column;justify-content:center;align-items:center;text-align:center;color:#8b98aa;gap:6px}.drawer-empty-v2 strong{font-size:10px;letter-spacing:.1em;color:#66758c}.drawer-empty-v2 span{font-size:11px;max-width:180px}.drawer-head-v2{display:flex;align-items:flex-start;justify-content:space-between;border-bottom:1px solid #e7ecf3;padding-bottom:11px;margin-bottom:13px}.drawer-head-v2 span{font-size:8px;font-weight:700;letter-spacing:.11em;color:#5873a5}.drawer-head-v2 h3{font-size:17px;margin:4px 0 0}.drawer-head-v2 button{border:0;background:transparent;font-size:20px;color:#75839a;cursor:pointer}.object-drawer-v2 label{display:block;font-size:8px;font-weight:700;letter-spacing:.08em;color:#5f6f87;margin:12px 0}.object-drawer-v2 input,.object-drawer-v2 select{width:100%;box-sizing:border-box;margin-top:6px;border:1px solid #dce4ef;border-radius:9px;padding:9px 10px;background:#fff;font:500 11px inherit}.object-drawer-v2 .btn{width:100%;margin-top:4px}.drawer-note{font-size:10px;line-height:1.5;color:#7c899c}.library-drawer-v2{position:absolute;left:0;top:0;bottom:0;width:280px;background:#fff;border-right:1px solid #dfe6f0;box-shadow:12px 0 30px rgba(26,42,68,.08);padding:14px;z-index:40;transform:translateX(-105%);transition:transform .2s;overflow:auto}.library-drawer-v2.open{transform:translateX(0)}.lib-group{margin-top:15px}.lib-group>b{font-size:8px;letter-spacing:.1em;color:#6c7d96}.lib-grid{display:grid;grid-template-columns:1fr 1fr;gap:7px;margin-top:7px}.lib-item{min-height:54px;border:1px solid #dde5f0;border-radius:9px;background:#fff;text-align:left;padding:8px;display:flex;flex-direction:column;gap:5px;cursor:pointer}.lib-item:hover{border-color:#8db1ef;background:#f7faff}.lib-item span{font-size:7px;color:#4773c4}.lib-item strong{font-size:9px}.measure-overlay{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;z-index:20}.measure-overlay line{stroke:#2269df;stroke-width:2;stroke-dasharray:6 4}.measure-overlay text{fill:#1b4f9e;font:700 12px sans-serif;text-anchor:middle;paint-order:stroke;stroke:#fff;stroke-width:4px}.kcep-modal{z-index:100}
@media(max-width:1050px){.plan-stage-shell{grid-template-columns:210px minmax(0,1fr)}.object-drawer-v2{position:absolute;right:0;top:0;bottom:0;width:270px;z-index:35;box-shadow:-12px 0 28px rgba(26,42,68,.08)}.plan-commandbar{grid-template-columns:auto 1fr}.plan-command-right{display:none}}
/* KCEP v0.3.7 PLAN UX polish */
.plan-view-tabs .view-tab{text-decoration:none;display:inline-flex;align-items:center}.view-tab.add-plan{border:1px dashed #cbd7e8;background:#fbfcff;color:#496789}.object-drawer-v2{position:relative;align-self:stretch;padding-top:14px}.object-drawer-v2>div:not(.drawer-empty-v2){margin-top:0}.drawer-danger{width:100%;margin-top:9px;border:1px solid #efcaca;background:#fff;color:#a43a3a;border-radius:9px;padding:9px 10px;font:700 9px/1 inherit;letter-spacing:.06em;cursor:pointer}.drawer-danger:hover{background:#fff5f5}.status-dot.s-ready{background:#2ca568}.status-dot.s-confirmed{background:#5f8fdf}.map-object.status-ready{border-color:#d7e0ec}.map-object.status-confirmed{border-color:#d7e0ec}.map-object.status-ready .map-status{width:18px;height:18px;border-radius:50%;display:grid;place-items:center;background:#e7f7ee;color:#24945b}.map-object.status-confirmed .map-status{width:18px;height:18px;border-radius:50%;display:grid;place-items:center;background:#edf3ff;color:#3f70c9}.plan-create-form{display:grid;gap:12px;margin-top:18px}.plan-create-form label{font-size:9px;font-weight:700;letter-spacing:.08em;color:#5f6f87}.plan-create-form input,.plan-create-form select{width:100%;box-sizing:border-box;margin-top:6px;border:1px solid #dce4ef;border-radius:9px;padding:10px 11px;background:#fff;font:500 12px inherit}.modal-help{font-size:11px;line-height:1.55;color:#7b899e;max-width:520px}.drawer-empty-v2{justify-content:flex-start;padding-top:42px;height:auto;min-height:160px}
/* v0.4.0 PLAN sources + OSM */
.plan-view-tabs .view-tab{gap:6px}.plan-view-tabs .view-tab small{font-size:7px;letter-spacing:.08em;opacity:.55}.canvas-context{display:flex;align-items:center;gap:9px;font-size:9px;color:#8390a3}.canvas-context b{font-size:10px;color:#35445b}.canvas-context>span:not(.selection-info){border:1px solid #dfe6ef;border-radius:99px;padding:4px 7px;font-size:7px;letter-spacing:.08em}.plan-background{position:absolute;inset:0;display:grid;place-items:center;background:#e9edf3;overflow:hidden}.plan-background img,.plan-background canvas{display:block;max-width:100%;max-height:100%;object-fit:contain;box-shadow:0 2px 18px rgba(20,34,54,.08)}.empty-plan-cta{position:absolute;inset:0;margin:auto;width:min(460px,70%);height:190px;border:1px dashed #b8c8dc;border-radius:18px;background:#fbfdff;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;padding:24px;color:#42546e;cursor:pointer}.empty-plan-cta strong{font-size:13px;letter-spacing:.08em}.empty-plan-cta span{max-width:360px;text-align:center;font-size:11px;line-height:1.5;color:#7b899c}.empty-plan-cta b{font-size:9px;color:#2e67c7;border:1px solid #c8d7f1;border-radius:8px;padding:8px 11px}.empty-plan-note{position:absolute;inset:0;display:grid;place-content:center;text-align:center;gap:7px;color:#8390a3}.empty-plan-note strong{font-size:11px;letter-spacing:.1em;color:#65758b}.empty-plan-note span{font-size:11px}.osm-map{position:absolute;inset:0;z-index:1}.map-help{position:absolute;left:50%;bottom:12px;transform:translateX(-50%);z-index:500;background:rgba(255,255,255,.92);border:1px solid #dbe3ee;border-radius:99px;padding:6px 10px;font-size:8px;color:#60718a;pointer-events:none}.leaflet-control-attribution{font-size:8px!important}.kcep-leaflet-icon{background:transparent!important;border:0!important;width:auto!important;height:auto!important;display:flex!important;align-items:center;gap:5px;white-space:nowrap}.kcep-leaflet-icon>span{width:25px;height:25px;border-radius:8px;background:#edf3ff;border:1px solid #cad8ee;color:#356bc9;display:grid;place-items:center;font:700 8px/1 sans-serif;box-shadow:0 2px 8px rgba(22,39,65,.12)}.kcep-leaflet-icon>b{background:#fff;border:1px solid #dbe3ee;border-radius:7px;padding:5px 7px;color:#26364f;font:650 9px/1 sans-serif;box-shadow:0 2px 8px rgba(22,39,65,.1)}.kcep-leaflet-icon>i{width:16px;height:16px;border-radius:50%;display:grid;place-items:center;font:800 9px/1 sans-serif;background:#f0f3f7;color:#8290a4}.kcep-leaflet-icon>i.s-ready{background:#e7f7ee;color:#24945b}.kcep-leaflet-icon>i.s-confirmed{background:#edf3ff;color:#3f70c9}.unplaced-tree .tree-zone-head{background:#fffaf0}.unplaced-item{opacity:.8}.place-dot{font-style:normal;color:#2f69c9;font-weight:800}.plan-wizard{width:min(680px,100%)}.plan-type-cards{display:grid;grid-template-columns:1fr 1fr;gap:9px;margin:14px 0 18px}.plan-type-card{border:1px solid #dde5ef;border-radius:13px;background:#fbfcfe;padding:14px;text-align:left;cursor:pointer;min-height:92px;color:#27364e}.plan-type-card.selected{border-color:#7fa7ea;background:#f1f6ff;box-shadow:0 0 0 2px rgba(73,119,201,.08)}.plan-type-card b,.plan-type-card span{display:block}.plan-type-card b{font-size:10px;letter-spacing:.08em}.plan-type-card span{font-size:10px;line-height:1.45;color:#7a899d;margin-top:7px}.wizard-name{display:block;font-size:9px;font-weight:700;letter-spacing:.08em;color:#5f6f87;margin-bottom:14px}.wizard-name input{width:100%;box-sizing:border-box;margin-top:6px;border:1px solid #dce4ef;border-radius:9px;padding:10px 11px;font:500 12px inherit}.pdf-fallback{padding:18px;background:#fff;border:1px solid #dbe3ed;border-radius:12px;font-size:11px}.pdf-fallback a{color:#2f67c4}.plan-type-map .measure-overlay{pointer-events:none;z-index:450}.plan-type-map .zone-area-v2,.plan-type-map>.map-object{display:none}
@media(max-width:800px){.plan-type-cards{grid-template-columns:1fr}.canvas-context b,.canvas-context>span:not(.selection-info){display:none}}

/* v0.4.1 — PLAN lifecycle cleanup */
.plan-empty-project{min-height:560px;display:grid;place-items:center;background:#f6f8fb;border:1px solid #e2e8f1;border-radius:16px;margin-top:18px}.plan-empty-inner{text-align:center;max-width:520px;padding:52px 30px}.plan-empty-inner h2{font-size:26px;letter-spacing:.025em;margin:8px 0 10px}.plan-empty-inner p{font-size:13px;line-height:1.6;color:#718096;margin:0 auto 24px}.view-tab small{font-size:7px;opacity:.55;margin-left:5px}.plan-menu{position:absolute;right:78px;top:52px;z-index:80;width:220px;background:#fff;border:1px solid #dfe6f0;border-radius:12px;box-shadow:0 14px 38px rgba(26,42,68,.14);padding:8px}.plan-menu>div{padding:8px 9px 10px;border-bottom:1px solid #edf1f6;margin-bottom:4px}.plan-menu b,.plan-menu small{display:block}.plan-menu b{font-size:11px}.plan-menu small{font-size:8px;color:#7d8ba0;letter-spacing:.08em;margin-top:3px}.plan-menu button{width:100%;border:0;background:transparent;border-radius:8px;padding:9px;text-align:left;font:600 9px inherit;letter-spacing:.05em;color:#52627a;cursor:pointer}.plan-menu button:hover{background:#f4f7fb}.plan-menu button.danger,.project-danger-open{color:#b44444}.zone-inspector-v2{position:absolute;right:0;top:0;bottom:0;width:286px;box-sizing:border-box;background:#fff;border-left:1px solid #e0e7f1;padding:14px;z-index:25}.drawer-danger{width:100%;border:1px solid #efcaca;background:#fff7f7;color:#b33f3f;border-radius:9px;padding:10px;font:700 9px inherit;letter-spacing:.06em;cursor:pointer;margin-top:10px}.danger-modal p{font-size:12px;line-height:1.55;color:#6e7c91}.danger-modal input{width:100%;box-sizing:border-box;border:1px solid #dce4ef;border-radius:9px;padding:10px;margin:10px 0 2px;font:500 12px inherit}.map-help{font-size:8px!important;opacity:.72}.plan-commandbar{position:relative}

/* v0.4.2 — permanent compact PLAN toolbox */
.plan-stage-shell{grid-template-columns:270px minmax(0,1fr) 286px}
.plan-project-rail{display:flex;flex-direction:column;overflow:hidden}
.project-tree-v2{overflow:auto;min-height:0;flex:1}
.rail-library{border-top:1px solid #dfe6f0;background:#fbfcfe;padding:9px 9px 12px;flex:0 0 auto;max-height:48%;overflow:auto}
.rail-library-title{display:flex;align-items:baseline;justify-content:space-between;padding:2px 2px 7px}.rail-library-title strong{font-size:9px;letter-spacing:.11em;color:#253651}.rail-library-title span{font-size:7px;letter-spacing:.09em;color:#8b98aa}
.rail-library-search{width:100%;box-sizing:border-box;border:1px solid #dfe6f0;border-radius:8px;background:#fff;padding:7px 8px;font:500 10px inherit;margin-bottom:6px}
.rail-lib-group{border-top:1px solid #edf1f6;padding-top:3px}.rail-lib-group summary{list-style:none;cursor:pointer;display:flex;justify-content:space-between;align-items:center;padding:5px 2px;color:#697b95}.rail-lib-group summary::-webkit-details-marker{display:none}.rail-lib-group summary span{font-size:7px;font-weight:800;letter-spacing:.11em}.rail-lib-group summary em{font-size:7px;font-style:normal;color:#9ba7b8}
.rail-lib-chips{display:grid;grid-template-columns:1fr 1fr;gap:4px;padding-bottom:5px}.lib-item.compact{min-height:30px;height:30px;border:1px solid #e0e6ef;border-radius:7px;background:#fff;padding:3px 5px;display:grid;grid-template-columns:20px minmax(0,1fr);align-items:center;gap:4px;text-align:left;cursor:pointer;overflow:hidden}.lib-item.compact:hover{border-color:#8db1ef;background:#f2f7ff}.lib-item.compact span{width:19px;height:19px;border-radius:5px;background:#edf3ff;color:#356bc9;display:grid;place-items:center;font-size:6px;font-weight:800}.lib-item.compact strong{font-size:7.5px;line-height:1.05;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:#24334d}
.plan-project-rail.collapsed .rail-library{display:none}
@media(max-width:1100px){.plan-stage-shell{grid-template-columns:235px minmax(0,1fr) 250px}.rail-lib-chips{grid-template-columns:1fr}}
/* v0.5.0 PLAN HYBRID — old Planner interaction, KCEP 2.0 architecture */
.plan-stage-shell{grid-template-columns:268px minmax(0,1fr) 286px}
.hybrid-toolbox{display:flex;flex-direction:column;background:#fff}.hybrid-toolbox-scroll{overflow:auto;min-height:0;flex:1}.hybrid-section{border-bottom:1px solid #e6ebf2}.hybrid-section-head{width:100%;height:34px;border:0;background:#f8fafc;display:flex;align-items:center;justify-content:space-between;padding:0 10px;cursor:pointer;color:#263750}.hybrid-section-head strong{font-size:9px;letter-spacing:.1em}.hybrid-section-head span{font-size:7px;color:#8b98aa}.hybrid-section.collapsed>.hybrid-section-body{display:none}.hybrid-section-body{padding:5px 7px 8px}.hybrid-category{margin:2px 0}.hybrid-category summary{cursor:pointer;padding:6px 3px;font-size:7px;font-weight:800;letter-spacing:.09em;color:#728199}.hybrid-items{display:grid;grid-template-columns:1fr 1fr;gap:4px}.hybrid-item{min-width:0;min-height:38px;border:1px solid #e0e6ef;border-radius:7px;background:#fff;padding:4px 5px;display:grid;grid-template-columns:25px minmax(0,1fr);align-items:center;gap:5px;text-align:left;cursor:grab;color:#24334d}.hybrid-item:hover,.hybrid-item.active{border-color:#7da7ee;background:#f2f7ff}.hybrid-item:active{cursor:grabbing}.hybrid-icon{width:24px;height:24px;border-radius:6px;background:#edf3ff;color:#356bc9;display:grid;place-items:center;font-size:7px;font-weight:800}.line-icon{font-size:14px;background:#f1f3f6;color:#53657d}.hybrid-item strong{display:block;font-size:7.5px;line-height:1.1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.hybrid-item small{display:block;margin-top:2px;font-size:6.5px;color:#8b98aa;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.plan-content-section .hybrid-section-body{padding:0}.plan-search{padding:6px 7px}.plan-project-rail.collapsed .hybrid-toolbox-scroll{display:none}.spatial-canvas.drag-over{outline:2px solid #3477ef;outline-offset:-3px;background-color:#f7faff}.spatial-canvas.drawing-mode{cursor:crosshair}.hybrid-drawing-layer{position:absolute;inset:0;width:100%;height:100%;z-index:4;pointer-events:none}.hybrid-drawing-layer line{stroke:#5d6d82;stroke-width:3}.hybrid-drawing-layer text{font:1.2px sans-serif;fill:#34445b;text-anchor:middle;paint-order:stroke;stroke:#fff;stroke-width:.35px}.hybrid-drawing-layer .drawing-fence{stroke:#59616b;stroke-dasharray:1.2 .6}.hybrid-drawing-layer .drawing-low_barrier{stroke:#8a6e4d}.hybrid-drawing-layer .drawing-cable{stroke:#d59a19}.hybrid-drawing-layer .drawing-evac_route{stroke:#38a269;stroke-dasharray:2 1}.hybrid-drawing-layer .drawing-oper_route{stroke:#3477ef;stroke-dasharray:2 1}.hybrid-drawing-layer .drawing-road_closure{stroke:#d84e59;stroke-width:4}
/* v0.5.1 GEOMETRY EDITOR */
.zone-polygon-layer{position:absolute;inset:0;width:100%;height:100%;z-index:3;overflow:visible}.zone-poly-group{cursor:pointer}.zone-poly-group polygon{fill:rgba(73,119,201,.10);stroke:#6d92cf;stroke-width:1.2;vector-effect:non-scaling-stroke}.zone-poly-group:hover polygon{fill:rgba(73,119,201,.15);stroke:#3477ef}.zone-poly-group text{font:700 1.15px sans-serif;letter-spacing:.04em;fill:#46628d;text-anchor:middle;paint-order:stroke;stroke:#fff;stroke-width:.35px;pointer-events:none}.drawing-group{pointer-events:all;cursor:pointer}.hybrid-drawing-layer{pointer-events:none}.hybrid-drawing-layer .drawing-group{pointer-events:all}.live-line{opacity:.8}.live-node{fill:#fff;stroke:#3477ef;stroke-width:1.5;vector-effect:non-scaling-stroke}.geometry-handle-layer{pointer-events:all}.geo-vertex{fill:#fff;stroke:#3477ef;stroke-width:1.7;vector-effect:non-scaling-stroke;cursor:move}.geo-mid{fill:#dce9ff;stroke:#6f9be7;stroke-width:1.1;vector-effect:non-scaling-stroke;cursor:copy}.plan-background{z-index:0}.canvas-grid{z-index:0}.empty-plan-note,.empty-plan-cta{z-index:1}.map-object{z-index:6}.spatial-canvas.drawing-mode .hybrid-drawing-layer{pointer-events:none}.background-hint{font-size:8px;color:#718096}.canvas-toolbar .tool-btn[data-open="sourceModal"]{border-style:dashed}
/* v0.5.2 CORE UX */
.projects-page-head,.library-page-head{display:flex;align-items:flex-end;justify-content:space-between;gap:24px;margin-bottom:24px}.projects-page-head h2,.library-page-head h2{margin:4px 0 5px;font-size:28px}.project-card-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:16px}.project-card-v2{position:relative;min-height:190px;background:#fff;border:1px solid #e2e8f0;border-radius:18px;box-shadow:0 8px 28px rgba(15,23,42,.05);overflow:hidden}.project-card-link{display:block;height:100%;padding:20px;color:inherit;text-decoration:none}.project-card-top{display:flex;align-items:center;justify-content:space-between;padding-right:32px}.project-type-tag{font-size:10px;font-weight:800;letter-spacing:.09em;color:#64748b}.project-card-v2 h3{font-size:20px;margin:25px 0 5px}.project-card-v2 p{color:#64748b;margin:0}.project-card-date{border-top:1px solid #eef2f7;margin-top:25px;padding-top:14px;display:flex;justify-content:space-between;align-items:end}.project-card-date small{font-size:9px;letter-spacing:.08em;color:#94a3b8}.project-card-menu{position:absolute;right:11px;top:12px;border:0;background:transparent;border-radius:9px;width:34px;height:34px;cursor:pointer;font-weight:800}.project-card-menu:hover{background:#f1f5f9}.library-toolbar{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:15px}.library-toolbar input{max-width:390px}.library-toolbar span{font-size:12px;color:#64748b}.library-admin-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:12px}.library-admin-card{display:grid;grid-template-columns:44px 1fr 38px;gap:12px;align-items:start;background:#fff;border:1px solid #e2e8f0;border-radius:15px;padding:15px}.library-admin-icon{width:42px;height:42px;border-radius:11px;background:#edf4ff;color:#1d4ed8;display:grid;place-items:center;font-size:11px;font-weight:900}.library-admin-main{min-width:0}.library-admin-meta{display:flex;gap:5px;flex-wrap:wrap}.library-admin-meta span{font-size:8px;font-weight:800;letter-spacing:.06em;padding:3px 6px;border-radius:5px;background:#f1f5f9;color:#64748b}.library-admin-card h3{font-size:14px;margin:7px 0 3px}.library-admin-card p{font-size:11px;color:#64748b;margin:0 0 4px}.library-admin-card small{color:#94a3b8}.icon-menu{border:0;background:#f8fafc;border-radius:8px;width:34px;height:34px;cursor:pointer}.library-lock{font-size:9px;color:#94a3b8}.library-form label{display:block;margin:11px 0;font-size:10px;font-weight:800;letter-spacing:.06em}.library-form input,.library-form select,.library-form textarea,.danger-modal input{width:100%;box-sizing:border-box;margin-top:5px}.library-dims{display:grid;grid-template-columns:repeat(3,1fr);gap:9px}.library-archive{margin-top:18px;padding-top:15px;border-top:1px solid #fee2e2}@media(max-width:720px){.projects-page-head,.library-page-head{align-items:flex-start;flex-direction:column}.project-card-grid,.library-admin-grid{grid-template-columns:1fr}.library-dims{grid-template-columns:1fr}}

/* v0.5.3 PLAN EDITOR POLISH */
.hybrid-drawing-layer .drawing-line,.hybrid-drawing-layer polyline{fill:none!important;stroke-linecap:round;stroke-linejoin:round}
.hybrid-drawing-layer .drawing-road_closure{stroke-width:2.5}
.zone-poly-group polygon{fill:rgba(91,119,151,.075);stroke:rgba(78,108,143,.58);stroke-width:.9}
.zone-poly-group:hover polygon{fill:rgba(76,112,154,.10);stroke:rgba(52,91,137,.72)}
.zone-poly-group text{fill:#536b86;font-weight:650;opacity:.88}
.geometry-handle-layer .geo-vertex{fill:#fff;stroke:#4d7fca;stroke-width:1.15;cursor:move;transition:r .1s}
.geometry-handle-layer .geo-mid{fill:rgba(255,255,255,.9);stroke:#9aabc0;stroke-width:.8;cursor:copy}
.geometry-handle-layer .geo-vertex:hover{stroke:#2468d5;stroke-width:1.7}
.geometry-handle-layer .geo-mid:hover{stroke:#4f7fbd;stroke-width:1.2}
.live-node{fill:#fff;stroke:#3477ef;stroke-width:1.1}
.measure-overlay line{stroke:#2d6dcc;stroke-width:1.5;stroke-dasharray:5 4}
.measure-overlay .measure-graphic.preview line{opacity:.7}
.measure-overlay .measure-point{fill:#fff;stroke:#2d6dcc;stroke-width:2}
.measure-overlay .measure-tag{fill:#fff;stroke:none;font:700 9px sans-serif;paint-order:normal;text-anchor:start}
.measure-overlay .measure-tag{fill:#2d5f9e}
.measure-overlay .measure-value{fill:#244f83;font:700 11px sans-serif;text-anchor:middle;paint-order:stroke;stroke:#fff;stroke-width:4px}
.plan-key-hint{min-height:25px;display:flex;align-items:center;justify-content:center;gap:7px;color:#8794a6;font-size:8px;letter-spacing:.055em;padding-top:5px;user-select:none}
.plan-key-hint kbd{font:700 8px/1 inherit;border:1px solid #d6dee9;background:#fff;border-radius:5px;padding:4px 6px;color:#63738a;box-shadow:0 1px 0 #e6ebf1}
.plan-key-hint.active{color:#60738d}
/* v0.5.4 PLAN workflow + i18n */
.plan-lang{display:flex;align-items:center;gap:4px;margin:0 3px;font-size:9px;font-weight:800;color:#a0abba}.plan-lang a{color:#9aa7b8;text-decoration:none;padding:5px 3px;border-radius:5px}.plan-lang a.active{color:#255fc9;background:#edf3ff}.wizard-file{display:block;margin-top:14px;font-size:9px;font-weight:800;letter-spacing:.08em;color:#60718a}.wizard-file input[type=file]{display:block;width:100%;box-sizing:border-box;margin-top:7px;border:1px solid #d9e2ef;border-radius:10px;padding:10px;background:#f9fbfd;font:500 11px inherit;letter-spacing:0;color:#35445c}.first-plan-name{margin:0 0 14px;padding:10px 12px;border:1px solid #e0e7f1;border-radius:10px;background:#f8fafc;display:grid;grid-template-columns:auto 1fr;gap:3px 10px;align-items:center}.first-plan-name span{font-size:8px;font-weight:800;letter-spacing:.08em;color:#78879c}.first-plan-name b{font-size:12px;color:#1c2a40}.first-plan-name small{grid-column:2;font-size:8px;color:#8c99aa}.empty-plan-upload{border:1px dashed #b7cae7;font-family:inherit}.empty-plan-upload .inline-upload-button{display:inline-flex;align-items:center;justify-content:center;margin-top:12px;border:1px solid #a9c3ef;border-radius:9px;padding:8px 12px;background:#fff;color:#2863cb;font-size:9px;font-weight:800;cursor:pointer}.inline-upload-button input{position:absolute;opacity:0;pointer-events:none;width:1px;height:1px}.empty-plan-upload:hover .inline-upload-button{background:#f1f6ff}.plan-menu button[data-open="editPlanModal"]{font-weight:700}
