From b7575e3995ebbc9738ba35fa67d5e47f0f372a75 Mon Sep 17 00:00:00 2001 From: Daniel Covington Date: Thu, 20 Aug 2026 12:18:30 -0400 Subject: [PATCH] Add revised order-form fields, boxed request-order layout, branded emails - Implement Election Materials order-form revisions (docs/lucid *(2).pdf): new "permanent ballot list" question, and a Yes/No/Unsure nonprofit-status question now asked on both blue-envelope permit-ownership branches, with a matching migration, model/repository regen, and validation updates. - Box the /request-order form and heading in the site's form-panel style. - Shrink the site footer. - After request-order and order submission, redirect to / with a flash message instead of re-rendering the form page inline. - Skin the continuation and order-confirmation emails to match the site's branding (logo, navy header/footer, purple accents) instead of plain unstyled HTML. Co-Authored-By: Claude Sonnet 5 --- app/controllers/OrderApiController.asp | 1 + app/controllers/RequestOrderController.asp | 2 +- app/models/OrderDetailsAnswersMapper.asp | 4 +- app/models/OrderDetailsLabels.asp | 1 + app/models/OrderDetailsRepository.asp | 22 +- app/models/OrderMailer.asp | 65 +- app/models/POBO_OrderDetails.asp | 27 +- app/views/Order/continue.asp | 26 +- app/views/RequestOrder/index.asp | 48 +- ..._list_count_and_blue_nonprofit_options.asp | 44 + .../Election Materials Order Form #1 (2).pdf | Bin 0 -> 55101 bytes ...Election Materials Request Form #2 (2).pdf | Bin 0 -> 41573 bytes public/css/styles.css | 26 +- public/web.config | 11 +- purple-envelope-order-site.zip | Bin 10599 -> 0 bytes purple-envelope-order-site/index.html | 616 --------- purple-envelope-order-site/script.js | 121 -- purple-envelope-order-site/styles.css | 1149 ----------------- 18 files changed, 188 insertions(+), 1975 deletions(-) create mode 100644 db/migrations/20260820114612_add_purple_ballot_list_count_and_blue_nonprofit_options.asp create mode 100644 docs/lucid/Election Materials Order Form #1 (2).pdf create mode 100644 docs/lucid/Election Materials Request Form #2 (2).pdf delete mode 100644 purple-envelope-order-site.zip delete mode 100644 purple-envelope-order-site/index.html delete mode 100644 purple-envelope-order-site/script.js delete mode 100644 purple-envelope-order-site/styles.css diff --git a/app/controllers/OrderApiController.asp b/app/controllers/OrderApiController.asp index 748c821..d3ad008 100644 --- a/app/controllers/OrderApiController.asp +++ b/app/controllers/OrderApiController.asp @@ -119,6 +119,7 @@ Class OrderApiController_Class ' should not turn a successful submission into a failed one. OrderMailer().SendOrderDetailsEmail order, model + Flash().Success = "Your order has been submitted. We'll be in touch with your quote soon." Response.Write "{""success"":true}" End Sub diff --git a/app/controllers/RequestOrderController.asp b/app/controllers/RequestOrderController.asp index b33e684..53ca498 100644 --- a/app/controllers/RequestOrderController.asp +++ b/app/controllers/RequestOrderController.asp @@ -93,7 +93,7 @@ Class RequestOrderController_Class OrderMailer().SendContinuationEmail email, token Flash().Success = "Check your email for a link to continue your order." - Response.Redirect Routes().AppURL & "request-order" + Response.Redirect Routes().AppURL End Sub End Class diff --git a/app/models/OrderDetailsAnswersMapper.asp b/app/models/OrderDetailsAnswersMapper.asp index 3fb4860..2c3d0f8 100644 --- a/app/models/OrderDetailsAnswersMapper.asp +++ b/app/models/OrderDetailsAnswersMapper.asp @@ -19,6 +19,7 @@ Function ValidateOrderDetailsAnswers(answers) RequireEnum errors, answers, "PurplePrintStyle", Array("ColorCoding", "BlackOnly") RequireEnum errors, answers, "PurpleColorCodingBy", Array("Precinct", "Election") RequireEnum errors, answers, "BluePermitOwnership", Array("KCIPermit", "OwnPermit") + RequireEnum errors, answers, "BlueHasNonprofitStatus", Array("Yes", "No", "Unsure") RequireEnum errors, answers, "MailingPostageOption", Array("FirstClass", "NonprofitRate", "PresortStandard", "No") RequireEnum errors, answers, "MailingHasNonprofitStatus", Array("Yes", "No", "NotSure") @@ -27,9 +28,9 @@ Function ValidateOrderDetailsAnswers(answers) RequireBoolean errors, answers, "PurpleTrackMIBallot" RequireBoolean errors, answers, "BlueWantsQuote" RequireBoolean errors, answers, "BluePrintPermit" - RequireBoolean errors, answers, "BlueHasNonprofitStatus" RequireBoolean errors, answers, "MailingWantsService" + RequireNonNegativeInteger errors, answers, "PurplePermanentBallotListCount" RequireNonNegativeInteger errors, answers, "PurplePrecinctCount" RequireNonNegativeInteger errors, answers, "PurpleExtraEnvelopeQty" RequireNonNegativeInteger errors, answers, "MailingEstimatedQuantity" @@ -65,6 +66,7 @@ Sub MapOrderDetailsAnswers(ByRef model, answers) model.PurpleColorNames = DictValue(answers, "PurpleColorNames") model.PurpleTrackMIBallot = DictValue(answers, "PurpleTrackMIBallot") model.PurpleExtraEnvelopeQty = DictValue(answers, "PurpleExtraEnvelopeQty") + model.PurplePermanentBallotListCount = DictValue(answers, "PurplePermanentBallotListCount") ' Blue envelope model.BlueWantsQuote = DictValue(answers, "BlueWantsQuote") diff --git a/app/models/OrderDetailsLabels.asp b/app/models/OrderDetailsLabels.asp index c33be53..042cbed 100644 --- a/app/models/OrderDetailsLabels.asp +++ b/app/models/OrderDetailsLabels.asp @@ -69,6 +69,7 @@ Function LabelNonprofitStatus(code) Case "Yes" : LabelNonprofitStatus = "Yes" Case "No" : LabelNonprofitStatus = "No" Case "NotSure" : LabelNonprofitStatus = "I'm not sure" + Case "Unsure" : LabelNonprofitStatus = "Unsure (that's okay, we can help)" Case Else : LabelNonprofitStatus = CStr(code & "") End Select End Function diff --git a/app/models/OrderDetailsRepository.asp b/app/models/OrderDetailsRepository.asp index 144d0ec..99f715b 100644 --- a/app/models/OrderDetailsRepository.asp +++ b/app/models/OrderDetailsRepository.asp @@ -1,6 +1,6 @@ <% ' Auto-generated Repository for table [OrderDetails] -' Generated on 8/4/2026 3:40:46 PM +' Generated on 8/20/2026 11:48:14 AM ' Generator: GenerateRepo.vbs v1.0 ' ' Dependencies: @@ -13,7 +13,7 @@ Class OrderDetailsRepository_Class Public Function FindByID(id) - Dim sql : sql = "Select [BlueDeliveryDate], [BlueEnvelopeProvider], [BlueHasNonprofitStatus], [BlueNonprofitAuthCode], [BluePermitCity], [BluePermitClass], [BluePermitNumber], [BluePermitOwnership], [BluePrintPermit], [BluePrintReturnAddress], [BlueWantsQuote], [ContactName], [FutureVoterStickerRolls], [IVotedStickerRolls], [MailingEstimatedQuantity], [MailingHasNonprofitStatus], [MailingPickupDate], [MailingPostageOption], [MailingWantsService], [MailingWantsSorting], [Municipality], [OrderDetailID], [OrderID], [Phone], [PurpleBlueProvider], [PurpleBlueProviderOther], [PurpleColorCodingBy], [PurpleColorNames], [PurpleDeliveryDate], [PurpleEnvelopeProvider], [PurpleEnvelopeStock], [PurpleExtraEnvelopeQty], [PurplePrecinctCount], [PurplePrintOption], [PurplePrintStyle], [PurpleTrackMIBallot], [PurpleWantsBlueEnvelopes], [PurpleWantsQuote], [SecrecySleevesQty], [SpecialRequests], [SubmittedAt] FROM [OrderDetails] WHERE [OrderDetailID] = ?" + Dim sql : sql = "Select [BlueDeliveryDate], [BlueEnvelopeProvider], [BlueHasNonprofitStatus], [BlueNonprofitAuthCode], [BluePermitCity], [BluePermitClass], [BluePermitNumber], [BluePermitOwnership], [BluePrintPermit], [BluePrintReturnAddress], [BlueWantsQuote], [ContactName], [FutureVoterStickerRolls], [IVotedStickerRolls], [MailingEstimatedQuantity], [MailingHasNonprofitStatus], [MailingPickupDate], [MailingPostageOption], [MailingWantsService], [MailingWantsSorting], [Municipality], [OrderDetailID], [OrderID], [Phone], [PurpleBlueProvider], [PurpleBlueProviderOther], [PurpleColorCodingBy], [PurpleColorNames], [PurpleDeliveryDate], [PurpleEnvelopeProvider], [PurpleEnvelopeStock], [PurpleExtraEnvelopeQty], [PurplePermanentBallotListCount], [PurplePrecinctCount], [PurplePrintOption], [PurplePrintStyle], [PurpleTrackMIBallot], [PurpleWantsBlueEnvelopes], [PurpleWantsQuote], [SecrecySleevesQty], [SpecialRequests], [SubmittedAt] FROM [OrderDetails] WHERE [OrderDetailID] = ?" Dim rs : Set rs = DAL.Query(sql, Array(id)) If rs.EOF Then Err.Raise 1, "OrderDetailsRepository_Class", RecordNotFoundException("OrderDetailID", id) @@ -28,7 +28,7 @@ Class OrderDetailsRepository_Class End Function Public Function Find(where_kvarray, order_string_or_array) - Dim sql : sql = "Select [BlueDeliveryDate], [BlueEnvelopeProvider], [BlueHasNonprofitStatus], [BlueNonprofitAuthCode], [BluePermitCity], [BluePermitClass], [BluePermitNumber], [BluePermitOwnership], [BluePrintPermit], [BluePrintReturnAddress], [BlueWantsQuote], [ContactName], [FutureVoterStickerRolls], [IVotedStickerRolls], [MailingEstimatedQuantity], [MailingHasNonprofitStatus], [MailingPickupDate], [MailingPostageOption], [MailingWantsService], [MailingWantsSorting], [Municipality], [OrderDetailID], [OrderID], [Phone], [PurpleBlueProvider], [PurpleBlueProviderOther], [PurpleColorCodingBy], [PurpleColorNames], [PurpleDeliveryDate], [PurpleEnvelopeProvider], [PurpleEnvelopeStock], [PurpleExtraEnvelopeQty], [PurplePrecinctCount], [PurplePrintOption], [PurplePrintStyle], [PurpleTrackMIBallot], [PurpleWantsBlueEnvelopes], [PurpleWantsQuote], [SecrecySleevesQty], [SpecialRequests], [SubmittedAt] FROM [OrderDetails]" + Dim sql : sql = "Select [BlueDeliveryDate], [BlueEnvelopeProvider], [BlueHasNonprofitStatus], [BlueNonprofitAuthCode], [BluePermitCity], [BluePermitClass], [BluePermitNumber], [BluePermitOwnership], [BluePrintPermit], [BluePrintReturnAddress], [BlueWantsQuote], [ContactName], [FutureVoterStickerRolls], [IVotedStickerRolls], [MailingEstimatedQuantity], [MailingHasNonprofitStatus], [MailingPickupDate], [MailingPostageOption], [MailingWantsService], [MailingWantsSorting], [Municipality], [OrderDetailID], [OrderID], [Phone], [PurpleBlueProvider], [PurpleBlueProviderOther], [PurpleColorCodingBy], [PurpleColorNames], [PurpleDeliveryDate], [PurpleEnvelopeProvider], [PurpleEnvelopeStock], [PurpleExtraEnvelopeQty], [PurplePermanentBallotListCount], [PurplePrecinctCount], [PurplePrintOption], [PurplePrintStyle], [PurpleTrackMIBallot], [PurpleWantsBlueEnvelopes], [PurpleWantsQuote], [SecrecySleevesQty], [SpecialRequests], [SubmittedAt] FROM [OrderDetails]" Dim where_keys, where_values, i If Not IsEmpty(where_kvarray) Then KVUnzip where_kvarray, where_keys, where_values @@ -52,7 +52,7 @@ Class OrderDetailsRepository_Class End Function Public Function FindPaged(where_kvarray, order_string_or_array, per_page, page_num, ByRef page_count, ByRef record_count) - Dim sql : sql = "Select [BlueDeliveryDate], [BlueEnvelopeProvider], [BlueHasNonprofitStatus], [BlueNonprofitAuthCode], [BluePermitCity], [BluePermitClass], [BluePermitNumber], [BluePermitOwnership], [BluePrintPermit], [BluePrintReturnAddress], [BlueWantsQuote], [ContactName], [FutureVoterStickerRolls], [IVotedStickerRolls], [MailingEstimatedQuantity], [MailingHasNonprofitStatus], [MailingPickupDate], [MailingPostageOption], [MailingWantsService], [MailingWantsSorting], [Municipality], [OrderDetailID], [OrderID], [Phone], [PurpleBlueProvider], [PurpleBlueProviderOther], [PurpleColorCodingBy], [PurpleColorNames], [PurpleDeliveryDate], [PurpleEnvelopeProvider], [PurpleEnvelopeStock], [PurpleExtraEnvelopeQty], [PurplePrecinctCount], [PurplePrintOption], [PurplePrintStyle], [PurpleTrackMIBallot], [PurpleWantsBlueEnvelopes], [PurpleWantsQuote], [SecrecySleevesQty], [SpecialRequests], [SubmittedAt] FROM [OrderDetails]" + Dim sql : sql = "Select [BlueDeliveryDate], [BlueEnvelopeProvider], [BlueHasNonprofitStatus], [BlueNonprofitAuthCode], [BluePermitCity], [BluePermitClass], [BluePermitNumber], [BluePermitOwnership], [BluePrintPermit], [BluePrintReturnAddress], [BlueWantsQuote], [ContactName], [FutureVoterStickerRolls], [IVotedStickerRolls], [MailingEstimatedQuantity], [MailingHasNonprofitStatus], [MailingPickupDate], [MailingPostageOption], [MailingWantsService], [MailingWantsSorting], [Municipality], [OrderDetailID], [OrderID], [Phone], [PurpleBlueProvider], [PurpleBlueProviderOther], [PurpleColorCodingBy], [PurpleColorNames], [PurpleDeliveryDate], [PurpleEnvelopeProvider], [PurpleEnvelopeStock], [PurpleExtraEnvelopeQty], [PurplePermanentBallotListCount], [PurplePrecinctCount], [PurplePrintOption], [PurplePrintStyle], [PurpleTrackMIBallot], [PurpleWantsBlueEnvelopes], [PurpleWantsQuote], [SecrecySleevesQty], [SpecialRequests], [SubmittedAt] FROM [OrderDetails]" Dim where_keys, where_values, i If Not IsEmpty(where_kvarray) Then KVUnzip where_kvarray, where_keys, where_values @@ -77,7 +77,7 @@ Class OrderDetailsRepository_Class End Function Public Function SearchTablePaged(columns_array, search_value, order_string_or_array, per_page, page_num, ByRef page_count, ByRef record_count) - Dim sql : sql = "Select [BlueDeliveryDate], [BlueEnvelopeProvider], [BlueHasNonprofitStatus], [BlueNonprofitAuthCode], [BluePermitCity], [BluePermitClass], [BluePermitNumber], [BluePermitOwnership], [BluePrintPermit], [BluePrintReturnAddress], [BlueWantsQuote], [ContactName], [FutureVoterStickerRolls], [IVotedStickerRolls], [MailingEstimatedQuantity], [MailingHasNonprofitStatus], [MailingPickupDate], [MailingPostageOption], [MailingWantsService], [MailingWantsSorting], [Municipality], [OrderDetailID], [OrderID], [Phone], [PurpleBlueProvider], [PurpleBlueProviderOther], [PurpleColorCodingBy], [PurpleColorNames], [PurpleDeliveryDate], [PurpleEnvelopeProvider], [PurpleEnvelopeStock], [PurpleExtraEnvelopeQty], [PurplePrecinctCount], [PurplePrintOption], [PurplePrintStyle], [PurpleTrackMIBallot], [PurpleWantsBlueEnvelopes], [PurpleWantsQuote], [SecrecySleevesQty], [SpecialRequests], [SubmittedAt] FROM [OrderDetails]" + Dim sql : sql = "Select [BlueDeliveryDate], [BlueEnvelopeProvider], [BlueHasNonprofitStatus], [BlueNonprofitAuthCode], [BluePermitCity], [BluePermitClass], [BluePermitNumber], [BluePermitOwnership], [BluePrintPermit], [BluePrintReturnAddress], [BlueWantsQuote], [ContactName], [FutureVoterStickerRolls], [IVotedStickerRolls], [MailingEstimatedQuantity], [MailingHasNonprofitStatus], [MailingPickupDate], [MailingPostageOption], [MailingWantsService], [MailingWantsSorting], [Municipality], [OrderDetailID], [OrderID], [Phone], [PurpleBlueProvider], [PurpleBlueProviderOther], [PurpleColorCodingBy], [PurpleColorNames], [PurpleDeliveryDate], [PurpleEnvelopeProvider], [PurpleEnvelopeStock], [PurpleExtraEnvelopeQty], [PurplePermanentBallotListCount], [PurplePrecinctCount], [PurplePrintOption], [PurplePrintStyle], [PurpleTrackMIBallot], [PurpleWantsBlueEnvelopes], [PurpleWantsQuote], [SecrecySleevesQty], [SpecialRequests], [SubmittedAt] FROM [OrderDetails]" Dim i, params() If IsArray(columns_array) And UBound(columns_array) >= 0 Then sql = sql & " WHERE " @@ -112,9 +112,9 @@ Class OrderDetailsRepository_Class End Function Public Sub AddNew(ByRef model) - Dim sql : sql = "INSERT INTO [OrderDetails] ([BlueDeliveryDate], [BlueEnvelopeProvider], [BlueHasNonprofitStatus], [BlueNonprofitAuthCode], [BluePermitCity], [BluePermitClass], [BluePermitNumber], [BluePermitOwnership], [BluePrintPermit], [BluePrintReturnAddress], [BlueWantsQuote], [ContactName], [FutureVoterStickerRolls], [IVotedStickerRolls], [MailingEstimatedQuantity], [MailingHasNonprofitStatus], [MailingPickupDate], [MailingPostageOption], [MailingWantsService], [MailingWantsSorting], [Municipality], [OrderID], [Phone], [PurpleBlueProvider], [PurpleBlueProviderOther], [PurpleColorCodingBy], [PurpleColorNames], [PurpleDeliveryDate], [PurpleEnvelopeProvider], [PurpleEnvelopeStock], [PurpleExtraEnvelopeQty], [PurplePrecinctCount], [PurplePrintOption], [PurplePrintStyle], [PurpleTrackMIBallot], [PurpleWantsBlueEnvelopes], [PurpleWantsQuote], [SecrecySleevesQty], [SpecialRequests], [SubmittedAt]) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)" - DAL.Execute sql, Array(model.BlueDeliveryDate, model.BlueEnvelopeProvider, model.BlueHasNonprofitStatus, model.BlueNonprofitAuthCode, model.BluePermitCity, model.BluePermitClass, model.BluePermitNumber, model.BluePermitOwnership, model.BluePrintPermit, model.BluePrintReturnAddress, model.BlueWantsQuote, model.ContactName, model.FutureVoterStickerRolls, model.IVotedStickerRolls, model.MailingEstimatedQuantity, model.MailingHasNonprofitStatus, model.MailingPickupDate, model.MailingPostageOption, model.MailingWantsService, model.MailingWantsSorting, model.Municipality, model.OrderID, model.Phone, model.PurpleBlueProvider, model.PurpleBlueProviderOther, model.PurpleColorCodingBy, model.PurpleColorNames, model.PurpleDeliveryDate, model.PurpleEnvelopeProvider, model.PurpleEnvelopeStock, model.PurpleExtraEnvelopeQty, model.PurplePrecinctCount, model.PurplePrintOption, model.PurplePrintStyle, model.PurpleTrackMIBallot, model.PurpleWantsBlueEnvelopes, model.PurpleWantsQuote, model.SecrecySleevesQty, model.SpecialRequests, model.SubmittedAt) - + Dim sql : sql = "INSERT INTO [OrderDetails] ([BlueDeliveryDate], [BlueEnvelopeProvider], [BlueHasNonprofitStatus], [BlueNonprofitAuthCode], [BluePermitCity], [BluePermitClass], [BluePermitNumber], [BluePermitOwnership], [BluePrintPermit], [BluePrintReturnAddress], [BlueWantsQuote], [ContactName], [FutureVoterStickerRolls], [IVotedStickerRolls], [MailingEstimatedQuantity], [MailingHasNonprofitStatus], [MailingPickupDate], [MailingPostageOption], [MailingWantsService], [MailingWantsSorting], [Municipality], [OrderID], [Phone], [PurpleBlueProvider], [PurpleBlueProviderOther], [PurpleColorCodingBy], [PurpleColorNames], [PurpleDeliveryDate], [PurpleEnvelopeProvider], [PurpleEnvelopeStock], [PurpleExtraEnvelopeQty], [PurplePermanentBallotListCount], [PurplePrecinctCount], [PurplePrintOption], [PurplePrintStyle], [PurpleTrackMIBallot], [PurpleWantsBlueEnvelopes], [PurpleWantsQuote], [SecrecySleevesQty], [SpecialRequests], [SubmittedAt]) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)" + DAL.Execute sql, Array(model.BlueDeliveryDate, model.BlueEnvelopeProvider, model.BlueHasNonprofitStatus, model.BlueNonprofitAuthCode, model.BluePermitCity, model.BluePermitClass, model.BluePermitNumber, model.BluePermitOwnership, model.BluePrintPermit, model.BluePrintReturnAddress, model.BlueWantsQuote, model.ContactName, model.FutureVoterStickerRolls, model.IVotedStickerRolls, model.MailingEstimatedQuantity, model.MailingHasNonprofitStatus, model.MailingPickupDate, model.MailingPostageOption, model.MailingWantsService, model.MailingWantsSorting, model.Municipality, model.OrderID, model.Phone, model.PurpleBlueProvider, model.PurpleBlueProviderOther, model.PurpleColorCodingBy, model.PurpleColorNames, model.PurpleDeliveryDate, model.PurpleEnvelopeProvider, model.PurpleEnvelopeStock, model.PurpleExtraEnvelopeQty, model.PurplePermanentBallotListCount, model.PurplePrecinctCount, model.PurplePrintOption, model.PurplePrintStyle, model.PurpleTrackMIBallot, model.PurpleWantsBlueEnvelopes, model.PurpleWantsQuote, model.SecrecySleevesQty, model.SpecialRequests, model.SubmittedAt) + ' Retrieve the newly inserted ID On Error Resume Next Dim rsId : Set rsId = DAL.Query("SELECT @@IDENTITY AS NewID", Empty) @@ -124,7 +124,7 @@ Class OrderDetailsRepository_Class Set rsId = DAL.Query("SELECT TOP 1 [OrderDetailID] FROM [OrderDetails] ORDER BY [OrderDetailID] DESC", Empty) End If On Error GoTo 0 - + If Not rsId.EOF Then If Not IsNull(rsId(0)) Then model.OrderDetailID = rsId(0) End If @@ -132,8 +132,8 @@ Class OrderDetailsRepository_Class End Sub Public Sub Update(model) - Dim sql : sql = "UPDATE [OrderDetails] SET [BlueDeliveryDate] = ?, [BlueEnvelopeProvider] = ?, [BlueHasNonprofitStatus] = ?, [BlueNonprofitAuthCode] = ?, [BluePermitCity] = ?, [BluePermitClass] = ?, [BluePermitNumber] = ?, [BluePermitOwnership] = ?, [BluePrintPermit] = ?, [BluePrintReturnAddress] = ?, [BlueWantsQuote] = ?, [ContactName] = ?, [FutureVoterStickerRolls] = ?, [IVotedStickerRolls] = ?, [MailingEstimatedQuantity] = ?, [MailingHasNonprofitStatus] = ?, [MailingPickupDate] = ?, [MailingPostageOption] = ?, [MailingWantsService] = ?, [MailingWantsSorting] = ?, [Municipality] = ?, [OrderID] = ?, [Phone] = ?, [PurpleBlueProvider] = ?, [PurpleBlueProviderOther] = ?, [PurpleColorCodingBy] = ?, [PurpleColorNames] = ?, [PurpleDeliveryDate] = ?, [PurpleEnvelopeProvider] = ?, [PurpleEnvelopeStock] = ?, [PurpleExtraEnvelopeQty] = ?, [PurplePrecinctCount] = ?, [PurplePrintOption] = ?, [PurplePrintStyle] = ?, [PurpleTrackMIBallot] = ?, [PurpleWantsBlueEnvelopes] = ?, [PurpleWantsQuote] = ?, [SecrecySleevesQty] = ?, [SpecialRequests] = ?, [SubmittedAt] = ? WHERE [OrderDetailID] = ?" - DAL.Execute sql, Array(model.BlueDeliveryDate, model.BlueEnvelopeProvider, model.BlueHasNonprofitStatus, model.BlueNonprofitAuthCode, model.BluePermitCity, model.BluePermitClass, model.BluePermitNumber, model.BluePermitOwnership, model.BluePrintPermit, model.BluePrintReturnAddress, model.BlueWantsQuote, model.ContactName, model.FutureVoterStickerRolls, model.IVotedStickerRolls, model.MailingEstimatedQuantity, model.MailingHasNonprofitStatus, model.MailingPickupDate, model.MailingPostageOption, model.MailingWantsService, model.MailingWantsSorting, model.Municipality, model.OrderID, model.Phone, model.PurpleBlueProvider, model.PurpleBlueProviderOther, model.PurpleColorCodingBy, model.PurpleColorNames, model.PurpleDeliveryDate, model.PurpleEnvelopeProvider, model.PurpleEnvelopeStock, model.PurpleExtraEnvelopeQty, model.PurplePrecinctCount, model.PurplePrintOption, model.PurplePrintStyle, model.PurpleTrackMIBallot, model.PurpleWantsBlueEnvelopes, model.PurpleWantsQuote, model.SecrecySleevesQty, model.SpecialRequests, model.SubmittedAt, model.OrderDetailID) + Dim sql : sql = "UPDATE [OrderDetails] SET [BlueDeliveryDate] = ?, [BlueEnvelopeProvider] = ?, [BlueHasNonprofitStatus] = ?, [BlueNonprofitAuthCode] = ?, [BluePermitCity] = ?, [BluePermitClass] = ?, [BluePermitNumber] = ?, [BluePermitOwnership] = ?, [BluePrintPermit] = ?, [BluePrintReturnAddress] = ?, [BlueWantsQuote] = ?, [ContactName] = ?, [FutureVoterStickerRolls] = ?, [IVotedStickerRolls] = ?, [MailingEstimatedQuantity] = ?, [MailingHasNonprofitStatus] = ?, [MailingPickupDate] = ?, [MailingPostageOption] = ?, [MailingWantsService] = ?, [MailingWantsSorting] = ?, [Municipality] = ?, [OrderID] = ?, [Phone] = ?, [PurpleBlueProvider] = ?, [PurpleBlueProviderOther] = ?, [PurpleColorCodingBy] = ?, [PurpleColorNames] = ?, [PurpleDeliveryDate] = ?, [PurpleEnvelopeProvider] = ?, [PurpleEnvelopeStock] = ?, [PurpleExtraEnvelopeQty] = ?, [PurplePermanentBallotListCount] = ?, [PurplePrecinctCount] = ?, [PurplePrintOption] = ?, [PurplePrintStyle] = ?, [PurpleTrackMIBallot] = ?, [PurpleWantsBlueEnvelopes] = ?, [PurpleWantsQuote] = ?, [SecrecySleevesQty] = ?, [SpecialRequests] = ?, [SubmittedAt] = ? WHERE [OrderDetailID] = ?" + DAL.Execute sql, Array(model.BlueDeliveryDate, model.BlueEnvelopeProvider, model.BlueHasNonprofitStatus, model.BlueNonprofitAuthCode, model.BluePermitCity, model.BluePermitClass, model.BluePermitNumber, model.BluePermitOwnership, model.BluePrintPermit, model.BluePrintReturnAddress, model.BlueWantsQuote, model.ContactName, model.FutureVoterStickerRolls, model.IVotedStickerRolls, model.MailingEstimatedQuantity, model.MailingHasNonprofitStatus, model.MailingPickupDate, model.MailingPostageOption, model.MailingWantsService, model.MailingWantsSorting, model.Municipality, model.OrderID, model.Phone, model.PurpleBlueProvider, model.PurpleBlueProviderOther, model.PurpleColorCodingBy, model.PurpleColorNames, model.PurpleDeliveryDate, model.PurpleEnvelopeProvider, model.PurpleEnvelopeStock, model.PurpleExtraEnvelopeQty, model.PurplePermanentBallotListCount, model.PurplePrecinctCount, model.PurplePrintOption, model.PurplePrintStyle, model.PurpleTrackMIBallot, model.PurpleWantsBlueEnvelopes, model.PurpleWantsQuote, model.SecrecySleevesQty, model.SpecialRequests, model.SubmittedAt, model.OrderDetailID) End Sub Public Sub Delete(id) diff --git a/app/models/OrderMailer.asp b/app/models/OrderMailer.asp index 9c99c24..4747211 100644 --- a/app/models/OrderMailer.asp +++ b/app/models/OrderMailer.asp @@ -9,13 +9,18 @@ Class OrderMailer_Class Dim continueUrl continueUrl = Routes().AppURL & "order/continue?token=" & Server.URLEncode(token) + Dim inner + inner = "
Order Request Received
" & _ + "

