*,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}.absolute{position:absolute}.flex{display:flex}.table{display:table}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.resize{resize:both}.blur{--tw-blur: blur(8px);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}:root{--ink:#25221E;--ink-soft:#6B655C;--ink-faint:#9A9388;--paper:#FBFAF6;--panel:#FFFFFF;--plan:#ECEAE2;--grid:#DBD8CD;--line:#E6E2D7;--pine:#2E5A4E;--pine-d:#244A40;--pine-soft:#DDE7E2;--amber:#DD9A2B;--amber-soft:#F6E6BE;--amber-ring:#E8A33D;--brick:#B14A38;--brick-soft:#F1D9D3;--shadow:0 1px 2px rgba(40,36,30,.06), 0 8px 24px rgba(40,36,30,.08);--shadow-lg:0 12px 40px rgba(40,36,30,.18)}*{box-sizing:border-box;margin:0;padding:0}html,body,#root{height:100%}body{font-family:Hanken Grotesk,system-ui,sans-serif;color:var(--ink);background:var(--paper);-webkit-font-smoothing:antialiased;overflow:hidden}.mono{font-family:Space Mono,monospace}button{font-family:inherit;cursor:pointer;border:none;background:none;color:inherit}input,textarea,select{font-family:inherit}.app{display:flex;flex-direction:column;height:100vh}header{display:flex;align-items:center;gap:12px;padding:max(13px,env(safe-area-inset-top)) max(18px,env(safe-area-inset-right)) 13px max(18px,env(safe-area-inset-left));border-bottom:1px solid var(--line);background:var(--panel);flex-shrink:0;z-index:30}.brand{display:flex;align-items:baseline;gap:9px;flex-shrink:0}.brand .logo{width:26px;height:26px;border-radius:7px;background:var(--pine);position:relative;align-self:center;flex-shrink:0;box-shadow:inset 0 0 0 3px #ffffff2e}.brand .logo:after{content:"";position:absolute;width:8px;height:8px;border-radius:50%;background:var(--amber);top:5px;right:5px}.brand h1{font-size:20px;font-weight:800;letter-spacing:-.02em}.brand .tag{font-size:12.5px;color:var(--ink-faint);font-weight:500}@media (max-width:820px){.brand .tag{display:none}}@media (max-width:520px){.brand h1{display:none}}.search{flex:1;max-width:520px;position:relative}.search input{width:100%;padding:11px 16px 11px 40px;border-radius:11px;border:1.5px solid var(--line);background:var(--paper);font-size:16px;color:var(--ink);transition:border-color .15s,background .15s}.search input:focus{outline:none;border-color:var(--pine);background:#fff}.search input::-moz-placeholder{color:var(--ink-faint)}.search input::placeholder{color:var(--ink-faint)}.search .ic{position:absolute;left:13px;top:50%;transform:translateY(-50%);width:17px;height:17px;color:var(--ink-faint);pointer-events:none}.hbtn{display:inline-flex;align-items:center;gap:7px;padding:10px 14px;border-radius:10px;background:var(--pine);color:#fff;font-weight:700;font-size:13.5px;flex-shrink:0;transition:background .14s;box-shadow:var(--shadow)}.hbtn:hover{background:var(--pine-d)}.hbtn svg{width:16px;height:16px}.hbtn.ghost{background:var(--panel);color:var(--ink-soft);border:1.5px solid var(--line);box-shadow:none}.hbtn.ghost:hover{border-color:#cfcabd;color:var(--ink)}@media (max-width:820px){.hbtn .lbl{display:none}.hbtn{padding:10px}}main{flex:1;display:flex;min-height:0}.stage{flex:1;display:flex;flex-direction:column;min-width:0;position:relative}.toolbar{display:flex;align-items:center;gap:8px;padding:12px 16px;flex-shrink:0;flex-wrap:wrap}.tool{display:inline-flex;align-items:center;gap:7px;padding:8px 13px;border-radius:9px;font-size:13.5px;font-weight:600;color:var(--ink-soft);border:1.5px solid var(--line);background:var(--panel);transition:all .14s}.tool:hover{border-color:#cfcabd;color:var(--ink)}.tool.active{background:var(--pine);border-color:var(--pine);color:#fff}.tool svg{width:16px;height:16px}.hint{font-size:12.5px;color:var(--ink-faint);margin-left:4px}@media (max-width:680px){.hint{display:none}}.plan-wrap{flex:1;padding:0 16px 16px;min-height:0;overflow:auto}.plan{position:relative;width:100%;aspect-ratio:16/10;min-height:160px;background:var(--plan);border-radius:16px;border:1px solid var(--line);background-image:linear-gradient(var(--grid) 1px,transparent 1px),linear-gradient(90deg,var(--grid) 1px,transparent 1px);background-size:34px 34px;overflow:hidden;box-shadow:inset 0 0 0 1px #fff6;touch-action:none;container-type:inline-size;container-name:plan}.plan.mode-place{cursor:crosshair}.plan-empty{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;text-align:center;color:var(--ink-faint);pointer-events:none;padding:24px}.plan-empty b{color:var(--ink-soft);font-size:16px;font-weight:700}.plan-empty span{font-size:13.5px;max-width:280px}.room{position:absolute;border:1.5px dashed #b9b3a4;border-radius:10px;background:#ffffff52}.room .room-label{position:absolute;top:6px;left:8px;font-size:clamp(8px,1.1cqw,12px);font-weight:700;color:var(--ink-soft);text-transform:uppercase;letter-spacing:.04em;background:#fbfaf6d9;padding:1px 6px;border-radius:5px;cursor:text;max-width:80%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;z-index:6}.room .room-handle{position:absolute;right:-6px;bottom:-6px;width:clamp(10px,1.4cqw,16px);height:clamp(10px,1.4cqw,16px);border-radius:4px;background:#fff;border:1.5px solid #b9b3a4;cursor:nwse-resize}.room .room-del{position:absolute;top:4px;right:4px;width:clamp(14px,1.8cqw,20px);height:clamp(14px,1.8cqw,20px);border-radius:5px;display:none;align-items:center;justify-content:center;color:var(--ink-faint);background:#fbfaf6e6;font-size:clamp(11px,1.4cqw,16px);line-height:1;z-index:6}.room:hover .room-del{display:flex}.room .room-del:hover{color:var(--brick)}.pin{position:absolute;transform:translate(-50%,-100%);display:flex;flex-direction:column;align-items:center;cursor:grab;-webkit-user-select:none;-moz-user-select:none;user-select:none;z-index:5}.pin.dragging{cursor:grabbing;z-index:20}.marker{position:relative;width:clamp(22px,3.4cqw,40px);height:clamp(22px,3.4cqw,40px)}.pin .head{width:clamp(22px,3.4cqw,40px);height:clamp(22px,3.4cqw,40px);border-radius:50% 50% 50% 2px;transform:rotate(45deg);background:var(--pine);box-shadow:var(--shadow);display:flex;align-items:center;justify-content:center;transition:transform .12s,background .15s;border:2px solid #fff}.pin .head svg{width:clamp(11px,1.7cqw,20px);height:clamp(11px,1.7cqw,20px);color:#fff;transform:rotate(-45deg)}.pin .badge{position:absolute;top:-7px;right:-9px;min-width:clamp(13px,1.7cqw,20px);height:clamp(13px,1.7cqw,20px);border-radius:9px;background:var(--ink);color:#fff;font-size:clamp(8px,1cqw,11px);font-weight:700;font-family:Space Mono,monospace;display:flex;align-items:center;justify-content:center;padding:0 4px;border:2px solid #fff}.pin .label{margin-top:6px;font-size:clamp(9px,1.2cqw,13px);font-weight:600;color:var(--ink);background:var(--panel);padding:2px 8px;border-radius:7px;box-shadow:var(--shadow);white-space:nowrap;max-width:clamp(80px,13cqw,150px);overflow:hidden;text-overflow:ellipsis;border:1px solid var(--line)}.pin:hover .head{transform:rotate(45deg) scale(1.08)}.pin.selected .head{box-shadow:var(--shadow),0 0 0 3px #fff,0 0 0 5px currentColor}.pin.selected .label{border-color:currentColor;font-weight:700}.pin.match .head{background:var(--amber)!important;box-shadow:0 0 0 4px var(--amber-soft),0 0 0 8px #e8a33e38;animation:pulse 1.4s ease-in-out infinite}.pin.match .label{border-color:var(--amber-ring);color:#8a5e08;font-weight:700}.pin.dim{opacity:.3;filter:grayscale(.35)}@keyframes pulse{0%,to{box-shadow:0 0 0 4px var(--amber-soft),0 0 0 8px #e8a33e38}50%{box-shadow:0 0 0 5px var(--amber-soft),0 0 0 12px #e8a33e1a}}.panel{width:362px;flex-shrink:0;border-left:1px solid var(--line);background:var(--panel);display:flex;flex-direction:column;min-height:0}.panel-empty{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;padding:32px;text-align:center;color:var(--ink-faint)}.panel-empty .big{font-size:30px}.panel-empty b{color:var(--ink-soft);font-weight:700;font-size:15px}.panel-empty span{font-size:13px;max-width:230px;line-height:1.5}.ph{border-bottom:1px solid var(--line);position:relative}.loc-photo{position:relative;aspect-ratio:16/7;background:var(--paper);overflow:hidden;cursor:pointer;display:flex;align-items:center;justify-content:center;border-bottom:1px solid var(--line)}.loc-photo img{width:100%;height:100%;-o-object-fit:cover;object-fit:cover}.loc-photo .lp-add{display:flex;align-items:center;gap:7px;color:var(--ink-faint);font-size:13px;font-weight:600}.loc-photo .lp-add svg{width:18px;height:18px}.loc-photo .lp-tools{position:absolute;bottom:8px;right:8px;display:flex;gap:6px}.loc-photo .lp-tools button{background:#25221eb8;color:#fff;font-size:11.5px;font-weight:600;padding:5px 9px;border-radius:7px;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.ph-in{padding:14px 18px}.ph .kicker{font-size:11px;font-family:Space Mono,monospace;color:var(--amber);text-transform:uppercase;letter-spacing:.08em;margin-bottom:6px}.ph .name{font-size:20px;font-weight:800;letter-spacing:-.02em;width:100%;border:none;background:none;color:var(--ink);padding:2px 0;border-radius:6px}.ph .name:focus{outline:none;box-shadow:0 2px 0 var(--pine)}.ph .meta{font-size:12.5px;color:var(--ink-faint);margin-top:8px;display:flex;gap:12px;align-items:center}.ph .del{margin-left:auto;color:var(--ink-faint);font-size:12.5px;font-weight:600}.ph .del:hover{color:var(--brick)}.ctrls{display:flex;align-items:center;gap:8px;margin-top:12px;flex-wrap:wrap}.icon-btn{display:inline-flex;align-items:center;gap:7px;padding:7px 11px;border-radius:9px;border:1.5px solid var(--line);background:var(--paper);font-size:13px;font-weight:600;color:var(--ink-soft);transition:.14s}.icon-btn:hover{border-color:var(--pine);color:var(--pine)}.icon-btn svg{width:17px;height:17px}.stepper{display:inline-flex;align-items:center;gap:2px;border:1.5px solid var(--line);border-radius:9px;background:var(--paper);overflow:hidden}.stepper button{width:30px;height:34px;font-size:17px;color:var(--ink-soft);transition:background .12s}.stepper button:hover{background:#efece4;color:var(--ink)}.stepper .val{min-width:60px;text-align:center;font-size:13px;font-weight:600;font-family:Space Mono,monospace}.swatches{display:flex;gap:7px;margin-top:12px;align-items:center;flex-wrap:wrap}.sw{width:20px;height:20px;border-radius:50%;cursor:pointer;border:2px solid #fff;box-shadow:0 0 0 1px var(--line);transition:transform .1s}.sw:hover{transform:scale(1.15)}.sw.on{box-shadow:0 0 0 2px var(--ink)}.sw-custom{position:relative;width:20px;height:20px;border-radius:50%;overflow:hidden;border:1.5px dashed #b9b3a4;display:flex;align-items:center;justify-content:center;color:var(--ink-faint);font-size:13px}.sw-custom input{position:absolute;top:-4px;right:-4px;bottom:-4px;left:-4px;opacity:0;cursor:pointer}.add-item{padding:13px 18px;border-bottom:1px solid var(--line);display:flex;gap:8px}.add-item input{flex:1;padding:10px 12px;border-radius:9px;border:1.5px solid var(--line);background:var(--paper);font-size:16px;color:var(--ink)}.add-item input:focus{outline:none;border-color:var(--pine);background:#fff}.add-item .mini{width:42px;flex-shrink:0;border-radius:9px;display:flex;align-items:center;justify-content:center;border:1.5px solid var(--line);color:var(--ink-soft);transition:.14s}.add-item .mini:hover{border-color:var(--pine);color:var(--pine)}.add-item .mini svg{width:18px;height:18px}.add-item .go{width:42px;flex-shrink:0;border-radius:9px;background:var(--pine);color:#fff;font-weight:700;font-size:20px;transition:background .14s}.add-item .go:hover{background:var(--pine-d)}.items{flex:1;overflow-y:auto;padding:8px 10px}.shelf-h{display:flex;align-items:center;gap:8px;padding:10px 8px 5px;font-size:11px;font-weight:700;color:var(--ink-faint);text-transform:uppercase;letter-spacing:.05em;font-family:Space Mono,monospace}.shelf-h:after{content:"";flex:1;height:1px;background:var(--line)}.item{display:flex;align-items:center;gap:11px;padding:9px 10px;border-radius:11px;transition:background .12s;cursor:pointer}.item:hover{background:var(--paper)}.item.hot{background:var(--amber-soft)}.item .thumb{width:42px;height:42px;border-radius:9px;flex-shrink:0;-o-object-fit:cover;object-fit:cover;background:var(--pine-soft);display:flex;align-items:center;justify-content:center;color:var(--pine);overflow:hidden}.item .thumb svg{width:18px;height:18px;opacity:.7}.item .thumb img{width:100%;height:100%;-o-object-fit:cover;object-fit:cover}.item .txt{flex:1;min-width:0}.item .txt .nm{display:flex;align-items:center;gap:6px}.item .txt b{font-weight:600;font-size:14.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.item .qty{font-size:11px;font-weight:700;font-family:Space Mono,monospace;color:var(--pine-d);background:var(--pine-soft);padding:0 6px;border-radius:6px;flex-shrink:0}.item .sub{display:flex;gap:6px;margin-top:3px;flex-wrap:wrap;align-items:center}.item .chip{font-size:11px;font-weight:600;color:var(--pine-d);background:var(--pine-soft);padding:1px 7px;border-radius:20px;font-family:Space Mono,monospace}.item .chip:hover{background:#cfe0d9}.item .loan{font-size:11px;font-weight:700;color:var(--amber);background:var(--amber-soft);padding:1px 7px;border-radius:20px}.item .loan.over{color:#fff;background:var(--brick)}.item .meta-s{color:var(--ink-faint);font-size:11.5px}.item .x{opacity:0;color:var(--ink-faint);font-size:17px;padding:2px 6px;border-radius:6px;flex-shrink:0;transition:opacity .12s}.item:hover .x{opacity:1}.item .x:hover{color:var(--brick);background:#fff}.items-empty{padding:30px 18px;text-align:center;color:var(--ink-faint);font-size:13px}.results{position:absolute;top:58px;left:18px;right:18px;max-width:520px;z-index:40;background:var(--panel);border:1px solid var(--line);border-radius:13px;box-shadow:var(--shadow-lg);overflow:hidden;max-height:62vh;overflow-y:auto}.results .rhead{padding:9px 15px;font-size:11px;font-family:Space Mono,monospace;color:var(--ink-faint);text-transform:uppercase;letter-spacing:.06em;border-bottom:1px solid var(--line)}.result{display:flex;align-items:center;gap:11px;padding:10px 15px;border-bottom:1px solid var(--line);transition:background .1s;cursor:pointer}.result:last-child{border-bottom:none}.result:hover{background:var(--paper)}.result .rdot{width:36px;height:36px;border-radius:8px;flex-shrink:0;-o-object-fit:cover;object-fit:cover;background:var(--pine-soft);display:flex;align-items:center;justify-content:center;color:var(--pine-d);overflow:hidden}.result .rdot svg{width:16px;height:16px}.result .rdot img{width:100%;height:100%;-o-object-fit:cover;object-fit:cover}.result .rtxt{flex:1;min-width:0}.result .rtxt b{font-weight:600;font-size:14px;display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.result .rtxt b mark{background:var(--amber-soft);color:inherit;padding:0 1px;border-radius:2px}.result .rtxt span{font-size:12px;color:var(--ink-faint);display:flex;align-items:center;gap:5px}.result .rtxt span svg{width:13px;height:13px}.result .approx{font-size:10px;font-family:Space Mono,monospace;color:var(--amber);border:1px solid var(--amber-soft);border-radius:4px;padding:0 4px}.result .arr{color:var(--ink-faint)}.no-res{padding:22px 16px;text-align:center;color:var(--ink-faint);font-size:13.5px}.overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#25221e6b;z-index:60;display:none;align-items:center;justify-content:center;padding:20px}.overlay.show{display:flex}.modal{background:var(--panel);border-radius:18px;width:100%;max-width:470px;max-height:92vh;overflow-y:auto;box-shadow:var(--shadow-lg);animation:pop .2s ease}@keyframes pop{0%{transform:translateY(10px) scale(.98);opacity:0}to{transform:none;opacity:1}}.modal h3{font-size:17px;font-weight:800;padding:18px 20px 0;letter-spacing:-.01em}.mbody{padding:16px 20px 20px;display:flex;flex-direction:column;gap:13px}.photo-area{border-radius:13px;overflow:hidden;background:var(--paper);border:1.5px dashed var(--line);aspect-ratio:16/10;display:flex;align-items:center;justify-content:center;position:relative;cursor:pointer}.photo-area img{width:100%;height:100%;-o-object-fit:cover;object-fit:cover}.photo-area .ph-empty{display:flex;flex-direction:column;align-items:center;gap:7px;color:var(--ink-faint)}.photo-area .ph-empty svg{width:26px;height:26px}.photo-area .ph-empty span{font-size:13px;font-weight:600}.photo-tools{position:absolute;bottom:8px;right:8px;display:flex;gap:6px}.photo-tools button{background:#25221eb8;color:#fff;font-size:12px;font-weight:600;padding:5px 10px;border-radius:7px;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.row2{display:flex;gap:10px}.row2>*{flex:1}.fld label{display:block;font-size:11.5px;font-weight:700;color:var(--ink-soft);text-transform:uppercase;letter-spacing:.04em;margin-bottom:5px}.fld input,.fld textarea,.fld select{width:100%;padding:10px 12px;border-radius:9px;border:1.5px solid var(--line);background:var(--paper);font-size:16px;color:var(--ink)}.fld textarea{resize:vertical;min-height:54px}.fld input:focus,.fld textarea:focus,.fld select:focus{outline:none;border-color:var(--pine);background:#fff}.loc-row{display:flex;gap:10px;align-items:flex-end}.loc-row .fld{flex:1}.loc-thumb{width:46px;height:46px;border-radius:9px;background:var(--pine-soft);overflow:hidden;flex-shrink:0;display:flex;align-items:center;justify-content:center;color:var(--pine)}.loc-thumb img{width:100%;height:100%;-o-object-fit:cover;object-fit:cover}.loc-thumb svg{width:18px;height:18px}.tagbox{display:flex;flex-wrap:wrap;gap:6px;padding:7px 8px;border-radius:9px;border:1.5px solid var(--line);background:var(--paper);min-height:42px;align-items:center}.tagbox:focus-within{border-color:var(--pine);background:#fff}.tagbox .tg{display:inline-flex;align-items:center;gap:5px;background:var(--pine-soft);color:var(--pine-d);font-weight:600;font-size:12.5px;padding:3px 5px 3px 9px;border-radius:20px;font-family:Space Mono,monospace}.tagbox .tg button{color:var(--pine-d);opacity:.6;font-size:14px;line-height:1}.tagbox .tg button:hover{opacity:1}.tagbox input{flex:1;min-width:90px;border:none;background:none;font-size:16px;padding:4px;color:var(--ink)}.tagbox input:focus{outline:none}.loan-box{border:1.5px solid var(--line);border-radius:11px;padding:12px;background:var(--paper)}.loan-toggle{display:flex;align-items:center;gap:9px;cursor:pointer;font-size:14px;font-weight:600}.loan-toggle .sw-t{width:38px;height:22px;border-radius:11px;background:#d8d3c6;position:relative;transition:background .15s;flex-shrink:0}.loan-toggle .sw-t:after{content:"";position:absolute;width:18px;height:18px;border-radius:50%;background:#fff;top:2px;left:2px;transition:left .15s;box-shadow:0 1px 2px #0003}.loan-toggle.on .sw-t{background:var(--amber)}.loan-toggle.on .sw-t:after{left:18px}.loan-fields{display:none;gap:10px;margin-top:12px}.loan-fields.show{display:flex}.mfoot{display:flex;gap:10px;align-items:center;padding-top:4px}.mfoot .save{margin-left:auto;background:var(--pine);color:#fff;font-weight:700;font-size:14.5px;padding:11px 22px;border-radius:10px;transition:background .14s}.mfoot .save:hover{background:var(--pine-d)}.mfoot .del{color:var(--brick);font-weight:600;font-size:13.5px}.mfoot .cancel{color:var(--ink-soft);font-weight:600;font-size:13.5px}.icon-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;padding:16px 20px 20px}.icon-opt{display:flex;flex-direction:column;align-items:center;gap:6px;padding:12px 6px;border-radius:12px;border:1.5px solid var(--line);background:var(--paper);transition:.14s;cursor:pointer}.icon-opt:hover{border-color:var(--pine)}.icon-opt.on{border-color:var(--pine);background:var(--pine-soft)}.icon-opt svg{width:26px;height:26px;color:var(--pine-d)}.icon-opt span{font-size:11px;font-weight:600;color:var(--ink-soft);text-align:center}.ov-tabs{display:flex;gap:4px;padding:14px 20px 0;flex-wrap:wrap}.ov-tab{padding:7px 12px;border-radius:9px;font-size:13px;font-weight:600;color:var(--ink-soft);transition:.12s}.ov-tab:hover{background:var(--paper)}.ov-tab.on{background:var(--pine);color:#fff}.ov-body{padding:14px 16px 20px;min-height:120px}.ov-row{display:flex;align-items:center;gap:11px;padding:10px 8px;border-radius:10px;cursor:pointer;transition:background .12s}.ov-row:hover{background:var(--paper)}.ov-row .od{width:34px;height:34px;border-radius:8px;flex-shrink:0;background:var(--pine-soft);overflow:hidden;display:flex;align-items:center;justify-content:center;color:var(--pine-d)}.ov-row .od svg{width:15px;height:15px}.ov-row .od img{width:100%;height:100%;-o-object-fit:cover;object-fit:cover}.ov-row .ot{flex:1;min-width:0}.ov-row .ot b{font-weight:600;font-size:14px;display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ov-row .ot span{font-size:12px;color:var(--ink-faint)}.ov-row .when{font-size:11.5px;color:var(--ink-faint);font-family:Space Mono,monospace;flex-shrink:0}.ov-row .when.over{color:var(--brick);font-weight:700}.ov-empty{text-align:center;color:var(--ink-faint);font-size:13.5px;padding:34px 16px}.cloud{display:flex;flex-wrap:wrap;gap:8px;padding:8px}.cloud .ct{display:inline-flex;align-items:center;gap:6px;padding:6px 11px;border-radius:20px;background:var(--pine-soft);color:var(--pine-d);font-weight:600;font-size:13px;cursor:pointer;transition:.12s}.cloud .ct:hover{background:#cfe0d9}.cloud .ct b{font-family:Space Mono,monospace;font-size:11px;opacity:.7}.data-box{padding:8px}.data-box p{font-size:13px;color:var(--ink-soft);line-height:1.5;margin-bottom:14px}.data-btn{display:flex;align-items:center;gap:9px;width:100%;padding:13px 14px;border-radius:11px;border:1.5px solid var(--line);background:var(--paper);font-size:14px;font-weight:600;color:var(--ink);margin-bottom:10px;transition:.14s}.data-btn:hover{border-color:var(--pine);color:var(--pine)}.data-btn svg{width:18px;height:18px}.data-btn small{margin-left:auto;color:var(--ink-faint);font-weight:500;font-size:12px}.lightbox{position:fixed;top:0;right:0;bottom:0;left:0;background:#14120fe0;z-index:90;display:none;align-items:center;justify-content:center;padding:24px;cursor:zoom-out}.lightbox.show{display:flex}.lightbox img{max-width:100%;max-height:100%;border-radius:12px;box-shadow:var(--shadow-lg)}.sheet-back,.panel-handle{display:none}@media (max-width:820px){.panel{position:fixed;left:0;right:0;bottom:0;width:auto;max-height:80vh;border-left:none;border-top:1px solid var(--line);border-radius:18px 18px 0 0;box-shadow:var(--shadow-lg);z-index:50;transform:translateY(102%);transition:transform .28s cubic-bezier(.22,.61,.36,1);padding-bottom:env(safe-area-inset-bottom)}.panel.open{transform:translateY(0)}.panel.dragging{transition:none}.panel-handle{display:flex;justify-content:center;align-items:center;padding:18px 0 16px;flex-shrink:0;min-height:44px;cursor:grab;touch-action:none}.panel-handle:after{content:"";width:42px;height:5px;border-radius:3px;background:#c9c3b3}.sheet-back.show{display:block;position:fixed;top:0;right:0;bottom:0;left:0;background:#25221e47;z-index:45}}@media (min-width:821px){.panel{transform:none!important}}.toast{position:fixed;bottom:calc(20px + env(safe-area-inset-bottom));left:50%;transform:translate(-50%) translateY(20px);background:var(--ink);color:#fff;padding:10px 18px;border-radius:10px;font-size:13.5px;font-weight:600;opacity:0;pointer-events:none;transition:all .25s;z-index:95}.toast.show{opacity:1;transform:translate(-50%) translateY(0)}.user-box{display:flex;align-items:center;gap:10px;margin-left:8px;flex-shrink:0}.user-email{font-size:12.5px;color:var(--ink-faint);font-weight:600;max-width:160px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}@media (max-width:680px){.user-email{display:none}}.auth-screen{height:100%;display:flex;align-items:center;justify-content:center;background:var(--paper);padding:20px}.auth-box{width:100%;max-width:360px;background:var(--panel);border-radius:18px;box-shadow:var(--shadow-lg);padding:28px 26px;display:flex;flex-direction:column;gap:14px}.auth-box .brand{justify-content:center;margin-bottom:2px}.auth-sub{font-size:13.5px;color:var(--ink-faint);text-align:center;margin-bottom:4px}.auth-error{font-size:13px;color:var(--brick);background:var(--brick-soft);padding:9px 11px;border-radius:9px}.auth-info{font-size:13px;color:var(--pine-d);background:var(--pine-soft);padding:9px 11px;border-radius:9px}.auth-actions{display:flex;gap:10px;margin-top:4px}.auth-actions .hbtn{flex:1;justify-content:center}
