
*{box-sizing:border-box}body{margin:0;background:#f6f6f6;color:#202124;font-family:Arial,Tahoma,sans-serif}button,input,select{font:inherit}button{cursor:pointer}header{height:84px;border-bottom:1px solid #dfe0e3;display:flex;align-items:center;justify-content:space-between;padding:0 5%}.logo{font-size:22px;font-weight:800;letter-spacing:-1px}.mark{display:inline-grid;place-items:center;background:#e5e5e5;border:1px solid #30372c;border-radius:8px;width:32px;height:32px;margin-right:10px;transform:rotate(-8deg)}.small{font-size:12px;color:#6a6d72}.tag{border:1px solid #d8dadd;padding:8px 12px;border-radius:20px;font-size:11px;letter-spacing:1px}main{max-width:1500px;margin:auto;padding:40px 5%}h1{font-size:46px;letter-spacing:-2px;margin:8px 0 10px}h1 em{font-family:Georgia,serif;font-weight:400}p{color:#6a6d72;line-height:1.7;font-size:14px}.intro{display:flex;justify-content:space-between;align-items:end;margin-bottom:30px}.workspace{display:grid;grid-template-columns:minmax(0,1fr) 350px;gap:24px}.preview{position:relative;background:#eeeeef;border:1px solid #dfe0e3;border-radius:22px;overflow:hidden;min-height:550px;display:flex;flex-direction:column}.previewtop{display:flex;justify-content:space-between;padding:22px;font-size:11px;letter-spacing:1.5px}.live{background:#fff9;border-radius:20px;padding:8px 12px;letter-spacing:0}.live:before{content:'●';color:#555b66;margin-right:6px}canvas{width:100%;height:365px;display:block;touch-action:manipulation}.previewbottom{margin-top:auto;padding:20px 24px;display:flex;align-items:center;justify-content:space-between;border-top:1px solid #d8dadd;font-size:12px}.viewbuttons{display:flex;gap:6px}.viewbuttons button{border:1px solid #d8dadd;background:transparent;border-radius:8px;padding:9px 14px}.viewbuttons button.active{background:#fff}.panel{background:#fff;border:1px solid #dfe0e3;border-radius:22px;padding:25px}.sectiontitle{font-weight:700;font-size:14px;margin-bottom:18px;display:flex;align-items:center;gap:9px}.num{font-size:10px;border:1px solid #dbe0d3;border-radius:50%;padding:5px;color:#6a6d72}.section{padding-bottom:23px;margin-bottom:22px;border-bottom:1px solid #eef0e8}label{font-size:12px;display:block;margin-bottom:9px}input[type=text],select{width:100%;border:1px solid #d8dadd;border-radius:9px;padding:12px;background:#fcfcfa;color:#333}input:focus,select:focus{outline:2px solid #777b83}#counter{font-size:11px;text-align:right;margin:8px 0 15px;color:#6a6d72}.countrow{display:flex;align-items:center;justify-content:space-between;margin-top:14px;font-size:12px}.stepper{display:flex;gap:17px;align-items:center}.stepper button{border:1px solid #d8dadd;background:#fff;border-radius:6px;width:28px;height:28px}.swatches{display:flex;gap:9px;margin:12px 0 18px}.swatch{width:29px;height:29px;border:3px solid white;outline:1px solid #e1e3db;border-radius:50%}.swatch.active{outline:2px solid #414b31}.colorrow{display:grid;grid-template-columns:1fr 1fr;gap:12px}.colorfield{display:flex;align-items:center;border:1px solid #d8dadd;border-radius:8px;padding:7px;gap:6px;font-size:11px}input[type=color]{width:25px;height:25px;padding:0;border:0;background:none;cursor:pointer}.toggle{display:flex;align-items:center;gap:8px;font-size:12px;margin-top:15px;cursor:pointer}.render{width:100%;padding:14px;border:0;background:#202124;color:#ffffff;border-radius:10px;font-weight:700}.download{width:100%;margin-top:10px;padding:12px;border:1px solid #d8dadd;background:white;border-radius:10px;font-size:12px}.note{font-size:10px;text-align:center;margin:13px 0 0;color:#767980}.details{display:flex;gap:32px;margin-top:22px}.detail{font-size:12px;color:#6a6d72}.detail strong{display:block;color:#303236;margin-top:6px;font-size:13px}.foot{margin-top:35px;display:flex;justify-content:space-between;font-size:11px;color:#767980}#status{font-size:12px;color:#5b7338;min-height:18px;margin-top:12px}button:hover{filter:brightness(.96)}button:focus-visible{outline:2px solid #555b66;outline-offset:3px}@media(max-width:850px){.workspace{grid-template-columns:1fr}.intro{display:block}h1{font-size:38px}.intro .tag{display:none}.preview{min-height:440px}canvas{height:300px}header{height:68px}.small{display:none}main{padding:28px 5%}.panel{padding:22px}.details{gap:20px}}

.workspace{grid-template-columns:1fr;gap:28px}.preview{min-height:390px}canvas{height:290px}.details{margin-top:16px}.panel{padding:28px}.editorhead{display:flex;justify-content:space-between;align-items:center}.editorhead .sectiontitle{margin-bottom:0;font-size:20px}.editorhead p{margin:6px 0 22px}.toolbar{display:flex;align-items:end;justify-content:space-between;gap:16px;margin-bottom:22px}.toolbar select{min-width:230px}.add{background:#ededee;border:1px solid #cdd8bb;border-radius:9px;padding:12px 18px;min-height:44px}.hint{font-size:12px}table{width:100%;border-collapse:collapse;table-layout:fixed}th{text-align:left;color:#6a6d72;font-weight:400;font-size:12px;padding:12px;background:#f6f7f1}th:first-child{width:60px}th:nth-child(2){width:120px}th:last-child{width:60px}td{padding:12px;border-bottom:1px solid #e9ecdf}td input[type=text]{min-height:44px;font-size:20px;text-align:center;font-weight:bold;width:100%;padding:8px}.rownum{font-size:12px;color:#89917e}.colorcontrol{display:flex;align-items:center;gap:8px}.colorcontrol input[type=color]{width:44px;height:44px;border:1px solid #d8dadd;padding:4px;border-radius:9px;flex-shrink:0}.hex{font-size:11px;color:#7d8576}.delete{border:1px solid #e5e7df;background:#fff;border-radius:8px;width:44px;height:44px;color:#9a6c6c}.delete:disabled,.add:disabled{opacity:.4;cursor:default}.actions{display:flex;gap:12px;margin-top:24px}.actions button{width:auto;flex:1;margin:0;min-height:48px}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0)}.mobile-label{display:none}button,input,select{touch-action:manipulation}main{max-width:1200px}.intro{margin-bottom:22px}
@media(max-width:650px){main{padding:24px 16px}.preview{min-height:280px}canvas{height:200px}.previewtop{padding:16px}.previewbottom{padding:12px}.details{flex-wrap:wrap;gap:16px}.panel{padding:16px}.editorhead .sectiontitle{font-size:18px}.editorhead p{font-size:12px}.toolbar select{min-width:0;width:100%}.toolbar>div{flex:1}.add{padding:12px;white-space:nowrap}table,tbody{display:block}thead{display:none}tr{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;background:#fafbf7;border:1px solid #e1e5d8;border-radius:12px;padding:14px;margin-bottom:12px}td{border:0;padding:0;min-width:0}td:nth-child(1){grid-column:1;grid-row:1;align-self:center}td:nth-child(2){grid-column:1 / 3;grid-row:2}td:nth-child(3){grid-column:1;grid-row:3}td:nth-child(4){grid-column:2;grid-row:3}td:nth-child(5){grid-column:3;grid-row:3}td:nth-child(6){grid-column:3;grid-row:1;justify-self:end}.mobile-label{display:block;font-size:11px;margin-bottom:8px;color:#727b67}.colorcontrol{flex-direction:column;align-items:stretch;gap:6px}.colorcontrol input[type=color]{width:100%;height:44px}.hex{font-size:10px;text-align:center}.actions{flex-direction:column}.hint{line-height:1.6}.foot{gap:12px}.previewbottom>span{font-size:10px}}

.admin-form{display:grid;grid-template-columns:2fr 1fr auto;gap:12px;align-items:end}.admin-form input{height:46px}.admin-color{width:100%!important;height:46px!important}.inventory{display:grid;gap:12px;margin-top:24px}.inventory-row{display:grid;grid-template-columns:2fr 70px 1fr auto;gap:12px;align-items:center;padding:16px;border:1px solid #e1e5d8;border-radius:12px}.inventory-row input[type=color]{width:56px;height:44px}.inventory-row input[type=text]{text-align:left;font-size:15px}.inventory-row label{margin:0}.inventory-row button{height:44px}.notice{padding:12px 16px;background:#eef2e3;border-radius:10px;font-size:13px}.admin-actions{display:flex;gap:12px;margin-top:24px}.admin-actions button{min-height:48px}.hidden{display:none!important}a{color:inherit}.error{color:#ab3535}@media(max-width:650px){.admin-form{grid-template-columns:1fr 80px}.admin-form button{grid-column:1/-1}.inventory-row{grid-template-columns:1fr 60px}.inventory-row label{font-size:12px}.admin-actions{flex-direction:column}}
.portal-action{display:block;text-align:center;text-decoration:none;min-height:48px;line-height:1.5}.portal-action:focus-visible{outline:2px solid #555b66;outline-offset:4px}

input[type=password]{width:100%;border:1px solid #d8dadd;border-radius:9px;padding:12px;background:#fcfcfa;min-height:46px;font:inherit}input[type=password]:focus{outline:2px solid #777b83}

.pricefields{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}input[type=number]{width:100%;min-height:44px;border:1px solid #d8dadd;border-radius:9px;padding:10px;font:inherit}.checkout-grid{display:grid;grid-template-columns:1.3fr 1fr;gap:24px;align-items:start}.checkout-image{width:100%;border-radius:16px;display:block}.bill-line{display:flex;justify-content:space-between;gap:16px;padding:12px 0;font-size:14px}.bill-total{border-top:1px solid #d8dadd;margin-top:14px;font-size:22px;font-weight:700}.checkout-color{display:inline-block;border-radius:4px;width:12px;height:12px;margin-right:6px;border:1px solid #0002}.checkout-key{padding:12px 0;border-bottom:1px solid #e7eadf;font-size:13px}.checkout-key p{font-size:12px;margin:5px 0}.checkout-quantity{width:90px!important}.checkout-note{background:#f1f4e8;border-radius:10px;padding:14px;margin-top:20px}#checkout-error{color:#a33737} @media(max-width:650px){.pricefields,.checkout-grid{grid-template-columns:1fr}.checkout-grid{gap:16px}.bill-line{font-size:13px}}

@media(max-width:650px){.checkout-grid aside{order:-1}}

.price-toast{position:fixed;top:20px;left:50%;transform:translateX(-50%);z-index:10000;max-width:calc(100vw - 32px);padding:18px 28px;border-radius:14px;background:#314922;color:white;box-shadow:0 8px 30px #0003;font-size:16px;font-weight:700}.price-toast.error-toast{background:#8a2929}.price-toast[hidden]{display:none}
.keychain-admin{margin-top:24px;border-top:1px solid #e1e5d8;padding-top:18px}.keychain-inventory{display:grid;grid-template-columns:2fr 80px 1.4fr 80px 44px;gap:12px;align-items:center;border:1px solid #e2e7d9;border-radius:12px;padding:14px;margin:12px 0}.keychain-inventory input:not([type=checkbox]){width:100%;min-height:44px;margin-top:8px}.keychain-inventory input[type=color]{height:44px}.keychain-inventory label{margin:0}@media(max-width:650px){.keychain-inventory{grid-template-columns:1fr 75px}.keychain-inventory .delete{grid-column:2}.keychain-inventory input{min-width:0}}