Continue your election materials order

" & _ + "

Click the button below to pick up where you left off.

" & _ + "

Continue your order

" & _ + "

Or copy and paste this link into your browser:
" & H(continueUrl) & "

" & _ + "

This link expires in " & H(GetAppSetting("OrderTokenExpirationHours")) & " hours and can only be used once.

" + Dim mail : Set mail = NewConfiguredMail() mail.Subject = "Continue your Purple Envelope order" mail.IsBodyHTML = True - mail.Body = "

Click the link below to continue your order:

" & _ - "

" & H(continueUrl) & "

" & _ - "

This link expires in " & H(GetAppSetting("OrderTokenExpirationHours")) & _ - " hours and can only be used once.

" + mail.Body = EmailShell(inner) mail.AddRecipient "To", email mail.Send End Sub @@ -55,14 +60,7 @@ Class OrderMailer_Class Private Function BuildOrderDetailsEmailBody(order, model) Dim html - html = "" & _ - "
" & _ - "" & _ - "" & _ - "
" & _ - "KCI Purple Envelope Order Confirmation" & _ - "
" & _ - "
Order Received
" & _ + html = "
Order Received
" & _ "

Thanks! We've received your order details.

" & _ "

Jurisdiction number " & H(order("JurisdictionNumber")) & "" & _ " · submitted " & H(EmailDate(model.SubmittedAt)) & "

