
    :root {
      --ink:#1d1a17; --muted:#756e65; --paper:#f7f4ef; --panel:rgba(255,255,255,.94);
      --line:#ddd5c9; --gold:#a47926; --gold-dark:#74500f; --green:#27774c;
      --red:#c23c32; --red-soft:#fff0ed; --shadow:0 16px 44px rgba(55,43,24,.12);
    }
    *{box-sizing:border-box}
    html{background:var(--paper)}
    body{margin:0;color:var(--ink);background:radial-gradient(circle at 10% 0%,rgba(184,143,63,.12),transparent 24rem),linear-gradient(#fbfaf8,var(--paper));font-family:-apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC","Microsoft YaHei",sans-serif;-webkit-tap-highlight-color:transparent}
    button,input,select{font:inherit}
    button{cursor:pointer;-webkit-tap-highlight-color:transparent}
    .app{width:min(1260px,100%);margin:auto;padding:18px}
    .topbar{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:14px}
    .kicker{margin:0 0 4px;color:var(--gold-dark);font-size:12px;letter-spacing:.18em}
    .brand-heading{display:block;max-width:950px}
    h1{margin:0;font-family:"FZSongKeBenXiuKaiS-R-GB","STSong","Songti SC","SimSun",serif;font-size:clamp(37px,5.2vw,62px);font-weight:600;line-height:1.08;letter-spacing:.05em;background:linear-gradient(135deg,#2b2116 8%,#9a6c1e 70%,#5f3d09);-webkit-background-clip:text;background-clip:text;color:transparent}
    .title-tip{display:block;margin:7px 0 0;color:var(--muted);font-family:"Songti SC","STSong","SimSun",serif;font-size:clamp(13px,1.45vw,17px);line-height:1.45;letter-spacing:.04em}
    .mode-tabs{display:flex;gap:5px;padding:4px;border:1px solid var(--line);border-radius:14px;background:rgba(255,255,255,.72)}
    .mode-btn{min-height:36px;padding:7px 12px;border:0;border-radius:10px;color:var(--muted);background:transparent;font-size:12px;font-weight:700}
    .mode-btn.active{color:#fff;background:linear-gradient(135deg,#a97e2c,#74500f)}
    .layout{display:grid;grid-template-columns:minmax(0,1fr) 340px;gap:16px;align-items:start}
    .card{border:1px solid rgba(118,91,42,.18);border-radius:22px;background:var(--panel);box-shadow:var(--shadow)}
    .viewer{padding:12px}
    .tray-panel{margin-bottom:12px;padding:12px;border:1px solid #e5ddd1;border-radius:16px;background:linear-gradient(135deg,#fff,#faf7f1)}
    .tray-panel .section-title{margin-bottom:8px}
    .ear-side-upload{width:100%;min-height:38px;padding:7px 10px;border:1px solid #d8c49a;border-radius:12px;color:#65460f;background:linear-gradient(135deg,#fffdf8,#fff5df);box-shadow:0 4px 12px rgba(91,64,15,.08);font-size:12px;font-weight:800;transition:.15s border-color,.15s box-shadow,.15s transform}
    .ear-side-upload:hover{border-color:#aa7d27;box-shadow:0 6px 16px rgba(91,64,15,.14);transform:translateY(-1px)}.ear-side-upload.has-photo{color:#fff;border-color:#80601e;background:linear-gradient(135deg,#b68a35,#74500f)}
    .ear-upload-sheet[hidden]{display:none}.ear-upload-sheet{position:fixed;z-index:160;inset:0;display:grid;padding:18px;place-items:center}.ear-upload-backdrop{position:absolute;inset:0;background:rgba(24,20,15,.72);backdrop-filter:blur(6px)}
    .ear-upload-dialog{position:relative;display:flex;width:min(720px,100%);max-height:min(92vh,900px);overflow:hidden;flex-direction:column;border:1px solid rgba(116,80,15,.22);border-radius:22px;background:#fbf8f2;box-shadow:0 28px 80px rgba(0,0,0,.34)}
    .ear-upload-header{position:relative;z-index:2;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px 16px;border-bottom:1px solid #e7ddcf;background:rgba(255,253,249,.96);backdrop-filter:blur(9px)}.ear-upload-header h2{margin:0;font-size:18px}.ear-upload-close{display:grid;width:38px;height:38px;min-height:0;padding:0;place-items:center;border:1px solid #d9cdbd;border-radius:50%;color:#493718;background:#fff;font-size:23px;line-height:1}
    .ear-upload-scroll{overflow-y:auto;overscroll-behavior:contain;padding:16px 16px calc(22px + env(safe-area-inset-bottom));scroll-behavior:smooth;-webkit-overflow-scrolling:touch}
    .ear-upload-card{padding:16px;border:1px solid #e5d7c3;border-radius:17px;background:#fff}.ear-upload-intro{margin:0 0 13px;color:#51483d;font-size:12px;line-height:1.65;text-align:center}
    .ear-photo-upload{position:relative;display:grid;width:100%;min-height:138px;gap:8px;place-content:center;overflow:hidden;padding:18px;border:2px dashed #c9a65e;border-radius:15px;color:#5e4214;background:linear-gradient(145deg,#fffdf8,#fff7e8);text-align:center;cursor:pointer;transition:.16s border-color,.16s background,.16s box-shadow,.16s transform}.ear-photo-upload:hover,.ear-photo-upload.dragging{border-color:#8f6113;background:#fff2d6;box-shadow:0 0 0 4px rgba(169,126,44,.14);transform:translateY(-1px)}.ear-photo-upload.is-processing{pointer-events:none;opacity:.68}.ear-photo-drop-icon{display:grid;width:42px;height:42px;margin:auto;place-items:center;border-radius:50%;color:#fff;background:linear-gradient(135deg,#b78c38,#74500f);font-size:25px;font-weight:900;line-height:1}.ear-photo-drop-copy{display:grid;gap:4px}.ear-photo-drop-copy strong{font-size:14px}.ear-photo-drop-copy small{color:#756e65;font-size:11px;font-weight:600;line-height:1.5}.ear-photo-upload input{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap}
    .ear-photo-privacy{margin:9px 0 0;color:#756e65;font-size:10px;line-height:1.5;text-align:center}.photo-direction-status{min-height:18px;margin:9px 0 0;color:#76500e;font-size:11px;font-weight:800;text-align:center}
    .ear-upload-scroll-hint{display:flex;align-items:center;justify-content:center;gap:6px;margin:17px 0 9px;color:#76500e;font-size:11px;font-weight:800}
    .ear-upload-guide{padding:16px;border:1px solid #e5d7c3;border-radius:17px;background:linear-gradient(180deg,#fff,#fffaf1)}.ear-upload-guide h3{margin:0 0 6px;font-size:16px}.ear-upload-guide>p{margin:0;color:var(--muted);font-size:11px;line-height:1.65}
    .ear-upload-steps{display:grid;gap:18px;margin-top:15px}.ear-upload-step{padding:13px;border:1px solid #e8dccb;border-radius:15px;background:#fff;box-shadow:0 6px 18px rgba(88,63,20,.06)}.ear-upload-step-visual{width:100%;max-width:520px;aspect-ratio:1;margin:0 auto 12px;border:1px solid #eadfcf;border-radius:13px;background-color:#fff;background-image:var(--guide-image);background-repeat:no-repeat;background-size:500% auto;background-position-y:center}.ear-upload-step:nth-child(1) .ear-upload-step-visual{background-position-x:0%}.ear-upload-step:nth-child(2) .ear-upload-step-visual{background-position-x:25%}.ear-upload-step:nth-child(3) .ear-upload-step-visual{background-position-x:50%}.ear-upload-step:nth-child(4) .ear-upload-step-visual{background-position-x:75%}.ear-upload-step:nth-child(5) .ear-upload-step-visual{background-position-x:100%}
    .ear-upload-step-copy{display:grid;grid-template-columns:32px minmax(0,1fr);gap:10px;align-items:start}.ear-upload-step-number{display:grid;width:32px;height:32px;place-items:center;border-radius:50%;color:#fff;background:linear-gradient(135deg,#b58a37,#74500f);font-size:13px;font-weight:900}.ear-upload-step strong{display:block;margin:1px 0 4px;color:#42331c;font-size:13px}.ear-upload-step p{margin:0;color:#62584c;font-size:11px;line-height:1.65}

    .ears-grid{position:relative;display:grid;grid-template-columns:1fr 1fr;gap:10px}
    .ears-grid.focus-left,.ears-grid.focus-right{grid-template-columns:minmax(0,540px);justify-content:center}
    .ears-grid.focus-left .ear-wrap[data-side="right"],.ears-grid.focus-right .ear-wrap[data-side="left"]{display:none}
    .ear-wrap{position:relative;display:grid;min-width:0;gap:6px}
    .ear-focus-btn{position:absolute;z-index:20;top:10px;left:10px;min-height:34px;padding:6px 10px;border:1px solid #dfd4c3;border-radius:999px;color:#644713;background:rgba(255,250,240,.94);box-shadow:0 5px 14px rgba(0,0,0,.1);font-size:11px;font-weight:700;backdrop-filter:blur(7px)}
    .ears-grid.focus-left .ear-wrap[data-side="left"] .ear-focus-btn,.ears-grid.focus-right .ear-wrap[data-side="right"] .ear-focus-btn{display:none}
    .ear-stage{--ear-zoom:1;--ear-user-zoom:1;--ear-user-pan-x:0%;--ear-user-pan-y:0%;--ear-shift-x:0%;--ear-shift-y:3.5%;position:relative;width:100%;aspect-ratio:2/3;overflow:hidden;border:1px solid #e2dbd1;border-radius:17px;background:#eee9e3;touch-action:pan-y;user-select:none}
    .ear-stage.custom-photo-active{cursor:grab}.ear-stage.desktop-photo-dragging{cursor:grabbing}
    .ear-stage[data-side="left"]{--ear-shift-x:-1.7%}.ear-stage[data-side="right"]{--ear-shift-x:1.7%}
    .ear-image{position:absolute;z-index:1;inset:0;width:100%;height:100%;object-fit:cover;pointer-events:none;transform:translate(calc(var(--ear-shift-x) + var(--ear-user-pan-x)),calc(var(--ear-shift-y) + var(--ear-user-pan-y))) scale(calc(var(--ear-zoom) * var(--ear-user-zoom)));transition:.08s transform}
    .ear-stage[data-side="left"] .ear-image{transform:translate(calc(var(--ear-shift-x) + var(--ear-user-pan-x)),calc(var(--ear-shift-y) + var(--ear-user-pan-y))) scaleX(-1) scale(calc(var(--ear-zoom) * var(--ear-user-zoom)))}
    .ear-stage .ear-image.custom-photo{object-fit:cover;transform:translate3d(calc(var(--ear-shift-x) + var(--ear-user-pan-x) + var(--ear-photo-pan-x,0%)),calc(var(--ear-shift-y) + var(--ear-user-pan-y) + var(--ear-photo-pan-y,0%)),0) rotate(var(--ear-photo-rotation,0deg)) scale(calc(var(--ear-zoom) * var(--ear-user-zoom))) scale(var(--ear-photo-zoom,1));backface-visibility:hidden}
    .ear-align-reference{position:absolute;z-index:18;left:calc(50% + var(--ear-shift-x));top:calc(48% + var(--ear-shift-y) - 5px);width:77%;height:94%;pointer-events:none;opacity:0;contain:paint;background:url("/assets/tryon-original/eca8e40e10895a2c.png") center/contain no-repeat;transform:translate(-50%,-50%) rotate(2deg);transform-origin:center;transition:.06s opacity}
    .ear-stage[data-side="left"] .ear-align-reference{transform:translate(-50%,-50%) rotate(-2deg) scaleX(-1)}
    .ear-stage.photo-transforming .ear-align-reference{opacity:1}
    .ear-jewel-scene{position:absolute;z-index:7;inset:0;pointer-events:none;transform:translate3d(var(--ear-photo-pan-x,0%),var(--ear-photo-pan-y,0%),0) rotate(var(--ear-photo-rotation,0deg)) scale(var(--ear-photo-zoom,1));transform-origin:center;backface-visibility:hidden;transition:.08s transform}
    .ear-stage.pinching .ear-image,.ear-stage.pinching .ear-jewel-scene{transition:none;will-change:transform}
    .ear-jewel-scene .placed{pointer-events:auto}
    .ear-stage::after{content:"";position:absolute;z-index:3;inset:0;pointer-events:none;background-image:radial-gradient(circle,rgba(164,121,38,.72) 0 .8px,rgba(255,255,255,.58) .9px 1.35px,transparent 1.5px);background-position:5px 5px;background-size:10px 10px;opacity:0;transition:.12s opacity}
    body.drag-active .ear-stage::after,.ear-stage.photo-adjusting::after,body.mode-settings .ear-stage::after{opacity:.82}
    .ear-stage.photo-transforming::after{opacity:0}
    .ear-stage.photo-transforming .placed,.ear-stage.photo-transforming .selection-tip{visibility:hidden}
    .collapse-ear{position:absolute;z-index:20;top:10px;left:10px;display:none;min-height:40px;padding:8px 14px;border:1px solid rgba(116,80,15,.2);border-radius:999px;color:#4e3710;background:rgba(255,255,255,.92);font-size:13px;font-weight:800;box-shadow:0 5px 15px rgba(0,0,0,.1);backdrop-filter:blur(7px)}
    .ear-reset-view{position:absolute;z-index:22;top:9px;right:9px;min-height:34px;padding:6px 10px;border:1px solid rgba(116,80,15,.22);border-radius:999px;color:#3f2e10;background:rgba(255,255,255,.94);box-shadow:0 5px 15px rgba(0,0,0,.11);font-size:11px;font-weight:800;backdrop-filter:blur(7px)}.ear-reset-view[hidden]{display:none}
    .mirror-badge{position:absolute;z-index:12;top:9px;right:9px;padding:4px 7px;border:1px solid rgba(34,107,178,.18);border-radius:999px;color:#285d8f;background:rgba(241,248,255,.9);font-size:9px;font-weight:700;pointer-events:none}
    .ears-grid.focus-left .ear-wrap[data-side="left"] .collapse-ear,.ears-grid.focus-right .ear-wrap[data-side="right"] .collapse-ear{display:block}
    .grid-candidate{position:absolute;z-index:6;width:12px;height:12px;margin:-6px 0 0 -6px;border:2px solid #fff;border-radius:50%;background:var(--green);box-shadow:0 0 0 5px rgba(39,119,76,.25),0 2px 5px rgba(0,0,0,.28);opacity:0;pointer-events:none;transition:.08s opacity,.08s background}
    .grid-candidate.show{opacity:1}.grid-candidate.invalid{background:var(--red);box-shadow:0 0 0 5px rgba(194,60,50,.24),0 2px 5px rgba(0,0,0,.28)}
    .placed{--rotation:0deg;position:absolute;z-index:7;left:50%;top:50%;width:9%;transform:translate(-50%,-50%) rotate(var(--rotation));transform-origin:center;cursor:grab;touch-action:none;filter:drop-shadow(0 3px 3px rgba(0,0,0,.25))}
    .placed img{display:block;width:100%;height:auto;pointer-events:none}
    .placed.selected{--selection-outline:drop-shadow(1px 0 0 rgba(255,255,255,.98)) drop-shadow(-1px 0 0 rgba(255,255,255,.98)) drop-shadow(0 1px 0 rgba(255,255,255,.98)) drop-shadow(0 -1px 0 rgba(255,255,255,.98)) drop-shadow(0 0 1.4px rgba(25,22,18,.95));transform:translate(-50%,-50%) rotate(var(--rotation));animation:selected-jewel-pulse 2.2s linear infinite}
    .placed.dragging{cursor:grabbing;animation:none;transform:translate(-50%,-50%) rotate(var(--rotation)) scale(1.22);filter:drop-shadow(0 0 2px rgba(255,255,255,1)) drop-shadow(0 0 4px rgba(116,80,15,.82)) drop-shadow(0 8px 7px rgba(0,0,0,.36))}
    @keyframes selected-jewel-pulse{0%,100%{filter:var(--selection-outline) drop-shadow(-6px -2px 10px rgba(0,221,255,.9)) drop-shadow(6px 2px 12px rgba(255,48,190,.9)) drop-shadow(0 7px 13px rgba(255,193,43,.82))}33%{filter:var(--selection-outline) drop-shadow(5px -5px 13px rgba(134,81,255,.95)) drop-shadow(-6px 3px 11px rgba(0,232,184,.9)) drop-shadow(3px 7px 15px rgba(255,70,104,.88))}66%{filter:var(--selection-outline) drop-shadow(6px 2px 11px rgba(0,174,255,.92)) drop-shadow(-4px -6px 15px rgba(255,65,225,.92)) drop-shadow(-3px 7px 13px rgba(255,219,57,.86))}}
    @media(prefers-reduced-motion:reduce){.placed.selected{animation:none;filter:var(--selection-outline) drop-shadow(-5px 0 11px rgba(0,221,255,.85)) drop-shadow(5px 0 11px rgba(255,48,190,.85)) drop-shadow(0 6px 12px rgba(255,193,43,.78))}}
    .selection-tip{position:absolute;z-index:25;width:max-content;max-width:calc(100% - 14px);padding:5px 8px;border:1px solid rgba(255,255,255,.75);border-radius:9px;color:#fff;background:rgba(29,26,23,.82);box-shadow:0 4px 12px rgba(0,0,0,.2);font-size:9px;font-weight:700;line-height:1.35;text-align:center;pointer-events:none;transform:translate(-50%,-100%);transition:.12s opacity}.selection-tip::after{content:"";position:absolute;left:50%;top:100%;border:4px solid transparent;border-top-color:rgba(29,26,23,.82);transform:translateX(-50%)}body.drag-active .selection-tip{opacity:0}
    body.mode-settings .placed{pointer-events:none;opacity:.72}
    .drag-feedback{position:absolute;z-index:15;display:none;align-items:center;gap:5px;max-width:150px;padding:5px 8px;border-radius:999px;color:#fff;background:rgba(194,60,50,.94);font-size:10px;font-weight:800;white-space:nowrap;pointer-events:none;transform:translate(-50%,-250%);box-shadow:0 5px 16px rgba(0,0,0,.2)}
    .drag-feedback.show{display:flex}.drag-feedback.valid{background:rgba(39,119,76,.94)}
    .main-controls{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:8px;align-items:start}
    .nudge-panel{display:grid;justify-items:start;gap:4px;visibility:hidden;opacity:0;transition:.15s opacity}
    .nudge-panel.show{visibility:visible;opacity:1}
    .control-label{width:120px;color:var(--muted);font-size:10px;text-align:center}
    .nudge-pad{display:grid;grid-template-columns:repeat(3,38px) 112px;grid-template-rows:repeat(3,34px);grid-template-areas:"blank-up up blank-gap rotate" "left center right blank-middle" "blank-down down blank-last undo";gap:3px}
    .nudge-actions{display:flex;align-items:flex-end;justify-content:center;gap:7px}
    .nudge-up{grid-area:up}.nudge-left{grid-area:left}.nudge-right{grid-area:right}.nudge-down{grid-area:down}.rotate-btn{grid-area:rotate}.delete-jewel-btn{grid-area:blank-middle;color:var(--red);border-color:#ebbbb6;background:var(--red-soft);line-height:1}
    .nudge-center{grid-area:center;display:grid;place-items:center;color:#b59655;font-size:11px}
    .mini-btn{display:grid;width:100%;height:34px;padding:0;place-items:center;border:1px solid var(--line);border-radius:9px;color:var(--ink);background:#fff;font-size:15px;font-weight:800;touch-action:manipulation}.mini-btn.command-btn{display:flex;align-items:center;justify-content:flex-start;gap:6px;padding:0 9px;font-size:11px;line-height:1;white-space:nowrap}.command-btn .command-icon{display:grid;width:20px;flex:0 0 20px;place-items:center;font-size:19px;line-height:1}.mini-btn:disabled{opacity:.38}
    .mini-btn.undo-btn{grid-area:undo;width:100%;height:34px;border:1px solid var(--line);border-radius:9px;color:#111;background:#fff;-webkit-appearance:none;appearance:none}.undo-btn svg{display:block;width:18px;height:18px;flex:0 0 18px;fill:none;stroke:currentColor;stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round}
    .action-stack{display:grid;gap:6px}
    .action-stack .btn{width:100%}
    .saved-section{margin-top:13px;padding-top:13px;border-top:1px solid #ebe4da}
    .saved-section-head{display:flex;align-items:baseline;justify-content:space-between;gap:8px;margin-bottom:8px}.saved-section-head strong{font-size:13px}.saved-section-head span{color:var(--muted);font-size:10px}.scheme-status{margin:0 0 9px;padding:8px 10px;border:1px solid #eadfce;border-radius:10px;color:#5d513f;background:#fbf8f2;font-size:10px;line-height:1.5}
    .saved-slots{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px}
    .saved-slot-card{display:grid;min-width:0;gap:5px}
    .saved-slot{position:relative;display:grid;width:100%;aspect-ratio:1;min-width:0;overflow:hidden;place-items:center;padding:6px;border:1.5px dashed #cdbfae;border-radius:13px;color:var(--muted);background:#faf8f4;font-size:11px;font-weight:700;text-align:center;transition:.16s transform,.16s border-color,.16s box-shadow}
    .saved-slot.filled{border-style:solid;border-color:#c5ab7a;color:#fff;background:#eee9e3;box-shadow:0 6px 16px rgba(68,49,20,.1)}
    .saved-slot.filled img{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;background:#eee9e3}
    .saved-slot.active{border-color:#a96f08!important;border-style:solid;outline:3px solid #efb73f;outline-offset:2px;box-shadow:0 0 0 6px rgba(239,183,63,.28),0 11px 25px rgba(116,80,15,.3);transform:translateY(-2px)}
    .saved-slot.active::after{content:"✓ 当前";position:absolute;z-index:3;top:5px;right:5px;padding:3px 6px;border:1px solid rgba(255,255,255,.82);border-radius:999px;color:#fff;background:linear-gradient(135deg,#d49b2b,#74500f);box-shadow:0 3px 9px rgba(50,34,8,.32);font-size:9px;font-weight:900;line-height:1.2;letter-spacing:.02em}
    .scheme-name-btn{overflow:hidden;padding:3px 2px;border:0;color:#5c4931;background:transparent;font-size:10px;font-weight:700;text-align:center;text-overflow:ellipsis;white-space:nowrap}.scheme-name-btn:disabled{cursor:default;opacity:.55}.scheme-name-btn:not(:disabled){text-decoration:underline;text-decoration-style:dotted;text-underline-offset:3px}
    .side{display:grid;gap:11px}
    .side-card{padding:14px}
    .section-title{display:flex;align-items:baseline;justify-content:space-between;gap:10px;margin-bottom:10px}
    .section-title h2{margin:0;font-size:15px}.section-title span{color:var(--muted);font-size:11px}
    .tray{display:grid;grid-auto-columns:calc(20% - 4px);grid-auto-flow:column;grid-template-rows:1fr;gap:5px;overflow-x:auto;overscroll-behavior-x:contain;padding:0 0 5px;scroll-behavior:auto;scrollbar-color:#c8b68f transparent;scrollbar-width:thin;touch-action:pan-x;-webkit-overflow-scrolling:touch}.tray.pointer-scrolling{cursor:grabbing}
    .recommend-block{margin-top:9px;padding-top:9px;border-top:1px solid #eee4d5}.recommend-head{display:flex;align-items:baseline;justify-content:space-between;gap:8px;margin-bottom:7px}.recommend-head h3{margin:0;font-size:13px}.recommend-head span{color:var(--muted);font-size:9px}
    .jewel-card{min-width:0;padding:4px;border:1px solid var(--line);border-radius:10px;background:#fff;touch-action:pan-x;cursor:grab;user-select:none;transition:.15s transform,.15s border-color,.15s box-shadow}
    .jewel-card:active{cursor:grabbing}.jewel-card.dragging-source{border-color:#b48631;box-shadow:0 7px 18px rgba(116,80,15,.18);transform:scale(.97)}
    .jewel-card img{display:block;width:min(100%,68px);height:62px;margin:auto;object-fit:contain;pointer-events:none}.jewel-card b{display:block;overflow:hidden;margin:2px 0 1px;font-size:10px;text-align:center;text-overflow:ellipsis;white-space:nowrap}
    .jewel-price{display:block;color:var(--gold-dark);font-size:9px;font-weight:800;text-align:center}.drag-tip{display:block;margin-top:2px;color:var(--muted);font-size:8px;text-align:center}
    .tray-ghost{position:fixed;z-index:80;display:block;object-fit:contain;pointer-events:none;transform:translate(-50%,-50%);filter:drop-shadow(0 0 2px rgba(255,255,255,1)) drop-shadow(0 0 4px rgba(116,80,15,.82)) drop-shadow(0 8px 7px rgba(0,0,0,.3));opacity:.98}
    .btn{min-height:40px;padding:8px 10px;border:1px solid var(--line);border-radius:11px;color:var(--ink);background:#fff;font-size:12px;font-weight:700}
    .btn.primary{color:#fff;border-color:#74500f;background:linear-gradient(135deg,#a97e2c,#74500f)}
    .btn.danger{color:var(--red);border-color:#ebbbb6;background:var(--red-soft)}
    .btn:disabled{cursor:default;opacity:.38}
    .row{display:grid;grid-template-columns:1fr 1fr;gap:7px}.row+.row{margin-top:7px}
    .notice{margin:0;color:var(--muted);font-size:11px;line-height:1.6}
    .settings-only{display:none}body.mode-settings .settings-only{display:block}body.mode-settings .customer-only{display:none}
    .form-label{display:block;margin:9px 0 5px;color:var(--muted);font-size:11px}
    .input,.select{width:100%;min-height:39px;padding:8px 10px;border:1px solid var(--line);border-radius:10px;color:var(--ink);background:#fff;outline:none}
    .input:focus,.select:focus{border-color:#af8a43;box-shadow:0 0 0 3px rgba(175,138,67,.12)}
    .point-empty{padding:12px;border:1px dashed #d4cabd;border-radius:11px;color:var(--muted);background:#faf8f4;font-size:11px;line-height:1.55}
    .size-row{display:grid;grid-template-columns:1fr 44px;gap:8px;align-items:center}.size-row input{width:100%;accent-color:var(--gold)}.size-row output{color:var(--gold-dark);font-size:11px;font-weight:800;text-align:right}
    .rules{display:grid;max-height:260px;overflow:auto;border:1px solid var(--line);border-radius:11px;background:#fff}.rule{display:flex;align-items:center;gap:8px;padding:8px 9px;border-bottom:1px solid #eee8df;font-size:11px}.rule:last-child{border-bottom:0}.rule input{width:16px;height:16px;accent-color:var(--gold)}.rule em{margin-left:auto;color:var(--muted);font-size:10px;font-style:normal}
    .config-tip{margin:0 0 9px;padding:9px 10px;border-radius:10px;color:#644c1c;background:#fff8e8;font-size:11px;line-height:1.55}
    .config-sync-state{margin:8px 0 0;color:var(--muted);font-size:10px;line-height:1.45;text-align:center}.config-sync-state.ok{color:var(--green)}.config-sync-state.error{color:var(--red)}
    .current-save-btn{position:absolute;z-index:21;right:10px;bottom:10px;min-height:36px;padding:7px 11px;background:rgba(255,255,255,.92);box-shadow:0 5px 14px rgba(0,0,0,.14);backdrop-filter:blur(7px)}
    .result-card[hidden]{display:none}.result-card{margin-top:12px;padding:13px;overflow:hidden;border:1px solid rgba(118,91,42,.18);border-radius:17px;background:#fff}.result-layout{display:grid;grid-template-columns:minmax(0,1.08fr) minmax(260px,.92fr);gap:12px;align-items:stretch}.result-preview-wrap{position:relative;display:grid;min-width:0;min-height:220px;overflow:hidden;place-items:center;border:1px solid var(--line);border-radius:14px;background:#eee9e3}.result-image{display:block;width:100%;max-height:520px;object-fit:contain;cursor:zoom-in}.result-preview-hint{position:absolute;left:50%;bottom:8px;padding:4px 8px;border-radius:999px;color:#fff;background:rgba(29,26,23,.62);font-size:9px;pointer-events:none;transform:translateX(-50%)}.result-summary{display:flex;min-width:0;flex-direction:column}.saved-list{display:grid;gap:7px;margin:0 0 9px}.saved-row{display:grid;grid-template-columns:1fr auto;gap:9px;padding-bottom:7px;border-bottom:1px solid #eee8df;font-size:12px}.saved-row:last-child{border-bottom:0}.saved-row small{display:block;margin-top:2px;color:var(--muted);font-size:10px}.saved-total{display:flex;align-items:center;justify-content:space-between;margin:0 0 11px;padding-top:10px;border-top:1px solid var(--line);font-size:13px;font-weight:800}.saved-total strong{color:var(--gold-dark);font-size:18px}.result-cart-btn{width:100%;margin-top:auto}.cart-state{margin:8px 0 0;color:var(--green);font-size:11px;text-align:center}.cart-state:empty{display:none}
    .image-lightbox[hidden]{display:none}.image-lightbox{position:fixed;z-index:120;inset:0;display:grid;padding:18px;place-items:center;background:rgba(18,16,14,.88);backdrop-filter:blur(8px)}.lightbox-frame{position:relative;display:grid;max-width:min(94vw,1100px);max-height:92vh;overflow:hidden;place-items:center;border-radius:16px;background:#eee9e3;box-shadow:0 22px 70px rgba(0,0,0,.42)}.lightbox-image{display:block;max-width:94vw;max-height:92vh;object-fit:contain}.lightbox-close{position:absolute;z-index:3;top:9px;right:9px;width:40px;height:40px;padding:0;border:1px solid rgba(255,255,255,.35);border-radius:50%;color:#fff;background:rgba(29,26,23,.7);font-size:25px;line-height:1}.lightbox-download{position:absolute;z-index:3;right:10px;bottom:10px;min-height:40px;padding:8px 12px;color:#fff;border-color:#8e681e;background:linear-gradient(135deg,#b58b38,#74500f);box-shadow:0 7px 20px rgba(0,0,0,.25)}
    .feedback-board{display:none!important;margin-top:16px;padding:17px}.feedback-layout{display:grid;grid-template-columns:minmax(260px,.86fr) minmax(0,1.14fr);gap:18px}.feedback-form{display:grid;gap:8px}.feedback-form label{color:var(--muted);font-size:11px;font-weight:700}.feedback-textarea{min-height:105px;resize:vertical;line-height:1.55}.rating-picker{display:flex;gap:5px}.rating-star{width:38px;height:36px;padding:0;border:1px solid var(--line);border-radius:10px;color:#b8ada0;background:#fff;font-size:23px;line-height:1}.rating-star.active{color:#d69b26;border-color:#d7b468;background:#fff9e9;box-shadow:0 0 0 2px rgba(214,155,38,.12)}.feedback-note,.feedback-status{margin:0;color:var(--muted);font-size:10px;line-height:1.5}.feedback-status.ok{color:var(--green)}.feedback-status.error{color:var(--red)}.feedback-list-wrap{min-width:0}.feedback-list{display:grid;max-height:390px;gap:8px;overflow:auto;padding-right:3px}.feedback-empty{padding:22px;border:1px dashed var(--line);border-radius:12px;color:var(--muted);background:#faf8f4;font-size:11px;text-align:center}.feedback-item{padding:10px 11px;border:1px solid #e7dfd4;border-radius:12px;background:#fff}.feedback-item-head{display:flex;align-items:center;justify-content:space-between;gap:8px}.feedback-item-head strong{overflow:hidden;font-size:12px;text-overflow:ellipsis;white-space:nowrap}.feedback-stars{color:#d69b26;font-size:13px;letter-spacing:.08em}.feedback-item p{margin:6px 0 0;color:#453f38;font-size:11px;line-height:1.6;white-space:pre-wrap;word-break:break-word}.feedback-item time{display:block;margin-top:5px;color:#9a9288;font-size:9px}
    .satisfaction-layer[hidden]{display:none}.satisfaction-layer{position:fixed;z-index:155;inset:0;display:grid;padding:18px;place-items:center;background:rgba(25,21,17,.48);backdrop-filter:blur(5px)}.satisfaction-card{position:relative;width:min(430px,100%);padding:24px;border:1px solid rgba(164,121,38,.28);border-radius:22px;background:#fffdf9;box-shadow:0 24px 70px rgba(28,22,14,.28)}.satisfaction-kicker{margin:0 0 5px;color:var(--gold-dark);font-size:11px;font-weight:800;letter-spacing:.16em}.satisfaction-card h2{margin:0;color:#2d241a;font-family:"STKaiti","KaiTi","Songti SC",serif;font-size:25px;font-weight:500}.satisfaction-copy{margin:7px 36px 15px 0;color:var(--muted);font-size:13px;line-height:1.6}.satisfaction-close{position:absolute;top:12px;right:12px;width:36px;height:36px;padding:0;border:1px solid var(--line);border-radius:50%;color:#746a5e;background:#fff;font-size:22px;line-height:1}.satisfaction-stars{display:flex;justify-content:center;gap:7px;margin:4px 0 6px}.satisfaction-star{width:46px;height:44px;padding:0;border:1px solid #dfd5c6;border-radius:12px;color:#c5baad;background:#fff;font-size:28px;line-height:1;touch-action:manipulation;-webkit-tap-highlight-color:transparent;transition:.12s transform,.12s color,.12s background,.12s border-color}.satisfaction-star:hover{transform:translateY(-2px)}.satisfaction-star.active{color:#d49a24;border-color:#d6b364;background:#fff8e5;box-shadow:0 0 0 2px rgba(212,154,36,.12)}.satisfaction-labels{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px;color:#92887b;font-size:10px}.satisfaction-labels strong{color:var(--gold-dark);font-size:11px;font-weight:800}.satisfaction-comment{width:100%;min-height:76px;margin-bottom:10px;resize:vertical;line-height:1.5}.satisfaction-actions{display:flex;align-items:center;gap:10px}.satisfaction-submit{min-width:120px}.satisfaction-status{margin:0;flex:1;color:var(--muted);font-size:11px;line-height:1.45}.satisfaction-status.ok{color:var(--green)}.satisfaction-status.error{color:var(--red)}
    .toast{position:fixed;z-index:180;left:50%;bottom:calc(24px + env(safe-area-inset-bottom));max-width:calc(100% - 30px);padding:10px 15px;color:#fff;background:rgba(29,26,23,.92);border-radius:999px;opacity:0;pointer-events:none;transform:translate(-50%,12px);transition:.2s;font-size:12px;white-space:nowrap}.toast.show{opacity:1;transform:translate(-50%,0)}
    @media(max-width:900px){.layout{grid-template-columns:1fr}.side{grid-template-columns:1fr 1fr}.side-card:last-child{grid-column:1/-1}}
    @media(max-width:620px){.app{padding:9px 7px calc(20px + env(safe-area-inset-bottom))}.topbar{display:block}.brand-heading{display:block}.title-tip{margin-top:4px}.mode-tabs{width:100%;margin-top:10px}.mode-btn{flex:1}.viewer{padding:7px;border-radius:16px}.tray-panel{margin-bottom:8px;padding:8px}.ear-upload-sheet{padding:0}.ear-upload-dialog{width:100%;height:100%;max-height:none;border:0;border-radius:0}.ear-upload-header{padding:10px 11px}.ear-upload-header h2{font-size:16px}.ear-upload-scroll{padding:12px 10px calc(22px + env(safe-area-inset-bottom))}.ear-upload-card,.ear-upload-guide{padding:12px}.ear-photo-upload{min-height:76px;padding:10px}.ear-photo-drop-icon{width:34px;height:34px;font-size:20px}.ear-photo-drop-copy strong{font-size:12px}.ear-photo-drop-copy small{font-size:9px}.ear-upload-step{padding:10px}.ear-upload-step-visual{margin-bottom:10px}.ears-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:5px}.ear-wrap{gap:4px}.ear-side-upload{min-height:32px;padding:5px 3px;border-radius:9px;font-size:10px}.ears-grid.focus-left,.ears-grid.focus-right{grid-template-columns:minmax(0,1fr)}.ear-stage{--ear-zoom:1.32;--ear-shift-y:4%;border-radius:12px}.ear-focus-btn{top:7px;left:7px;min-height:30px;padding:5px 7px;font-size:9px}.collapse-ear{min-height:38px;padding:7px 13px;font-size:12px}.ear-reset-view{top:7px;right:7px;min-height:31px;padding:5px 8px;font-size:9px}.current-save-btn{right:7px;bottom:7px;min-height:32px;padding:5px 8px;font-size:9px}.mini-btn.undo-btn{width:100%;height:31px}.undo-btn svg{width:17px;height:17px;flex-basis:17px}.side{grid-template-columns:1fr}.side-card:last-child{grid-column:auto}.main-controls{grid-template-columns:minmax(0,1.55fr) minmax(0,.65fr);gap:5px}.control-label{width:106px}.nudge-pad{grid-template-columns:repeat(3,34px) 96px;grid-template-rows:repeat(3,31px);gap:2px}.mini-btn{height:31px}.mini-btn.command-btn{gap:4px;padding:0 6px;font-size:9px}.command-btn .command-icon{width:17px;flex-basis:17px;font-size:17px}.action-stack{gap:4px}.action-stack .btn{min-height:36px;padding:6px 4px;font-size:10px}.saved-slots{gap:5px}.saved-slot{padding:3px;border-radius:9px;font-size:9px}.scheme-name-btn{font-size:9px}.result-card{padding:9px}.tray{grid-auto-columns:calc(20% - 3.2px);gap:4px}.jewel-card{padding:2px}.jewel-card img{height:50px}.jewel-card b{font-size:8px}.jewel-price{font-size:8px}.drag-tip{display:none}.result-layout{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:7px}.result-preview-wrap{min-height:170px}.result-preview-hint{bottom:5px;padding:3px 6px;font-size:8px}.saved-list{gap:5px;margin-bottom:6px}.saved-row{gap:5px;padding-bottom:5px;font-size:10px}.saved-row small{font-size:8px}.saved-total{margin-bottom:7px;padding-top:7px;font-size:10px}.saved-total strong{font-size:14px}.result-cart-btn{min-height:35px;padding:6px;font-size:10px}.cart-state{font-size:9px}.feedback-board{margin-top:10px;padding:12px}.feedback-layout{grid-template-columns:1fr;gap:14px}.feedback-list{max-height:330px}.image-lightbox{padding:8px}.lightbox-image{max-width:calc(100vw - 16px);max-height:calc(100vh - 16px)}.lightbox-close{top:7px;right:7px;width:38px;height:38px}.lightbox-download{right:8px;bottom:8px;min-height:37px;padding:7px 10px;font-size:11px}}
  