" @@ -80,6 +78,7 @@ Class OrderMailer_Class End If html = html & EmailSection("Purple Ballot Envelopes", _ + EmailRow("Permanent ballot list count", model.PurplePermanentBallotListCount) & _ EmailRow("Envelope stock", LabelEnvelopeStock(model.PurpleEnvelopeStock)) & _ EmailRow("Print option", LabelPrintOption(model.PurplePrintOption)) & _ EmailRow("Also wants KCI blue envelopes", EmailYesNo(model.PurpleWantsBlueEnvelopes)) & _ @@ -93,24 +92,25 @@ Class OrderMailer_Class End If If IsTrue(model.BlueWantsQuote) Then - ' City/permit number are always collected for an own-organization permit - a - ' permit lookup can't be done from the nonprofit authorization code alone, so - ' that code is additional information when nonprofit status is Yes, not a - ' replacement for city/permit number. + ' Nonprofit status (and the auth code that follows a "Yes") is asked for either + ' permit-ownership branch. City/permit number are additionally collected for an + ' own-organization permit - a permit lookup can't be done from the nonprofit + ' authorization code alone. Dim bluePermitLine bluePermitLine = "" + If CStr(model.BlueHasNonprofitStatus & "") = "Yes" Then + bluePermitLine = EmailRow("Nonprofit authorization code", model.BlueNonprofitAuthCode) + End If If LabelPermitOwnership(model.BluePermitOwnership) = "My organization's permit" Then - bluePermitLine = EmailRow("City of permit holder", model.BluePermitCity) & _ + bluePermitLine = bluePermitLine & _ + EmailRow("City of permit holder", model.BluePermitCity) & _ EmailRow("Permit number", model.BluePermitNumber) - If IsTrue(model.BlueHasNonprofitStatus) Then - bluePermitLine = bluePermitLine & EmailRow("Nonprofit authorization code", model.BlueNonprofitAuthCode) - End If End If html = html & EmailSection("Blue AV Envelopes", _ EmailRow("Print permit", EmailYesNo(model.BluePrintPermit)) & _ EmailRow("Permit ownership", LabelPermitOwnership(model.BluePermitOwnership)) & _ - EmailRow("Confirmed nonprofit status with USPS", EmailYesNo(model.BlueHasNonprofitStatus)) & _ + EmailRow("Confirmed nonprofit status with USPS", LabelNonprofitStatus(model.BlueHasNonprofitStatus)) & _ bluePermitLine) End If @@ -130,14 +130,27 @@ Class OrderMailer_Class EmailRow("Special requests", model.SpecialRequests)) End If - html = html & "

Questions about this order? Just reply to this email.

" & _ + html = html & "

Questions about this order? Just reply to this email.

" + + BuildOrderDetailsEmailBody = EmailShell(html) + End Function + + ' Wraps inner body HTML in the same header/footer chrome used across the website - the + ' navy KCI Election Printing bar (matching the site header/footer) and white content card. + Private Function EmailShell(innerHtml) + Dim logoUrl : logoUrl = Routes().AppURL & "images/KCI%20ELECTION%20printing%20(white).png" + EmailShell = "" & _ + "
" & _ + "" & _ + "" & _ - "" & _ + "" & _ "
" & _ + "" & _ "
" & _ - "Purple Envelope · Addressing & Barcoding" & _ + "
" & innerHtml & "
" & _ + "
KCI Election Printing
" & _ + "
616.957.2120 · info@kentcommunications.com
" & _ "
" - - BuildOrderDetailsEmailBody = html End Function Private Function EmailSection(sectionTitle, rowsHtml) diff --git a/app/models/POBO_OrderDetails.asp b/app/models/POBO_OrderDetails.asp index 15acc9e..fe26f47 100644 --- a/app/models/POBO_OrderDetails.asp +++ b/app/models/POBO_OrderDetails.asp @@ -42,6 +42,7 @@ Class POBO_OrderDetails Private pPurpleEnvelopeProvider Private pPurpleEnvelopeStock Private pPurpleExtraEnvelopeQty + Private pPurplePermanentBallotListCount Private pPurplePrecinctCount Private pPurplePrintOption Private pPurplePrintStyle @@ -85,6 +86,7 @@ Class POBO_OrderDetails pPurpleEnvelopeProvider = Null pPurpleEnvelopeStock = Null pPurpleExtraEnvelopeQty = 0 + pPurplePermanentBallotListCount = 0 pPurplePrecinctCount = 0 pPurplePrintOption = Null pPurplePrintStyle = Null @@ -94,7 +96,7 @@ Class POBO_OrderDetails pSecrecySleevesQty = 0 pSpecialRequests = Null pSubmittedAt = #1/1/1970# - Properties = Array("BlueDeliveryDate","BlueEnvelopeProvider","BlueHasNonprofitStatus","BlueNonprofitAuthCode","BluePermitCity","BluePermitClass","BluePermitNumber","BluePermitOwnership","BluePrintPermit","BluePrintReturnAddress","BlueWantsQuote","ContactName","FutureVoterStickerRolls","IVotedStickerRolls","MailingEstimatedQuantity","MailingHasNonprofitStatus","MailingPickupDate","MailingPostageOption","MailingWantsService","MailingWantsSorting","Municipality","OrderDetailID","OrderID","Phone","PurpleBlueProvider","PurpleBlueProviderOther","PurpleColorCodingBy","PurpleColorNames","PurpleDeliveryDate","PurpleEnvelopeProvider","PurpleEnvelopeStock","PurpleExtraEnvelopeQty","PurplePrecinctCount","PurplePrintOption","PurplePrintStyle","PurpleTrackMIBallot","PurpleWantsBlueEnvelopes","PurpleWantsQuote","SecrecySleevesQty","SpecialRequests","SubmittedAt") + Properties = Array("BlueDeliveryDate","BlueEnvelopeProvider","BlueHasNonprofitStatus","BlueNonprofitAuthCode","BluePermitCity","BluePermitClass","BluePermitNumber","BluePermitOwnership","BluePrintPermit","BluePrintReturnAddress","BlueWantsQuote","ContactName","FutureVoterStickerRolls","IVotedStickerRolls","MailingEstimatedQuantity","MailingHasNonprofitStatus","MailingPickupDate","MailingPostageOption","MailingWantsService","MailingWantsSorting","Municipality","OrderDetailID","OrderID","Phone","PurpleBlueProvider","PurpleBlueProviderOther","PurpleColorCodingBy","PurpleColorNames","PurpleDeliveryDate","PurpleEnvelopeProvider","PurpleEnvelopeStock","PurpleExtraEnvelopeQty","PurplePermanentBallotListCount","PurplePrecinctCount","PurplePrintOption","PurplePrintStyle","PurpleTrackMIBallot","PurpleWantsBlueEnvelopes","PurpleWantsQuote","SecrecySleevesQty","SpecialRequests","SubmittedAt") End Sub Public Property Get PrimaryKey() @@ -145,10 +147,10 @@ Class POBO_OrderDetails Public Property Let BlueHasNonprofitStatus(val) On Error Resume Next - If IsNull(val) Then - pBlueHasNonprofitStatus = Null + If IsNumeric(val) Then + pBlueHasNonprofitStatus = CDbl(val) Else - pBlueHasNonprofitStatus = CBool(val) + pBlueHasNonprofitStatus = val End If If Err.Number <> 0 Then Err.Raise Err.Number, "POBO_OrderDetails.BlueHasNonprofitStatus", "Invalid value for BlueHasNonprofitStatus: " & Err.Description @@ -637,6 +639,23 @@ Class POBO_OrderDetails On Error GoTo 0 End Property + Public Property Get PurplePermanentBallotListCount() + PurplePermanentBallotListCount = pPurplePermanentBallotListCount + End Property + + Public Property Let PurplePermanentBallotListCount(val) + On Error Resume Next + If IsNumeric(val) Then + pPurplePermanentBallotListCount = CDbl(val) + Else + pPurplePermanentBallotListCount = val + End If + If Err.Number <> 0 Then + Err.Raise Err.Number, "POBO_OrderDetails.PurplePermanentBallotListCount", "Invalid value for PurplePermanentBallotListCount: " & Err.Description + End If + On Error GoTo 0 + End Property + Public Property Get PurplePrecinctCount() PurplePrecinctCount = pPurplePrecinctCount End Property diff --git a/app/views/Order/continue.asp b/app/views/Order/continue.asp index cd9064f..3d06750 100644 --- a/app/views/Order/continue.asp +++ b/app/views/Order/continue.asp @@ -96,6 +96,13 @@ title: "Would you like for KCI to print your purple AV envelopes?", isRequired: true }, + { + type: "text", name: "PurplePermanentBallotListCount", + title: "How many are on your permanent ballot list?", + inputType: "number", min: 0, + visibleIf: "{PurpleWantsQuote} = true", + isRequired: true + }, { type: "radiogroup", name: "PurpleEnvelopeStock", title: "Are you planning to use KCI's purple envelopes or from your own stock?", @@ -229,15 +236,20 @@ html: "

Please note, envelopes with KCI's permit MUST be mailed from KCI.

" }, { - type: "boolean", name: "BlueHasNonprofitStatus", labelTrue: "Yes", labelFalse: "No", + type: "radiogroup", name: "BlueHasNonprofitStatus", title: "Does your organization have confirmed nonprofit status with USPS?", - visibleIf: "{BluePermitOwnership} = 'OwnPermit'", - isRequired: true + visibleIf: "{BluePrintPermit} = true", + isRequired: true, + choices: [ + { value: "Yes", text: "Yes" }, + { value: "No", text: "No" }, + { value: "Unsure", text: "Unsure (That's okay, we can help you!)" } + ] }, { type: "text", name: "BlueNonprofitAuthCode", title: "Please provide your nonprofit authorization code.", - visibleIf: "{BlueHasNonprofitStatus} = true", + visibleIf: "{BlueHasNonprofitStatus} = 'Yes'", isRequired: true }, { @@ -442,12 +454,8 @@ }); }) .then(function (result) { - var container = document.getElementById("surveyContainer"); if (result.ok && result.body && result.body.success) { - container.innerHTML = - '

' + - "Thank you for submitting your order." + - "

"; + window.location.href = "<%= H(Routes().AppURL) %>"; } else { alert((result.body && result.body.error) || "Something went wrong submitting your order. Please try again."); } diff --git a/app/views/RequestOrder/index.asp b/app/views/RequestOrder/index.asp index f44dc35..15a7bde 100644 --- a/app/views/RequestOrder/index.asp +++ b/app/views/RequestOrder/index.asp @@ -1,32 +1,34 @@
-
- Start your order -

Request an order

-

- Enter your email address and jurisdiction number below. We'll email you a - secure link to continue your order. -

-
+
+
+ Start your order +

Request an order

+

+ Enter your email address and jurisdiction number below. We'll email you a + secure link to continue your order. +

+
-
"> - + "> + -
- - -
+
+ + +
-
- - -
+
+ + +
-
+
- -
+ + +
diff --git a/db/migrations/20260820114612_add_purple_ballot_list_count_and_blue_nonprofit_options.asp b/db/migrations/20260820114612_add_purple_ballot_list_count_and_blue_nonprofit_options.asp new file mode 100644 index 0000000..6982db1 --- /dev/null +++ b/db/migrations/20260820114612_add_purple_ballot_list_count_and_blue_nonprofit_options.asp @@ -0,0 +1,44 @@ +<% +'======================================================================================================================= +' MIGRATION: add_purple_ballot_list_count_and_blue_nonprofit_options +'======================================================================================================================= +' This migration was auto-generated. Add your migration logic below. +' +' The migration object provides these helper methods: +' - migration.ExecuteSQL(sql) - Execute raw SQL +' - migration.CreateTable(name, columns) - Create a table +' - migration.DropTable(name) - Drop a table +' - migration.AddColumn(table, column, type) - Add a column +' - migration.DropColumn(table, column) - Drop a column +' - migration.CreateIndex(name, table, columns) - Create an index +' - migration.DropIndex(name, table) - Drop an index +' +' For complex operations, use migration.DB to access the database directly: +' migration.DB.Execute "INSERT INTO users (name) VALUES (?)", Array("John") +' + +'----------------------------------------------------------------------------------------------------------------------- +' UP - Apply the migration +'----------------------------------------------------------------------------------------------------------------------- +Sub Migration_Up(migration) + ' Fields added/changed by the revised order-form PDFs (docs/lucid/*"(2).pdf"). + + ' Purple Ballot Envelope section - new "permanent ballot list" count, asked + ' alongside PurpleEnvelopeStock/PurplePrintOption. + migration.AddColumn "OrderDetails", "PurplePermanentBallotListCount", "INTEGER" + + ' Blue AV Envelope section - BlueHasNonprofitStatus gained a third "Unsure" choice and + ' is now asked for both permit-ownership branches, so it can no longer be YESNO. + ' Existing YESNO test data converts to "-1"/"0" text under this type change - there's no + ' real order data yet, so that's acceptable here. + migration.ExecuteSQL "ALTER TABLE OrderDetails ALTER COLUMN BlueHasNonprofitStatus VARCHAR(20)" +End Sub + +'----------------------------------------------------------------------------------------------------------------------- +' DOWN - Rollback the migration +'----------------------------------------------------------------------------------------------------------------------- +Sub Migration_Down(migration) + migration.ExecuteSQL "ALTER TABLE OrderDetails ALTER COLUMN BlueHasNonprofitStatus YESNO" + migration.DropColumn "OrderDetails", "PurplePermanentBallotListCount" +End Sub +%> diff --git a/docs/lucid/Election Materials Order Form #1 (2).pdf b/docs/lucid/Election Materials Order Form #1 (2).pdf new file mode 100644 index 0000000000000000000000000000000000000000..5aa8f11ab4645afd78272713e0629c639c54f73c GIT binary patch literal 55101 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 OCntiz%9R_pZ2Aj`6TU0} literal 0 HcmV?d00001 diff --git a/public/css/styles.css b/public/css/styles.css index 2af128a..6bb8f95 100644 --- a/public/css/styles.css +++ b/public/css/styles.css @@ -847,7 +847,7 @@ details p { } .site-footer { flex: 0 0 auto; - padding: 6px 0 4px; + padding: 3px 0 2px; color: rgba(255,255,255,0.84); background: #254B74; border-top: 1px solid rgba(255, 255, 255, 0.12); @@ -855,19 +855,19 @@ details p { .footer-shell { display: flex; flex-direction: column; - gap: 4px; + gap: 2px; } .footer-compact-row { display: grid; grid-template-columns: auto 1fr auto; align-items: center; - gap: 10px; + gap: 6px; } .footer-logo-inline img { display: block; - width: 104px; + width: 56px; height: auto; } @@ -875,9 +875,9 @@ details p { display: flex; align-items: center; flex-wrap: wrap; - gap: 6px 12px; - font-size: 0.62rem; - line-height: 1.2; + gap: 3px 8px; + font-size: 0.52rem; + line-height: 1.1; } .footer-inline-content strong, @@ -892,7 +892,7 @@ details p { .footer-badge-inline img { display: block; - width: 104px; + width: 56px; height: auto; } @@ -900,21 +900,21 @@ details p { display: flex; justify-content: space-between; gap: 8px; - padding-top: 3px; + padding-top: 2px; border-top: 1px solid rgba(255,255,255,0.1); - font-size: 0.52rem; - line-height: 1.2; + font-size: 0.46rem; + line-height: 1.1; } @media (max-width: 820px) { .footer-compact-row { grid-template-columns: 1fr; - gap: 6px; + gap: 4px; justify-items: start; } .footer-logo-inline img { - width: 78px; + width: 56px; } .footer-bottom { diff --git a/public/web.config b/public/web.config index 73d2403..844067f 100644 --- a/public/web.config +++ b/public/web.config @@ -1,4 +1,4 @@ - + @@ -112,4 +112,13 @@ + + + + + + + + + diff --git a/purple-envelope-order-site.zip b/purple-envelope-order-site.zip deleted file mode 100644 index b640964b445df9e88a7fa8aa1bb21a75ade1d6f2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10599 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 - - - - - - Purple Envelope Addressing & Barcoding - - - - - - - - -
-
-
-
- Election mail production made simple -

Accurate purple envelope addressing and USPS barcode preparation.

-

- Upload your voter or recipient list, select your production options, - and receive a clear order total before submitting your job. -

- - - -
    -
  • Secure data handling
  • -
  • Address formatting and validation
  • -
  • Intelligent Mail barcode preparation
  • -
-
- -
-
-
- ADDRESS SERVICE REQUESTED - PRESORTED
FIRST-CLASS MAIL
-
- -
- JANE SAMPLE - 1234 EXAMPLE AVENUE - GRAND RAPIDS MI 49503-1234 -
- -
- - - - - - - - -
- - -
- -
- 99.9% - production accuracy goal -
- -
- Fast - proof approval workflow -
-
-
-
- -
-
-
- Address cleanup - Standardized mailing fields -
-
- USPS barcode setup - IMb-ready production data -
-
- Inkjet addressing - Clear, machine-readable output -
-
- Proof approval - Review before production begins -
-
-
- -
-
-
- Complete production support -

Everything needed to prepare your ballot envelopes.

-

- Choose only the services you need, from basic addressing to a - complete data-processing and mailing workflow. -

-
- -
-
- 01 -

Recipient addressing

-

- Print recipient names, delivery addresses, city, state, ZIP Code, - return-service endorsements, and optional identifiers. -

-
- -
- 02 -

Barcode preparation

-

- Prepare and print Intelligent Mail barcode data using the mailing - fields and identifiers supplied for your project. -

-
- -
- 03 -

List processing

-

- Review column structure, remove obvious formatting problems, - standardize capitalization, and identify incomplete records. -

-
- -
- 04 -

Proof and production

-

- Receive a digital sample for approval before the full envelope - run enters production. -

-
-
-
-
- -
-
-
- Simple four-step workflow -

From uploaded list to completed order.

-
- -
-
- 1 -

Enter job details

-

Provide quantity, envelope specifications, and due date.

-
-
- 2 -

Upload your files

-

Add recipient data, artwork, instructions, or a sample envelope.

-
-
- 3 -

Approve your proof

-

Review the address placement and sample barcode before printing.

-
-
- 4 -

Production begins

-

Your approved job is addressed, checked, packed, and delivered.

-
-
-
-
- -
-
-
- Online order request -

Build your envelope addressing order.

-

- This form calculates an estimate. Final pricing can be confirmed - after your data and production requirements are reviewed. -

-
- -
-
-
- - 1 - Contact information - - -
- - - - - - - -
-
- -
- - 2 - Job specifications - - -
- - - - - - - - - - - -
-
- -
- - 3 - Services - - -
- - - - - - - - - - - -
-
- -
- - 4 - Files and instructions - - -
- - - -
- - - - -
-
- - -
-
-
- -
-
-
- Frequently asked questions -

Ordering and production details.

-
- -
-
- What file formats can I upload? -

- CSV and Excel files are preferred. Clearly labeled columns should - include the recipient name, delivery address, city, state, ZIP - Code, and any barcode-related fields required for the project. -

-
- -
- Will I receive a proof? -

- Yes. A digital proof can be provided before production. A printed - physical proof can also be selected as an additional service. -

-
- -
- Does the estimate include postage? -

- No. Postage depends on the mailing class, presort results, entry - location, and current postal requirements. It should be quoted - separately after the mailing data is reviewed. -

-
- -
- Can you supply the purple envelopes? -

- Yes. Select “Please supply the envelopes” in the order form. - Stock, color, size, window configuration, and availability will - be confirmed before production. -

-
-
-
-
- -
-
-
- Need a custom production quote? -

Large quantities and special ballot configurations are welcome.

-
- Request pricing -
-
-
- - - - -
- - -

Order request ready

-

- The front-end form is working. Connect this form to your server-side - order endpoint, payment system, CRM, or email workflow to process live orders. -

- -
-
- - - - diff --git a/purple-envelope-order-site/script.js b/purple-envelope-order-site/script.js deleted file mode 100644 index 89d2411..0000000 --- a/purple-envelope-order-site/script.js +++ /dev/null @@ -1,121 +0,0 @@ -const form = document.getElementById("orderForm"); -const quantityInput = document.getElementById("quantity"); -const turnaround = document.getElementById("turnaround"); -const envelopeSupply = document.getElementById("envelopeSupply"); -const serviceInputs = [...document.querySelectorAll('input[name="services"]')]; - -const summaryQuantity = document.getElementById("summaryQuantity"); -const serviceSummary = document.getElementById("serviceSummary"); -const setupFeeElement = document.getElementById("setupFee"); -const rushLine = document.getElementById("rushLine"); -const rushFeeElement = document.getElementById("rushFee"); -const estimatedTotal = document.getElementById("estimatedTotal"); -const dialog = document.getElementById("confirmationDialog"); - -const currency = new Intl.NumberFormat("en-US", { - style: "currency", - currency: "USD" -}); - -const number = new Intl.NumberFormat("en-US"); - -function calculateOrder() { - const quantity = Math.max(Number(quantityInput.value) || 0, 0); - const setupFee = quantity > 0 ? 45 : 0; - let subtotal = setupFee; - const lines = []; - - serviceInputs.forEach((input) => { - if (!input.checked) return; - - const rate = Number(input.dataset.rate || 0); - const flat = Number(input.dataset.flat || 0); - const amount = flat || quantity * rate; - subtotal += amount; - - lines.push({ - label: input.dataset.label, - amount - }); - }); - - if (envelopeSupply.value === "vendor") { - const envelopeCost = quantity * 0.18; - subtotal += envelopeCost; - lines.push({ - label: "Purple envelope stock", - amount: envelopeCost - }); - } - - const rushFee = turnaround.value === "rush" ? subtotal * 0.25 : 0; - const total = subtotal + rushFee; - - summaryQuantity.textContent = number.format(quantity); - setupFeeElement.textContent = currency.format(setupFee); - rushFeeElement.textContent = currency.format(rushFee); - estimatedTotal.textContent = currency.format(total); - - rushLine.hidden = turnaround.value !== "rush"; - - serviceSummary.innerHTML = lines - .map( - (line) => ` -
- ${line.label} - ${currency.format(line.amount)} -
- ` - ) - .join(""); -} - -function showSelectedFile(input) { - const uploadBox = input.closest(".upload-box"); - const strong = uploadBox.querySelector("strong"); - const small = uploadBox.querySelector("small"); - - if (input.files.length) { - strong.textContent = input.files[0].name; - small.textContent = "File selected"; - } -} - -quantityInput.addEventListener("input", calculateOrder); -turnaround.addEventListener("change", calculateOrder); -envelopeSupply.addEventListener("change", calculateOrder); -serviceInputs.forEach((input) => input.addEventListener("change", calculateOrder)); - -document.querySelectorAll('input[type="file"]').forEach((input) => { - input.addEventListener("change", () => showSelectedFile(input)); -}); - -form.addEventListener("submit", (event) => { - event.preventDefault(); - - if (!form.checkValidity()) { - form.reportValidity(); - return; - } - - dialog.showModal(); -}); - -dialog.querySelectorAll(".dialog-close, .dialog-button").forEach((button) => { - button.addEventListener("click", () => dialog.close()); -}); - -dialog.addEventListener("click", (event) => { - const bounds = dialog.getBoundingClientRect(); - const clickedOutside = - event.clientX < bounds.left || - event.clientX > bounds.right || - event.clientY < bounds.top || - event.clientY > bounds.bottom; - - if (clickedOutside) dialog.close(); -}); - -document.getElementById("year").textContent = new Date().getFullYear(); - -calculateOrder(); diff --git a/purple-envelope-order-site/styles.css b/purple-envelope-order-site/styles.css deleted file mode 100644 index 8792e73..0000000 --- a/purple-envelope-order-site/styles.css +++ /dev/null @@ -1,1149 +0,0 @@ -:root { - --purple-950: #24103a; - --purple-900: #32134f; - --purple-800: #4d1d78; - --purple-700: #6529a0; - --purple-600: #7c3bc0; - --purple-500: #9658d5; - --purple-200: #dcc9ef; - --purple-100: #f0e7f8; - --purple-50: #faf7fd; - --ink: #201a27; - --muted: #6d6574; - --line: #e4dce9; - --surface: #ffffff; - --surface-soft: #f8f5fa; - --success: #247a50; - --shadow-sm: 0 10px 30px rgba(52, 25, 76, 0.08); - --shadow-lg: 0 28px 80px rgba(52, 25, 76, 0.18); - --radius-sm: 12px; - --radius-md: 20px; - --radius-lg: 32px; - --container: 1180px; -} - -* { - box-sizing: border-box; -} - -html { - scroll-behavior: smooth; -} - -body { - margin: 0; - color: var(--ink); - background: var(--surface); - font-family: "Inter", system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif; - line-height: 1.6; -} - -button, -input, -select, -textarea { - font: inherit; -} - -a { - color: inherit; - text-decoration: none; -} - -img { - max-width: 100%; -} - -.container { - width: min(calc(100% - 40px), var(--container)); - margin-inline: auto; -} - -.site-header { - position: sticky; - top: 0; - z-index: 50; - background: rgba(255, 255, 255, 0.93); - border-bottom: 1px solid rgba(228, 220, 233, 0.8); - backdrop-filter: blur(16px); -} - -.nav-wrap { - min-height: 78px; - display: flex; - align-items: center; - justify-content: space-between; - gap: 28px; -} - -.brand { - display: inline-flex; - align-items: center; - gap: 12px; -} - -.brand-mark { - width: 44px; - height: 44px; - display: grid; - place-items: center; - color: white; - background: linear-gradient(135deg, var(--purple-800), var(--purple-500)); - border-radius: 14px; - font-weight: 800; - letter-spacing: -0.04em; - box-shadow: 0 8px 18px rgba(101, 41, 160, 0.24); -} - -.brand strong, -.brand small { - display: block; -} - -.brand strong { - font-size: 0.98rem; - line-height: 1.25; -} - -.brand small { - margin-top: 2px; - color: var(--muted); - font-size: 0.72rem; -} - -.main-nav { - display: flex; - align-items: center; - gap: 30px; - color: #4c4352; - font-size: 0.92rem; - font-weight: 600; -} - -.main-nav a:hover { - color: var(--purple-700); -} - -.button { - min-height: 50px; - display: inline-flex; - align-items: center; - justify-content: center; - padding: 0 24px; - border: 1px solid transparent; - border-radius: 999px; - cursor: pointer; - font-weight: 700; - transition: - transform 160ms ease, - box-shadow 160ms ease, - background-color 160ms ease; -} - -.button:hover { - transform: translateY(-2px); -} - -.button-small { - min-height: 42px; - padding-inline: 18px; - font-size: 0.88rem; -} - -.button-primary { - color: white; - background: linear-gradient(135deg, var(--purple-800), var(--purple-600)); - box-shadow: 0 12px 24px rgba(101, 41, 160, 0.2); -} - -.button-primary:hover { - box-shadow: 0 16px 30px rgba(101, 41, 160, 0.28); -} - -.button-secondary { - color: var(--purple-800); - background: var(--purple-100); -} - -.button-outline { - color: var(--purple-800); - border-color: var(--purple-200); - background: white; -} - -.button-light { - color: var(--purple-900); - background: white; -} - -.button-full { - width: 100%; -} - -.hero { - position: relative; - overflow: hidden; - padding: 95px 0 105px; - background: - radial-gradient(circle at 76% 22%, rgba(150, 88, 213, 0.18), transparent 30%), - linear-gradient(180deg, #fff 0%, var(--purple-50) 100%); -} - -.hero::before { - content: ""; - position: absolute; - width: 520px; - height: 520px; - left: -260px; - bottom: -320px; - border: 70px solid rgba(124, 59, 192, 0.06); - border-radius: 50%; -} - -.hero-grid { - display: grid; - grid-template-columns: 1.03fr 0.97fr; - align-items: center; - gap: 72px; -} - -.eyebrow { - display: inline-block; - color: var(--purple-700); - font-size: 0.75rem; - font-weight: 800; - letter-spacing: 0.14em; - text-transform: uppercase; -} - -.hero h1 { - max-width: 760px; - margin: 18px 0 22px; - font-size: clamp(2.65rem, 5vw, 4.65rem); - line-height: 1.02; - letter-spacing: -0.055em; -} - -.hero-lead { - max-width: 665px; - margin: 0; - color: var(--muted); - font-size: 1.1rem; -} - -.hero-actions { - display: flex; - flex-wrap: wrap; - gap: 14px; - margin-top: 34px; -} - -.trust-list { - display: flex; - flex-wrap: wrap; - gap: 18px 28px; - margin: 32px 0 0; - padding: 0; - list-style: none; - color: #514859; - font-size: 0.87rem; - font-weight: 600; -} - -.trust-list li::before { - content: "✓"; - margin-right: 8px; - color: var(--success); - font-weight: 800; -} - -.hero-visual { - position: relative; - min-height: 480px; - display: grid; - place-items: center; -} - -.envelope-card { - position: relative; - width: min(100%, 550px); - aspect-ratio: 1.56 / 1; - overflow: hidden; - padding: 38px; - color: white; - background: - linear-gradient(160deg, rgba(255,255,255,0.11), transparent 30%), - linear-gradient(135deg, #5c238f, #7c3bc0 54%, #512079); - border: 1px solid rgba(255,255,255,0.34); - border-radius: 24px; - box-shadow: var(--shadow-lg); - transform: rotate(-3deg); -} - -.envelope-card::after { - content: ""; - position: absolute; - inset: 0; - background-image: - linear-gradient(rgba(255,255,255,0.028) 1px, transparent 1px), - linear-gradient(90deg, rgba(255,255,255,0.028) 1px, transparent 1px); - background-size: 16px 16px; - pointer-events: none; -} - -.envelope-top { - display: flex; - align-items: flex-start; - justify-content: space-between; - gap: 20px; - font-size: 0.52rem; - letter-spacing: 0.05em; -} - -.permit { - text-align: right; - line-height: 1.25; -} - -.recipient-block { - position: absolute; - left: 38%; - top: 46%; - display: flex; - flex-direction: column; - font-size: clamp(0.55rem, 1.25vw, 0.82rem); - letter-spacing: 0.08em; - line-height: 1.55; -} - -.barcode { - position: absolute; - left: 38%; - bottom: 28%; - height: 33px; - display: flex; - align-items: flex-end; - gap: 2px; -} - -.barcode span { - width: 2px; - height: 20px; - display: block; - background: rgba(255,255,255,0.92); -} - -.barcode span:nth-child(3n) { - height: 31px; -} - -.barcode span:nth-child(4n) { - height: 13px; -} - -.barcode span:nth-child(7n) { - height: 25px; -} - -.envelope-seal { - position: absolute; - inset: auto -8% -42% -8%; - height: 65%; - border-top: 1px solid rgba(255,255,255,0.22); - transform: rotate(-3deg); -} - -.stat-card { - position: absolute; - min-width: 165px; - padding: 16px 18px; - background: rgba(255,255,255,0.95); - border: 1px solid var(--line); - border-radius: 16px; - box-shadow: var(--shadow-sm); -} - -.stat-card strong, -.stat-card span { - display: block; -} - -.stat-card strong { - color: var(--purple-800); - font-size: 1.15rem; -} - -.stat-card span { - color: var(--muted); - font-size: 0.72rem; -} - -.stat-card-one { - left: -2%; - bottom: 11%; -} - -.stat-card-two { - top: 11%; - right: -2%; -} - -.service-strip { - color: white; - background: var(--purple-950); -} - -.service-strip-grid { - display: grid; - grid-template-columns: repeat(4, 1fr); -} - -.service-strip-grid > div { - min-height: 112px; - display: flex; - flex-direction: column; - justify-content: center; - padding: 24px; - border-right: 1px solid rgba(255,255,255,0.11); -} - -.service-strip-grid > div:last-child { - border-right: 0; -} - -.service-strip strong { - font-size: 0.95rem; -} - -.service-strip span { - color: rgba(255,255,255,0.65); - font-size: 0.78rem; -} - -.section { - padding: 105px 0; -} - -.section-muted { - background: var(--surface-soft); -} - -.section-heading { - max-width: 730px; - margin-bottom: 48px; -} - -.section-heading.centered { - margin-inline: auto; - text-align: center; -} - -.section-heading h2 { - margin: 12px 0 14px; - font-size: clamp(2rem, 3.5vw, 3.25rem); - line-height: 1.08; - letter-spacing: -0.045em; -} - -.section-heading p { - margin: 0; - color: var(--muted); - font-size: 1rem; -} - -.card-grid { - display: grid; - grid-template-columns: repeat(4, 1fr); - gap: 22px; -} - -.feature-card { - min-height: 300px; - padding: 30px; - background: white; - border: 1px solid var(--line); - border-radius: var(--radius-md); - box-shadow: 0 10px 30px rgba(52, 25, 76, 0.035); -} - -.feature-number { - display: inline-flex; - width: 48px; - height: 48px; - align-items: center; - justify-content: center; - color: var(--purple-700); - background: var(--purple-100); - border-radius: 14px; - font-size: 0.82rem; - font-weight: 800; -} - -.feature-card h3 { - margin: 35px 0 12px; - font-size: 1.18rem; -} - -.feature-card p { - margin: 0; - color: var(--muted); - font-size: 0.9rem; -} - -.process-grid { - display: grid; - grid-template-columns: repeat(4, 1fr); - gap: 1px; - overflow: hidden; - background: var(--line); - border: 1px solid var(--line); - border-radius: var(--radius-md); -} - -.process-step { - min-height: 270px; - padding: 34px; - background: white; -} - -.process-step > span { - width: 42px; - height: 42px; - display: inline-grid; - place-items: center; - color: white; - background: var(--purple-800); - border-radius: 50%; - font-weight: 800; -} - -.process-step h3 { - margin: 48px 0 10px; - font-size: 1.05rem; -} - -.process-step p { - margin: 0; - color: var(--muted); - font-size: 0.88rem; -} - -.order-section { - background: - radial-gradient(circle at 100% 30%, rgba(124, 59, 192, 0.08), transparent 25%), - white; -} - -.order-layout { - display: grid; - grid-template-columns: minmax(0, 1fr) 370px; - align-items: start; - gap: 32px; -} - -.form-panel { - overflow: hidden; - border: 1px solid var(--line); - border-radius: var(--radius-md); - background: white; - box-shadow: var(--shadow-sm); -} - -.form-section { - margin: 0; - padding: 34px; - border: 0; - border-bottom: 1px solid var(--line); -} - -.form-section:last-child { - border-bottom: 0; -} - -.form-section legend { - width: 100%; - display: flex; - align-items: center; - gap: 13px; - margin-bottom: 28px; - padding: 0; - font-size: 1.08rem; - font-weight: 800; -} - -.form-section legend span { - width: 32px; - height: 32px; - display: inline-grid; - place-items: center; - color: white; - background: var(--purple-800); - border-radius: 50%; - font-size: 0.76rem; -} - -.form-grid { - display: grid; - gap: 22px; -} - -.two-columns { - grid-template-columns: repeat(2, minmax(0, 1fr)); -} - -label { - color: #3e3545; - font-size: 0.84rem; - font-weight: 700; -} - -input, -select, -textarea { - width: 100%; - margin-top: 8px; - color: var(--ink); - background: white; - border: 1px solid #d9cfe0; - border-radius: 12px; - outline: none; - transition: - border-color 160ms ease, - box-shadow 160ms ease; -} - -input, -select { - height: 50px; - padding: 0 14px; -} - -textarea { - resize: vertical; - padding: 14px; -} - -input:focus, -select:focus, -textarea:focus { - border-color: var(--purple-500); - box-shadow: 0 0 0 4px rgba(124, 59, 192, 0.1); -} - -label small { - display: block; - margin-top: 7px; - color: var(--muted); - font-size: 0.71rem; - font-weight: 500; -} - -.option-grid { - display: grid; - grid-template-columns: repeat(2, minmax(0, 1fr)); - gap: 14px; -} - -.option-card { - min-height: 104px; - display: grid; - grid-template-columns: auto 1fr auto; - align-items: start; - gap: 12px; - padding: 18px; - background: white; - border: 1px solid var(--line); - border-radius: 14px; - cursor: pointer; -} - -.option-card:has(input:checked) { - background: var(--purple-50); - border-color: var(--purple-300, #c8afe2); - box-shadow: inset 0 0 0 1px rgba(124,59,192,0.08); -} - -.option-card input { - width: 18px; - height: 18px; - margin: 2px 0 0; - accent-color: var(--purple-700); -} - -.option-card span, -.option-card strong, -.option-card small { - display: block; -} - -.option-card strong { - color: var(--ink); - font-size: 0.85rem; -} - -.option-card small { - margin-top: 4px; - line-height: 1.35; -} - -.option-card b { - color: var(--purple-800); - font-size: 0.73rem; - white-space: nowrap; -} - -.upload-grid { - display: grid; - grid-template-columns: repeat(2, minmax(0, 1fr)); - gap: 16px; -} - -.upload-box { - position: relative; - min-height: 165px; - display: flex; - flex-direction: column; - align-items: center; - justify-content: center; - padding: 24px; - text-align: center; - background: var(--purple-50); - border: 1px dashed #b99bd7; - border-radius: 16px; - cursor: pointer; -} - -.upload-box:hover { - background: var(--purple-100); -} - -.upload-box input { - position: absolute; - width: 1px; - height: 1px; - opacity: 0; - pointer-events: none; -} - -.upload-icon { - width: 42px; - height: 42px; - display: grid; - place-items: center; - margin-bottom: 12px; - color: var(--purple-800); - background: white; - border-radius: 50%; - box-shadow: var(--shadow-sm); - font-size: 1.3rem; -} - -.upload-box strong { - font-size: 0.86rem; -} - -.upload-box small { - margin-top: 4px; -} - -.full-width { - display: block; - margin-top: 22px; -} - -.agreement { - display: flex; - align-items: flex-start; - gap: 10px; - margin-top: 22px; - color: var(--muted); - line-height: 1.45; - font-size: 0.77rem; - font-weight: 500; -} - -.agreement input { - flex: 0 0 18px; - width: 18px; - height: 18px; - margin: 2px 0 0; - accent-color: var(--purple-700); -} - -.summary-sticky { - position: sticky; - top: 105px; - padding: 30px; - color: white; - background: - radial-gradient(circle at 100% 0%, rgba(255,255,255,0.1), transparent 28%), - var(--purple-950); - border-radius: var(--radius-md); - box-shadow: var(--shadow-lg); -} - -.summary-sticky .eyebrow { - color: #cfaeea; -} - -.summary-sticky h3 { - margin: 8px 0 24px; - font-size: 1.55rem; -} - -.summary-line { - display: flex; - justify-content: space-between; - gap: 18px; - padding: 12px 0; - color: rgba(255,255,255,0.72); - border-bottom: 1px solid rgba(255,255,255,0.11); - font-size: 0.82rem; -} - -.summary-line strong { - color: white; -} - -.service-summary:empty { - display: none; -} - -.summary-total { - display: flex; - justify-content: space-between; - align-items: flex-end; - gap: 18px; - padding: 24px 0 10px; -} - -.summary-total span { - color: rgba(255,255,255,0.74); - font-size: 0.8rem; -} - -.summary-total strong { - font-size: 2rem; - letter-spacing: -0.04em; -} - -.summary-note, -.secure-note { - color: rgba(255,255,255,0.58); - font-size: 0.69rem; - line-height: 1.5; -} - -.summary-note { - margin: 0 0 22px; -} - -.secure-note { - margin: 14px 0 0; - text-align: center; -} - -.faq-layout { - display: grid; - grid-template-columns: 0.78fr 1.22fr; - gap: 70px; -} - -.faq-list { - display: grid; - gap: 12px; -} - -details { - padding: 22px 24px; - background: white; - border: 1px solid var(--line); - border-radius: 14px; -} - -summary { - cursor: pointer; - font-weight: 750; -} - -details p { - margin: 14px 0 0; - color: var(--muted); - font-size: 0.87rem; -} - -.cta-section { - padding: 0 0 90px; - background: var(--surface-soft); -} - -.cta-card { - min-height: 250px; - display: flex; - align-items: center; - justify-content: space-between; - gap: 40px; - padding: 52px; - color: white; - background: - radial-gradient(circle at 85% 20%, rgba(255,255,255,0.13), transparent 25%), - linear-gradient(135deg, var(--purple-950), var(--purple-700)); - border-radius: var(--radius-lg); -} - -.cta-card .eyebrow { - color: #d8bcea; -} - -.cta-card h2 { - max-width: 700px; - margin: 10px 0 0; - font-size: clamp(1.8rem, 3vw, 2.8rem); - line-height: 1.1; - letter-spacing: -0.04em; -} - -.site-footer { - padding: 65px 0 26px; - color: rgba(255,255,255,0.68); - background: #170b24; -} - -.footer-grid { - display: grid; - grid-template-columns: 1.6fr repeat(3, 1fr); - gap: 48px; -} - -.footer-grid > div { - display: flex; - flex-direction: column; - align-items: flex-start; - gap: 10px; - font-size: 0.78rem; -} - -.footer-grid > div:first-child { - padding-right: 50px; -} - -.footer-grid strong { - color: white; -} - -.footer-brand { - color: white; - margin-bottom: 8px; -} - -.footer-brand small { - color: rgba(255,255,255,0.5); -} - -.footer-grid p { - margin: 0; -} - -.footer-grid a:hover { - color: white; -} - -.footer-bottom { - display: flex; - justify-content: space-between; - gap: 30px; - margin-top: 45px; - padding-top: 24px; - border-top: 1px solid rgba(255,255,255,0.1); - font-size: 0.72rem; -} - -dialog { - width: min(calc(100% - 32px), 500px); - padding: 0; - border: 0; - border-radius: 22px; - box-shadow: var(--shadow-lg); -} - -dialog::backdrop { - background: rgba(21, 9, 32, 0.68); - backdrop-filter: blur(4px); -} - -.dialog-content { - position: relative; - padding: 42px; - text-align: center; -} - -.dialog-close { - position: absolute; - top: 12px; - right: 14px; - width: 36px; - height: 36px; - color: var(--muted); - background: transparent; - border: 0; - border-radius: 50%; - cursor: pointer; - font-size: 1.5rem; -} - -.dialog-icon { - width: 62px; - height: 62px; - display: grid; - place-items: center; - margin: 0 auto 18px; - color: white; - background: var(--success); - border-radius: 50%; - font-size: 1.5rem; -} - -.dialog-content h2 { - margin: 0 0 10px; -} - -.dialog-content p { - margin: 0 0 24px; - color: var(--muted); - font-size: 0.9rem; -} - -@media (max-width: 1020px) { - .main-nav { - display: none; - } - - .hero-grid, - .faq-layout { - grid-template-columns: 1fr; - } - - .hero-copy { - max-width: 780px; - } - - .hero-visual { - min-height: 430px; - } - - .card-grid, - .process-grid { - grid-template-columns: repeat(2, 1fr); - } - - .order-layout { - grid-template-columns: 1fr; - } - - .summary-sticky { - position: static; - } - - .footer-grid { - grid-template-columns: repeat(2, 1fr); - } -} - -@media (max-width: 720px) { - .container { - width: min(calc(100% - 26px), var(--container)); - } - - .site-header .button-outline { - display: none; - } - - .hero { - padding: 68px 0 75px; - } - - .hero h1 { - font-size: 2.65rem; - } - - .hero-visual { - min-height: 330px; - } - - .envelope-card { - padding: 24px; - border-radius: 18px; - } - - .recipient-block, - .barcode { - left: 33%; - } - - .barcode { - transform: scale(0.72); - transform-origin: left bottom; - } - - .stat-card { - display: none; - } - - .service-strip-grid, - .card-grid, - .process-grid, - .two-columns, - .option-grid, - .upload-grid, - .footer-grid { - grid-template-columns: 1fr; - } - - .service-strip-grid > div { - min-height: 90px; - border-right: 0; - border-bottom: 1px solid rgba(255,255,255,0.11); - } - - .section { - padding: 74px 0; - } - - .feature-card, - .process-step { - min-height: auto; - } - - .process-step h3 { - margin-top: 25px; - } - - .form-section { - padding: 25px 20px; - } - - .option-card { - grid-template-columns: auto 1fr; - } - - .option-card b { - grid-column: 2; - } - - .cta-card { - min-height: 0; - align-items: flex-start; - flex-direction: column; - padding: 36px 26px; - border-radius: 22px; - } - - .footer-grid > div:first-child { - padding-right: 0; - } - - .footer-bottom { - align-items: flex-start; - flex-direction: column; - } -}